я могу получить текст из HTML и поместить его в переменную в PHP без отправки формы?

0

У меня есть форма в html:

<form>
<label><input type="hidden" name="pNameChange" value=""></label>
</form>

и я хочу получить значение этого ввода в php, не отправив его в форме.

это мой javascript:

var pName= null;
$(document).ready(function(){
    $('img').click(function(){
        pName= $(this).attr("name");
        console.log(pName);
    });
});

Мой php:

$pName = isset($_POST['pNameChange']) ? $_POST['value'] : '';

что я хочу. вы нажимаете на картинку,

1. Значение атрибута name изображения будет сохранено в переменной pName (javascript),

2.it затем переходит в форму и изменяет значение формы на переменную pName (javascript),

3.php берет значение формы (которое теперь должно быть равно pName),

4. затем сохраняет его в переменную $pName (php).

5. Я также хочу, чтобы $pName (php) глобально использовался на всех страницах веб-сайта.

редактировать

это моя индексная страница:

<?php
$pName = isset($_POST['pNameChange']) ? $_POST['value'] : '';
$db_connection = mysqli_connect('localhost','root','',"project_online_planner");
if (!$db_connection){
    die('Failed to connect to MySql:'.mysql_error());
}
$query="SELECT * FROM project limit 5 ";
$results = mysqli_query($db_connection,$query);
$intro=mysqli_fetch_assoc($results);
?>
<!DOCTYPE HTML>
<html>
<head>
    <title>Project planner online</title>
    <script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
    <script type="text/javascript" src="ppo.js"></script>
    <link rel="stylesheet" href="ppo.css"/>
</head>
<body>
<div id="bgNav">
    <div id="login">
        <a href="register.php">Register</a>
        <a href="login.php">Log in</a>
    </div>

    <nav id="nav">
        <a href="index.php">Home</a>
    </nav>
</div>
<h2 class="titlePage">Home</h2>
<div id="bgTile">
    <?php

    while($row = mysqli_fetch_array($results))
    {
        $project = $row["name"];
        echo nl2br("<a href='project.php'>" ."<img name=\"$project\" width='100px' alt='Procject name' height='100px' class='tile' src=". $row['image'] ."/>". "</a>");
    }
    ?>

    <a href="allprojects.php"><div class="tile" id="tileM"><h2>Meer</h2></div></a>

</div>
    <form>
        <label><input type="hidden" name="pNameChange" value=""></label>
    </form>
</body>
</html>

что я хочу: нажмите на изображение, после чего вы получите сообщение на страницу проекта, где (php) $pName равно значению (javascript) pName

страница проекта:

<?php
$newRecord = null;
$pName = isset($_POST['pNameChange']) ? $_POST['value'] : '';
$db_connection = mysqli_connect('localhost','root','',"project_online_planner");
if (!$db_connection){
    die('Failed to connect to MySql:'.mysql_error());
}

//insert into database
if(isset($_POST['insertComments'])){
    include('connect-mysql.php');
    $username = $_POST['username'];
    $comment = $_POST['comment'];
    $sqlinsert = "INSERT INTO user_comments (username, comment, project) VALUES ('$username', '$comment', '$pName')";
        if (!mysqli_query($db_connection, $sqlinsert)){
            die('error inserting new record');
        }
        else{
            $newRecord = "1 record added";
        }//end nested statement

}

//text from database
$query="SELECT * FROM user_comments where project = '$pName' ";
$results = mysqli_query($db_connection,$query);
$intro=mysqli_fetch_assoc($results);

$query2="SELECT * FROM project where name = '$pName' ";
$results2 = mysqli_query($db_connection,$query2);
$intro2=mysqli_fetch_assoc($results2);


?>
<!DOCTYPE HTML>
<html>
<head>
    <title>Project planner online</title>
    <script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
    <script type="text/javascript" src="ppo.js"></script>
    <link rel="stylesheet" href="ppo.css"/>
</head>
<body>
<div id="intro">

</div>
<div id="bgNav">
    <nav id="nav">
        <a href="index.php">Home</a>
        <a class="rightNav" href="register.php">Register</a>
        <a class="rightNav" href="login.php">Log in</a>
    </nav>
</div>

<div id="projectTile">
    <span id="statusCheck"><?php print_r($intro2["status"]); ?></span>
    <h2 id="prTitle"><?php print_r($intro2["name"]); ?></h2>
