我花了很多时间制作一个功能,最后15-20分钟试图解决这个问题。我需要帮助!
我从数据库中选择多行,然后在while循环中运行它们。
可在下拉菜单中找到它们。
<form method="POST" action="adminprocess.php">
<fieldset>
<p>
<label class="left2">League:</label>
<select name="league" class="combo">
<?php
$q = $database->selectAllLeagues();
while($row=mysql_fetch_assoc($q))
{
$theid = $row['id'];
extract($row);
?>
<option value="<? echo $theid; ?>">
<? echo $format.'_'.$game.'_'.$name.'_Season '.$season;?>
</option>
<?
}
?>
</select>
</p>
<p>
<input type="hidden" name="replaceleague" />
<input type="hidden" name="format" value="<? echo $format; ?>" />
<input type="hidden" name="game" value="<? echo $game; ?>" />
<input type="hidden" name="name" value="<? echo $name; ?>" />
<input type="hidden" name="season" value="<? echo $season; ?>" />
<input type='submit' class="button" value='Select league' />
</p>
</fieldset>
</form>
$ theid似乎工作正常,取决于我在下拉菜单中选择的行。 但是,我无法在隐藏的输入中获取下面的值,以便从下拉框中选择的行中传递正确的值。
似乎总是从数据库的第一行传递4个变量。
所以基本上,我需要它来选择正确的行并使用该数据。 我究竟做错了什么!!! 谢谢你的阅读!
答案 0 :(得分:2)
要直接回答关于while循环的问题,这是因为隐藏的输入在循环外回显,之后数据中数据的最后一行被PHP用来输出到那些隐藏的输入。
但我建议不要使用像这样的隐藏表单元素,而是使用<option>
提交带有用户选择的值的表单,读取值(如$_POST['league']
中所示),然后获取具有该ID的数据库中的行并相应地使用它。 (如果您的应用程序当然需要,您可能希望保留replaceleague
隐藏的输入。)
它更容易,而且它确保用户选择的行的信息来自您的数据库而不是被篡改。事实上,对于大多数应用来说,这是正确的方法。
答案 1 :(得分:2)
您的隐藏字段在循环外部初始化,因此它们将使用while
循环的最后一次迭代中遗留的值。 (即最后一次获取的行)
为什么你首先需要隐藏的字段?提交表单时,league
字段将包含下拉框中所选行的ID。使用该ID,您可以在处理表单时从数据库中获取其他字段。