php form submit – Q2

я извиняюсь за фиктивный вопрос. Вот моя простая PHP-форма с двумя таблицами SQL и с кнопкой отправки ADD. Я бы хотел переместить людей из Test1 в Test2. Многое в порядке 🙁 только кнопка отправки не работает, поэтому нет обратной связи из таблицы Test2.

Пересмотрено : Отправить сейчас отлично работает

Q2 – до сих пор не работают флажки 🙁 – пожалуйста

Может ли кто-нибудь показать мне, как отследить такую ​​ошибку, как это, пожалуйста?

<?php include("db_connect.php");?> <html> <head></head> <body> <form method="post" action="moving.php"> <table border="1"> <tr> <td> <?php $left='SELECT * FROM test1 ORDER BY name ASC'; $result1=mysql_query($left); $count=mysql_num_rows($result1); while($resulta = mysql_fetch_array($result1)) { ?> <input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $resulta['id']; ?>"/> <? echo $resulta['name']; ?> <br /> <?php } ?> </td> <td><input type="submit" id="add" name="add" value="Add" /></td> <td> <?php $rigth='SELECT * FROM test2,test1 WHERE test2.collect=test1.id ORDER BY test1.name ASC'; $result2=mysql_query($right); while($resultb = mysql_fetch_array($result2)) { echo $resultb['id'] ; echo "<br />"; } ?> </td> </tr> </table> <?php // Check if add button active, start this if (isset($_POST['add'])) { for ($i=0;$i<$count;$i++) { $add_id = $checkbox[$i]; if ($add_id=='1') { $sql = "INSERT INTO test2 (status, collect) VALUES(1, 1)"; $result = mysql_query($sql); } } // if successful redirect to delete_multiple.php if ($result){ echo "<meta http-equiv=\"refresh\" content=\"0;URL=moving.php\">"; } } mysql_close(); ?> </form> </body> </html> 

спасибо 🙂 от новичка

Solutions Collecting From Web of "php form submit – Q2"

откуда приходит $count ?

Попробуйте использовать count($_POST['checkbox']) вместо этого в инструкции INSERT. Затем вы можете перебирать флажки, используя:

 for ($c = 0; $c < count($_POST['checkbox']); $c++){ $checkbox = $_POST['checkbox'][$c]; ...INSERT action... } 

В примере кода вы сохраняете оператор в переменной с именем $rigth , но вы (попытайтесь) выполнить оператор, хранящийся в переменной с именем $right .

Есть несколько вещей, которые вы можете сделать, чтобы поймать ошибки.

  1. Попробуйте статический анализ кода ; некоторые инструменты могут сказать вам, используется ли переменная только один раз (это может быть опечатка).
  2. Обработать ошибки. Некоторые функции возвращают специальное значение, если есть ошибка ( False является общей); для этих функций обычно есть связанная функция, которая будет возвращать информацию об ошибке. Некоторые функции будут вызывать исключение ; поймать их там, где их можно надлежащим образом позаботиться. Сообщения об ошибках системы не должны отображаться для пользователей, не являющихся администраторами, чтобы вы не раскрывали слишком много информации .
  3. Используйте интерактивный отладчик. Например, установите расширение Xdebug на своем сервере разработки (вы используете dev-сервер, верно?) И используйте Xdebug-совместимый отладчик .

решение – не приятно, но оно работает – спасибо за все комментарии и помощь !!!

 <?php include("db_connect.php");?> <html> <head> </head> <body> <form method="post" action="test.php"> 

Новое:

 <?php $left='SELECT * FROM test1 ORDER BY name ASC'; $result1=mysql_query($left); $count=mysql_num_rows($result1); while($resulta = mysql_fetch_array($result1)) { ?> <input name="checkbox_add[]" type="checkbox" id="checkbox_add[]" value="<? echo $resulta['id']; ?>"/> <? echo $resulta['name']; ?> <br /> <?php } ?> </td> <td><input type="submit" id="add" name="add" value="Add" /><br /><input type="submit" id="delete" name="delete" value="Del" /></td><td> <?php $right='SELECT test2.id, test1.name FROM test2, test1 WHERE test1.id=test2.collect AND test2.status=1'; $result2=mysql_query($right); while($resultb = mysql_fetch_array($result2)) { ?> <input name="checkbox_del[]" type="checkbox" id="checkbox_del[]" value="<?php echo $resultb['id']; ?>"/>, <?php echo $resultb['id']; ?>, <? echo $resultb['name']; ?> <br /> <?php } ?> </td></tr></table> <?php // Check if add button active, start this if (isset($_POST['add'])) { for ($c = 0; $c < count($_POST['checkbox_add']); $c++){ $checkbox_add = $_POST['checkbox_add'][$c]; $sql = "INSERT INTO test2 (status, collect) VALUES(1, ".$checkbox_add.")"; echo $sql; $result = mysql_query($sql); if($result){ echo "<meta http-equiv=\"refresh\" content=\"0;URL=test.php\">"; } } } elseif (isset($_POST['delete'])) { for ($c = 0; $c < count($_POST['checkbox_del']); $c++){ $checkbox_del = $_POST['checkbox_del'][$c]; echo date("Ymd"); $sql = "UPDATE test2 SET status='2', log='".date('Ym-d')."' Where id=".$checkbox_del; echo $sql; $result = mysql_query($sql); if($result){ echo "<meta http-equiv=\"refresh\" content=\"0;URL=test.php\">"; } } } elseif (isset($_POST['new'])) { $sql = "INSERT INTO test1 (status, name) VALUES(1, '".$_POST['newitem']."')"; echo $sql; $result = mysql_query($sql); if($result){ echo "<meta http-equiv=\"refresh\" content=\"0;URL=test.php\">"; } } mysql_close(); ?> </form> </body> </html>