В Sample.php у меня есть
<html> <head> <title>Test</title> </head> <script language="javascript"> var count = 1; function addRow(divId) { var parentDiv = document.getElementById(divId); var eleDiv = document.createElement("div"); eleDiv.setAttribute("name", "olddiv"); eleDiv.setAttribute("id", "olddiv"); var eleText = document.createElement("input"); eleText.setAttribute("type", "text"); eleText.setAttribute("name", 'textbox' + count); eleText.setAttribute("id", "textbox" + count); var eleBtn = document.createElement("input"); eleBtn.setAttribute("type", "button"); eleBtn.setAttribute("value", "delete"); eleBtn.setAttribute("name", "button"); eleBtn.setAttribute("id", "button"); eleBtn.setAttribute("onclick", "deleteRow('button')"); parentDiv.appendChild(eleDiv); eleDiv.appendChild(eleText); eleDiv.appendChild(eleBtn); var golu=count.toString(); document.getElementById("h").value= golu; count++; } function deleteRow(tableID) { var div = document.getElementById('olddiv'); if (div) { div.parentNode.removeChild(div); } var golu=count.toString(); document.getElementById("h").value= golu; } var golu=count.toString(); document.getElementById("h").value= golu; </script> <body> <form action="Page.php" method="post"> <input type="button" value="Add Row" onclick="addRow('dataTable')" /> <div id="dataTable"><INPUT type="text" name="textbox0" id="textbox0"/></div> <input type"hidden" id="h" name="h" value="0"/> <button type="submit" name="submit" id="submit">Submit</button> </form> </body> </html>
В Page.php у меня есть
<?php include_once('db.php'); $x=$_POST["h"]; $y=intval($x); $z=0; while($z<=$y){ $var[z]=$_POST['textbox'][$z]; echo "$var[$z]"; $sql="INSERT into Data values('".$var[z]."');"; $query = mysql_query($sql); } ?>
в<?php include_once('db.php'); $x=$_POST["h"]; $y=intval($x); $z=0; while($z<=$y){ $var[z]=$_POST['textbox'][$z]; echo "$var[$z]"; $sql="INSERT into Data values('".$var[z]."');"; $query = mysql_query($sql); } ?>
Мои проблемы:
Моя цель – получить все значения textbox0, textbox1, .. и т. Д. используя loop в page.php.
Но я не могу получить желаемый результат. Фактически после отправки Pape.php появляется пустым. Получив все, я также хочу, чтобы они хранили в базе данных MySQL.
Всякий раз, когда я удаляю текстовое поле, последовательность идентификаторов текстовых полей не изменяется.
Скажите, пожалуйста, что делать.
Вы можете сделать это следующим образом.
Всякий раз, когда вы создаете текстовое поле с помощью JavaScript или jQuery, поддерживайте подсчет текстового поля, предположим, что у вас есть два текстовых поля по умолчанию в HTML, поэтому храните их в скрытом поле, как вы это делали:
<input type"hidden" id="h" name="h" value="0"/>
Тогда попробуйте это, вы читаете значение не так:
Вместо использования $var[z]=$_POST['textbox'][$z];
используйте $var[z]=$_POST['textbox'.$z];
,
Я думаю, вместо того, чтобы редактировать каждое значение id
текстового поля, просто удалите его из HTML и проверьте в PHP-код:
<?php include_once('db.php'); $x=$_POST["h"]; $y=intval($x); $z=0; while($z<=$y){ if(isset($_POST['textbox'.$z]) && !empty($_POST['textbox'.$z])){ $var[z]=$_POST['textbox'.$z]; echo "$var[$z]"; $sql="INSERT into the Data values('".$var[z]."');"; $query=mysql_query($sql); } } ?>
в<?php include_once('db.php'); $x=$_POST["h"]; $y=intval($x); $z=0; while($z<=$y){ if(isset($_POST['textbox'.$z]) && !empty($_POST['textbox'.$z])){ $var[z]=$_POST['textbox'.$z]; echo "$var[$z]"; $sql="INSERT into the Data values('".$var[z]."');"; $query=mysql_query($sql); } } ?>
Еще один способ решить обе ваши проблемы 🙂
test.html:
<html> <title>TEST</title> <body> <form action="test.php" method="post"> <input type="text" name="demo[]" value=""/> <input type="text" name="demo[]" value=""/> <input type="text" name="demo[]" value=""/> <input type="text" name="demo[]" value=""/> <input type="text" name="demo[]" value=""/> <input type="submit"> </form> </body> </html>
test.php:
print_r($_POST); exit;
вывод:
Array ( [demo] => Array ( [0] => zxc [1] => zxc [2] => ewe [3] => ecc [4] => zzx ) )