2015-06-16 2 views
-1

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

<table border="1" align = "center" > 

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

<?php 

    while ($row=mysqli_fetch_assoc($q)){ 

?>  <tr><td><input name="select2" type="radio" value="<?php echo $row['c_id']; ?>"></td> 

<?php 

    echo "<td>".$row['c_id']."</td>"; 

    echo "<td>".$row['no_computer']."</td>"; 

    echo "<td>".$row['c_type']."</td>"; 

    echo "<td>".$row['c_location']."</td></tr>"; 
    } 

    ?> 

<input type="submit" name="update" value="update" ></table></form> 

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

<?php 

    if (isset($_POST['select2'])){ 
    if (isset($_POST['update'])){ 

    ?> 

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

no of computers: <br /><input type="text" name="no_computer2"><br /><br /> 

type: <br /><input type="text" name="c_type2"><br /><br /> 

location: <br/><input type="text" name="c_location2"><br /><br /> 

technical status: <br /><input type="text" name="tech_status2"><br /><br /> 

<input type="submit" name="ok" value="okay"> 

</form> 

<?php 

    if (isset($_POST['ok'])){ 
     $nc2= $_POST['no_computer2']; 
     $ct2= $_POST['c_type2']; 
     $cl2= $_POST['c_location2']; 
     $ts2= $_POST['tech_status2']; 
     $i=$_POST['select2']; 

     $s2="UPDATE `tech_computer` SET `no_computer`='$nc2' , `c_type`='$ct2' , `c_location`='$cl2', `tech_status`='$ts2' where `c_id` like '$i'"; 

     $q2=mysqli_query($s2); 

     header ('location:testupdate.php'); 
    }}} 
    ?> 
+1

Я вижу, вы не читали [комикс] (https://xkcd.com/327/)! –

ответ

0

$_POST будет содержать значения, которые присутствуют в текущем form. Когда передается вторая форма, значения первого form перезаписываются. Поле отсутствует - select2 внутри второго form. Попробуйте с добавлением hidden поля с публикуемым значением в качестве значения -

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

<input name="select2" type="hidden" value="<?php echo $_POST['select2']; ?>"> 
no of computers: <br /><input type="text" name="no_computer2"><br /><br /> 

type: <br /><input type="text" name="c_type2"><br /><br /> 

location: <br/><input type="text" name="c_location2"><br /><br /> 

technical status: <br /><input type="text" name="tech_status2"><br /><br /> 

<input type="submit" name="ok" value="okay"> 

</form> 
+0

перезаписывает, даже если у него нет одинакового имени? Кроме того, я пробовал это и по-прежнему ту же ошибку = (.. – user3053134

+0

Вы получите только значения 'form'. –

+0

Но я думал, что переменные POST являются супер-глобальными .. не так ли? – user3053134

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