<div id="prPic"><img width="300" height="200" src="<?php print_r($intro2["image"]); ?>"></div>
<div id="prDescription"><?php print_r($intro2["description"]); ?></div>
</div>
<div id="comments">
    <?php
    while($row = mysqli_fetch_array($results))
    {
        echo nl2br("<div class='profile_comments'>" . $row['username'] . "</div>");
        echo nl2br("<div class='comment_comments'>" . $row['comment'] . "</div>");
    }
    ?>

</div>

<div id="uploadComments">
    <form method="post" action="project.php">
        <label for="name"><input type="hidden" name="insertComments" value="true"></label>
        <fieldset>
            <legend>comment</legend>
        <label>Name:<input type="text" id="name" name="username" value=""></label><br/>
        <label>Comments: <textarea name="comment" id="comment"></textarea></label>
        <input type="submit" value="Submit" id="submitComment">
        </fieldset>
    </form>
</div>
<?php
echo $newRecord;
?>
<form>
    <label><input type="hidden" name="pNameChange" value=""></label>
</form>

</body>
</html>
  • 1
    ты знаешь о аяксе?
  • 0
    Нет не знаю У меня нет никакого опыта с этим вообще.
Показать ещё 4 комментария
Теги:
forms

4 ответа

3
Лучший ответ

HTML:

у вас есть больше 1 изображения на странице? его лучше, если вы добавите ID в изображение. Нет необходимости в форме и скрытых полях для того, что вы хотите сделать.

убедитесь, что у вашего img есть ID, например <img id="imageID"...

JavaScript:

var pName= null;
$(document).ready(function(){
    $('#imageID').click(function(){
        pName= $(this).attr("name");
        $.post("project.php", { pNameChange: pName },
        function(data) {
            // do something here.
         });
    });
});

выше код должен работать как ожидалось. Теперь в project.php> $ _POST ['pNameChange'] должно получиться значение pName (имя изображения attr).

Я не понимаю, чего вы хотите, когда вы сказали $ pName, доступный по всему миру на всех страницах. Пожалуйста, уточните далее, может быть, он хранит его как cookie/session?


РЕДАКТИРОВАТЬ:

Рассмотрите возможность использования сеанса для значения pName... путем простого запуска/возобновления сеанса в начале файла:

<?PHP
  session_start();

а потом...

установить/обновить значение:

if(isset($_POST["pNameChange"]))
$_SESSION["pName"] = $_POST["pNameChange"];

а затем используйте $_SESSION["pName"] вместо $pName на всех страницах.

  • 0
    Я пробовал это таким образом, но он все еще не работает. Когда я печатаю pName на консоль, он дает мне значение null.
  • 0
    обновление моего ответа ... вам не нужна форма для этого
Показать ещё 3 комментария
0

Попробуйте метод Ajax в jQuery, надейтесь, что он решает вашу проблему

https://api.jquery.com/jQuery.ajax/

или

https://api.jquery.com/jQuery.post/

0

На самом деле, для этого вам не нужен AJAX, все ваши index.php name изображения в project.php поэтому попробуйте:

В index.php:

<form name='form1' method="post" action='project.php'> <!-- form attributes given -->
        <label><input type="hidden" name="pNameChange" value=""></label>
</form>

Javascript:

var pName= null;
$(document).ready(function(){
    $('img').click(function(){
        //onclick of image, we will save the image name into the hidden input
        //and submit the form so that it goes to project.php
        $('input[name="pNameChange"]').val($(this).attr("name")); 
        $('form1').submit()
    });
});

И в вашем project.php:

//now project.php can get the posted value of 'pNameChange'
//There is no input field with 'name'->'value', so $_POST['value'] is invalid.
$pName = isset($_POST['pNameChange']) ? $_POST['pNameChange'] : '';

И если вам нужно это значение на нескольких страницах, глобальное не будет работать, используйте сеансы.

0

ok, этот "дополнительный" ответ должен сосредоточиться только на сеансе. используйте коды для конца клиента из моего предыдущего ответа и попробуйте это на сервере.

index.php Страница:

<?php
session_start();
$pName = isset($_SESSION['pNameChange']) ? $_SESSION['pNameChange'] : '';

project.php Страница:

<?php
session_start();
$newRecord = null;
$pName = isset($_SESSION['pNameChange']) ? $_SESSION['pNameChange'] : null;
if(is_null($pName) && isset($_POST['pNameChange'])) {
   $_SESSION['pNameChange'] = $_POST['pNameChange'];
   $pName = $_POST['pNameChange'];
}

Надеюсь, поможет

Ещё вопросы

Сообщество Overcoder
Наверх
Меню