2014-11-14 7 views
1

Я не понимаю, почему я не могу использовать свою последнюю форму в этом коде. Я сгенерировал форму, используя список SELECT, чтобы выбрать член, который я хочу обновить, и он работает, но я не знаю, почему я не могу использовать данные из этой формы. На самом деле, я даже не могу что-то повторить (см. echo "TEST"; в конце, ничего не происходит, когда я отправляю форму).Получить данные из формы сообщения

<?php $mysqli = new Mysqli("localhost", "root", "", "repertoire"); ?> 

<form method="post" action=""> 
    <label>Modifier</label> 
    <select name='id_modif'> 
     <?php 

      $resultat = $mysqli->query("SELECT * FROM annuaire"); 
      while($select = $resultat->fetch_assoc()){ 
       echo "<option value=". $select['id_annuaire'] . ">" . $select['prenom'] . " " . $select['nom'] . "</option>"; 
      } 

     ?> 
    </select> 
    <input type ="submit" name="modifier"> 
</form> 
<br> 

<?php 
    if (isset($_POST['modifier'])){ 

     //print_r($_POST); 
     $resultat = $mysqli->query("SELECT * FROM annuaire WHERE id_annuaire = '$_POST[id_modif]'"); 
     while ($modif = $resultat->fetch_assoc()) { 

     echo '<form method="post" action=""> 
     <label for="nom">Nom *</label><br> 
     <input type="text" name="nom" value="' . $modif['nom'] . '"> <br>'; 

     echo '<label for="prenom">prenom *</label><br> 
     <input type="text" name="prenom" value="' . $modif['prenom'] . '"> <br>'; 

     echo '<label for="telephone">telephone *</label><br> 
     <input type="text" name="telephone" value="' . $modif['telephone'] . '"> <br>'; 

     echo '<label for="profession">profession *</label><br> 
     <input type="text" name="profession" value="' . $modif['profession'] . '"> <br>'; 

     echo '<label for="ville">ville *</label><br> 
     <input type="text" name="ville" value="' . $modif['ville'] . '"> <br>'; 

     echo '<label for="codepostal">codepostal *</label><br> 
     <input type="text" name="codepostal" value="' . $modif['codepostal'] . '"> <br>'; 

     echo '<label for="adresse">adresse *</label><br> 
     <textarea name="adresse">' . $modif['adresse'] . '</textarea> <br>'; 

     echo '<label for="date_de_naissance">Date de naissance</label><br> 
     <input type="date" name="date_de_naissance" value="' . $modif['date_de_naissance'] . '"><br>'; 

     echo '<label for="sexe">sexe</label><br> 

     <input type="radio" name="sexe" class="sexe" value="m" checked>Homme 
     <input type="radio" name="sexe" classe="sexe" value="f">Femme<br>'; 

     echo '<label for="description">description *</label><br> 
     <textarea name="description">' . $modif['description'] . '</textarea> <br>'; 

     echo '<input type="submit" name="valider_modif" value="Modifier"> <br>'; 

     } 

     if (isset($_POST['valider_modif'])){ 


      echo "TEST"; 



     } 
    } 
?> 
+1

Вы никогда не закрываете второй тег '

'. – TiiJ7

+0

Хорошо, это правда, но у меня все еще есть одна и та же проблема :( –

+0

Каков результат 'var_dump ($ _ POST)'? –

ответ

0

Вашей второй if проверки находится внутри другой, так что он будет работать только тогда, когда оба $_POST['modifier'] и $_POST['valider_modif'] установлены. Но вторая форма не отправляет modifier в любом месте.

Вы можете добавить скрытое поле для вашей второй формы:

<input type="hidden" name="modifier" value="1" /> 

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

Кроме того, вы не должны использовать значения $_POST в SQL-запросах непосредственно, чтобы быть в безопасности от SQL-инъекции. Для избежания значения сначала следует использовать функцию, например mysqli_real_escape_string.

+0

Спасибо большое! :) –

0

У вас есть 2 формы, и вы не закрываете 2-й с </form>

+0

Спасибо, я его не видел, но он по-прежнему не работает. –

0

Получил много времени для прохождения кода. Хорошо. Первым делом. Старайтесь не выделять столько разметки html. Это просто заставляет вас закодировать самые смелые в мире. Из того, что я собрал, кнопка «Модификатор» появляется, когда вы нажимаете на первую кнопку. Что вам нужно сделать, если вы хотите увидеть сообщение TEST, это вывести его из оператора if, потому что кнопки похожи на XOR-ворота. Установка других ассемблеров другой

+0

Спасибо за ваш совет. Я начал PHP неделю назад, так что пока я не уверен. Я буду пытаться использовать меньше эха и других тегов php в будущем;) –

Смежные вопросы