我正在建立一个跟踪隐形眼镜的系统。我将隐形眼镜信息存储在数据库中,因为有时价格/可用性会发生变化,我会从程序中的多个点访问此信息。我正在尝试通过将“SELECT * FROM contacts”作为查询使用下拉列表与此列表进行交互。我的代码看起来像这样:
$contact_list = mysqli_query($link, "SELECT brand FROM contacts ORDER BY brand");
然后我使用PHP在while循环中回显该列表,以填充下拉列表中的选项。
我的问题是:我在同一张表格中为每只眼睛都有这些下拉菜单。因此它是“品牌右眼”......关于右眼的其他杂项......然后是“品牌左眼”。但只有右眼用品牌信息填充,因为它首先出现在代码中。我要做的是复制/粘贴完全相同的查询并执行
$contact_list2 = mysqli_query($link, "SELECT brand FROM contacts ORDER BY brand");
然后如果我再次需要下拉菜单,我需要做$ contact_list3 ..等等。为什么我不能使用相同的变量生成下拉列表?为什么它在第一次执行变量后停止响应调用变量,是否有任何可以实现的工作,这样我就不必每次都使用不同的变量关联复制/粘贴相同的查询?
仅供参考,我的PHP代码是这样的:
<select class="form-control" name = "brandOS">
<option value="0">Please Select</option>
<?php
while($row = mysqli_fetch_array($contact_list))
{
?>
<option value = "<?php echo($row['brand'])?>" name = "brandOS">
<?php echo($row['brand']) ?>
</option>
<?php
}
?>
</select>
我为右眼和左眼复制/粘贴了这个循环。但它只适用于代码中首先出现的下拉列表。
答案 0 :(得分:0)
可能的解决方案在性能方面更有效:
<?php
$left_eye = '<option value="0">Please Select</option>';
$rigth_eye = '<option value="0">Please Select</option>';
while($row = mysqli_fetch_array($contact_list))
{
//logic for left eye
$left_eye .= <<<HTML
<option value ="{$row['brand']}" name = "brandOS">
{$row['brand']}
</option>
HTML;
//logic for rigth eye
$rigth_eye .= <<<HTML
<option value ="{$row['brand']}" name = "brandOS">
{$row['brand']}
</option>
HTML;
}
?>
<select class="form-control" name = "brandOS">
<?php echo $left_eye ; ?>
</select>
<select class="form-control" name = "brandOS">
<?php echo $rigth_eye ; ?>
</select>
使用此解决方案,您可以在while循环中获得结果。如果左右选择相同,则可以使用相同的变量。
答案 1 :(得分:0)
将品牌存储在数组中,然后您可以循环遍历数组。
<?php
$contact_list = mysqli_query($link, "SELECT brand FROM contacts ORDER BY brand");
$brands = array();
while($row = mysqli_fetch_array($contact_list))
{
array_push($brands, $row['brand']);
}
?>
<select class="form-control" name = "brandOS">
<option value="0">Please Select</option>
<?php
foreach($brands as $brand){
?>
<option value = "<?php echo($brand[0])?>" name = "brandOS">
<?php echo($brand[0]) ?>
</option>
<?php
}
?>
</select>
答案 2 :(得分:0)
您可以使用PHP数组(如SESSION)来存储值并在整个站点中使用它们。一定要打电话给&#34; session_start()&#34;但是,在您使用该数组的每个页面上的方法。
//Initialize sessions
session_start();
...
//Right after getting result from query
$_SESSION['contact_list'] = $contact_list;
要使用它,请务必调用我上面告诉您的方法,并使用相同的语法调用该变量:
<?php
while($row = mysqli_fetch_array($_SESSION['contact_list'])) { ?>
希望这有帮助。