Я не могу получить значение в моей переменной

<html>
   <head>
    <title>Panier</title>
       <?php
          $tot = 'test';
          $m1 = $_POST['montant1'];
       ?>
    </head>

  <body>
    <h1>Panier</h1>
    <table border=1>
    <form action="panier.php" method="POST">
        <tr><td>Produit</td><td>Quantite</td><td>Prix Unitaire</td><td>Action</td><tr>
        <tr><td>Produit 1</td><td><input type='text' name='montant1' value='2'></form></td><td>3.19</td><td><a href=>Supprimer</a></tr>
    </form> 
    </table>
  </body>
</html>

по какой-то причине моя переменная $m1 не может получить то, что находится внутри входного текстового поля 'montant1'

3 ответа

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

Было несколько очевидных проблем:

У вас было 2 конечных тега формы </form>

Пропал хотя бы один </td>

У вас нет кнопки отправки.

Код для выбора того, что представлено логически, должен идти вверху скрипта.

Вам нужно каким-то образом решить, является ли это первым выполнением скрипта, так как в этой ситуации данные не будут передаваться по $_POST.

Так что попробуйте вместо этого, это в основном ваш код с небольшой очисткой.

<?php
    $tot = 'test';
    $m1 = isset($_POST['montant1']) 
                 ? $_POST['montant1'] 
                 : 'First run, the submit button has not been pressed yet';
?>
<html>
<head>
    <title>Panier</title>
</head>
<body>
    <h1>Panier</h1>
<?php
    echo 'You entered : ' . $m1;
?>

    <table border=1>

    <form action="panier.php" method="POST">
        <tr>
           <td>Produit</td>
           <td>Quantite</td>
           <td>Prix Unitaire</td>
           <td>Action</td>
        <tr>
        <tr>
           <td>Produit 1</td>
           <td><input type='text' name='montant1' value='2'></td>
           <td>3.19</td>
           <td><a href=>Supprimer</a></td>
           <td><input type="submit" name="submit"></td>
        </tr>
    </form>

    </table>
</body>
</html>

Я заметил, что вы не добавили кнопку отправки в вашу форму, поэтому нет никакого способа подтолкнуть данные вперед! Добавьте это после вашего тега ввода текста (в форме).

<input type="submit" value="Submit your form">

Предполагая, что вы публикуете на той же странице. Замените ваш PHP-код следующим:

 <?php
    if($_POST){
     $tot = 'test';
     $m1 = $_POST['montant1'];
    }
?>

Таким образом, вы будете обрабатывать данные, только если они там есть.

Также рекомендуется ставить $_SERVER['PHP_SELF'] вместо самого имени страницы, если вы публикуете на той же странице. Таким образом, вам не придется обрабатывать изменения кода, если вы переименуете файл.

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">

Если файл, который вы показали нам, не называется "panier.php", попробуйте заменить

<form action="panier.php" method="POST">

с кодом ниже:

<form action="" method="POST">

что приведет к отправке формы по тому же URL-адресу, с которого она пришла.

Другие вопросы по тегам