将while循环中的变量从表单中的第二个表中发送出去


Post variables from a while loop from a second table in form

我试图从2列(封面和页)抓取两个变量。正如您所看到的,选择是针对name列的,所以我不能抓取其他变量并将它们插入到cover和pageno列中。输入中有值,但有一个问题。

  1. 如果有多本书,它将在输入值中返回所有书籍的所有封面和所有页码。
  2. 当填充db时,它做与值相同的事情,它填充所有书籍的所有封面和页码,而不是选定的特定书籍。

我不确定如何通过输入循环,只打印所选的书,并仅用所选的内容填充数据库。也许是javascript或Jquery?我希望这能说得通。

<select name="name">
<option value="<?php echo "{$_POST['name']}"; ?>"> </option>                      
<?php
include('theconnection.php');
$con = mysqli_connect($host,$user,$pass,$dbName);
if (!$con)
{
die('cannot connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"thebooks");
$result = mysqli_query($con,"SELECT b.id, b.name, b.cover, b.pageno FROM books");
$cover = '';
$pageno = '';
while($row = mysqli_fetch_array($result))
{
echo ("<option value='$row[name]'>$row[name] $row[cover], $row[pageno] </option>"); 
$cover .= "$row[cover]";
$pageno .= "$row[pageno]";
}
?>
</select>
<input type="hidden" name="cover" value="<?php echo $cover; ?>">
<input type="hidden" name="pageno" value="<?php echo $pageno; ?>">

我不太清楚你的问题。从我能做的是,隐藏字段覆盖和页面号应该只显示选定的行。看看你的代码,我不明白为什么你使用选择查询两次,无论如何你不使用第一个查询,可以安全地删除,你也可以添加where子句来过滤掉你的结果,即使有多个结果,你可以在while循环中进行某种比较,但我建议你在查询本身中这样做。如果您的目的是在隐藏的封面和页号中只显示一个值,那么您可以使用

$cover = "$row[cover]";
$pageno = "$row[pageno]";

如果你能解释得更清楚一些,我很乐意帮忙