PHP+HTML:动态创建表单
我试图根据数据库中表的行数动态创建表单。我试过这个,但它不起作用:PHP+HTML:动态创建表单,php,html,forms,post,Php,Html,Forms,Post,我试图根据数据库中表的行数动态创建表单。我试过这个,但它不起作用: require_once('mysqli_connect.php'); //I select the colum w_spanish from the table selected by the user $q="SELECT w_spanish FROM ".$_GET['name']; $r=@mysqli_query($dbc, $q); echo '<FORM METHOD="POST" ACTION="Co
require_once('mysqli_connect.php');
//I select the colum w_spanish from the table selected by the user
$q="SELECT w_spanish FROM ".$_GET['name'];
$r=@mysqli_query($dbc, $q);
echo '<FORM METHOD="POST" ACTION="Correction.php">';
echo '<TABLE BORDER="1">';
//Here is where I generate dinamically a table that can be filled by user
while ($row=mysqli_fetch_array($r, MYSQLI_ASSOC)){
$aux=$row['w_spanish'];
echo '<TR><TD>'.$aux.'</TD><TD><INPUT TYPE="TEXT" NAME="Sol_'.$aux.'" SIZE="20"></TD></TR>';
}
echo '</TABLE>';
echo '<P><INPUT TYPE="SUBMIT" VALUE="Submit" ></P></FORM>';
mysqli_close($dbc);
所以当我按submit时,信息不会发送到Correction.php,我想这是因为我在php代码中创建了HTML表单。如何才能正确地执行此操作???首先声明$row,然后使用do while循环
$row = mysqli_fetch_array($r, MYSQLI_ASSOC) do{
$aux=$row['w_spanish'];
echo '<TR><TD>'.$aux.'</TD><TD><INPUT> TYPE="TEXT"NAME="Sol_'.$aux.'" SIZE="20"></TD></TR>';
}while ($row=mysqli_fetch_array($r, MYSQLI_ASSOC))
首先-从@mysqli语句中删除@,因为它掩盖了可能发生的任何错误 其次,将生成的代码粘贴到中,查看是否有任何HTML错误,并在必要时进行调整
第三,由于用户可以选择要读取的表,因此您的数据需要进行超级清理,因为您肯定不希望在此处受到sql注入攻击。问题可能在于您正在运行的查询。如果不知道更多信息,我猜您的查询将一无所获。尝试在每次迭代中转储该行,并查看结果。您可能正在寻找以下内容:
$q="SELECT w_spanish FROM tableName WHERE name = " . $_GET['name'];
如果不是这样,也可能是因为您只从数据库中获取了一列,所以不需要使用$aux=$row['w_西班牙语'];访问信息;。您只需使用:
$aux=$row;
但我不是百分之百的相信。尝试用var_dump转储每一行,看看会弹出什么 如果您按下submit会发生什么?您是否验证了查询是否返回正确的结果?@Bart Friederichs尝试调用不存在的文件时出错。但是Correction.php并不存在,它被放在服务器的forrect文件夹中。例如,如果我创建了相同的表单,但都是HTML格式的,并且生成了具有固定行数的表,那么一切都可以正常工作,我可以完美地访问Correction.php。那么它要获取哪个文件?您可以在php代码中创建HTML表单。我不认为这是问题所在。这会改变什么?手动获取一行,然后使用do/while循环在功能上与使用普通while循环相同。谢谢!!所有的信息。我是PHP新手,我的代码仍然很混乱