Текст исчезает из текстового поля после нажатия кнопки отправки html php. Нужен текст чтобы остаться - PullRequest
0 голосов
/ 09 марта 2020

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

Например, вот код для одной из кнопок:

Enter customer name<input type="text" name="cname">
<input type="submit" name="sub" value="Display">
<?php
if(isset($_GET['sub'])){
    display();
}
function display(){
    include 'config.php';
    $searchstr=$_GET['cname'];
    echo "<input type='hidden' name='cname1' value=".$searchstr.">";
    $td=$_GET['cname1'];
    $sql="select * from info where cname='$searchstr';";
    $result=mysqli_query($conn, $sql);
    if($searchstr==""){
    $message="Please enter a customer name";
    echo "<script type='text/javascript'>alert('$message'); 
    window.location.href='retreive.php';</script>";
}
else{
    echo "<table id='info' border='1px solid black'><tr padding='2'><th>Customer Name</th><th>Purchase Order Date</th><th>Started?</th><th>Reason (If any)</th><th>Tentative start date</th><th>Progress</th><th>Current Status</th><th></tr>";
    while ($row = $result->fetch_assoc()) {
        $cname=$row['cname'];
        $podate=$row['podate'];
        $started=$row['started'];
        $reason=$row['reason'];
        $tentdate=$row['tentdate'];
        $progress=$row['progress'];
        $status=$row['status'];
        echo "<tr><td>".$cname."</td><td>".$podate."</td><td>".$started."</td><td>".$reason."</td><td>".$tentdate."</td><td>".$progress."</td><td>".$status."</td></tr>";
    }
    echo "</table><br>";
}

Здесь все работает отлично и отображает таблицу по мере необходимости. Но обратите внимание на переменную $td выше. Мне нужно, чтобы это значение отображалось при нажатии моей другой кнопки, что в другой функции.

Вот код для другой кнопки:

echo "<input type='submit' name='fp' value='Finished payment'>";
if(isset($_GET['fp'])){
    echo $td;
}

При нажатии этой кнопки ничего не отображается Это означает, что я не могу прочитать эту переменную вне функции отображения. Я попытался найти глобальные переменные в php, и другим решением было использовать, а затем использовать Javascript, но я хочу использовать php, и мне нужно текст, который останется в текстовом поле после нажатия кнопки «Отправить», чтобы я мог прочитать его позже.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

После отправки формы текст, введенный пользователем, исчез? Это поведение браузера по умолчанию. Чтобы избежать этого, либо отправьте форму, используя jQuery, либо сохраните значение ввода в переменную и введите echo.

Пример кода для Jquery:

$("#myform").submit(function(e) {

    //prevent Default functionality
    e.preventDefault();

    //get the action-url of the form
    var actionurl = e.currentTarget.action;

    //do your own request an handle the results
    $.ajax({
            url: actionurl,
            type: 'post',
            dataType: 'application/json',
            data: $("#myform").serialize(),
            success: function(data) {
                ... do something with the data...
            }
    });

});

== Если не используется Jquery ==

PHP:

$myValue = $_POST['my_input_name'];

HTML:

<input type="submit" name="sub" value="<?= $myValue ?>">
0 голосов
/ 09 марта 2020

Вы можете просто создать переменную для значения, а затем поместить эту переменную в раздел значения другого ввода.

$name= 'Enter Name';
if(isset($_GET['cname'])){
    $name = $_GET['cname'];
}

Затем

<input type="text" name="cname" value="<?=$name?>">

Использование атрибута placeholder:

<input type="text" placeholder="Enter Name" name="cname" value="<?php echo $name; ?>

До обработки $_GET['cname'] значение в поле ввода устанавливается равным тексту, который вы хотите показать sh, или просто оставляете его пустым. Затем, после публикации $_GET['cname'], вы проверяете, установлен ли он, затем устанавливаете переменную равной возвращаемой информации, введенной пользователем в другом поле - $ td.

<?php
$cname = ''; // or $cname = 'Enter a Name';
if(isset($_GET['sub'])){
    display();
}
function display(){
    include 'config.php';
    $searchstr=$_GET['cname'];       
    $td=$_GET['cname'];

    $sql="select * from info where cname='$searchstr';";
    $result=mysqli_query($conn, $sql);
    if($searchstr==""){
        $message="Please enter a customer name";
        echo "<script type='text/javascript'>alert('$message'); 
        window.location.href='retreive.php';</script>";
    }
    else{
        //use isset to see if that has been posted
        if(isset($_GET['cname'])){            
           $name = $_GET['cname'];
           //$name is now set to the value you wish to display in the value of the other input
           //call on the value like so <input type="text" name="cname" value="<?=$name?>">
        }
        echo "<table id='info' border='1px solid black'><tr padding='2'><th>Customer Name</th><th>Purchase Order Date</th><th>Started?</th><th>Reason (If any)</th><th>Tentative start date</th><th>Progress</th><th>Current Status</th><th></tr>";
    while ($row = $result->fetch_assoc()) {
        $cname=$row['cname'];
        $podate=$row['podate'];
        $started=$row['started'];
        $reason=$row['reason'];
        $tentdate=$row['tentdate'];
        $progress=$row['progress'];
        $status=$row['status'];
        echo "<tr><td>".$cname."</td><td>".$podate."</td><td>".$started."</td><td>".$reason."</td><td>".$tentdate."</td><td>".$progress."</td><td>".$status."</td></tr>";
       }
       echo "</table><br>";
    }

php скрипка: хорошо только на 48 часов - http://main.xfiddle.com/8f416cc9/input.php

...