我的表格有许多下拉框,其中包含数字1-5。我可以使用这段代码来填充下拉列表,但是想知道我是否能以某种方式只调用db一次但是填充所有使用相同数字的下拉列表?
<?php
$sql = "SELECT * FROM riskNumDrop";
$result = $conn->query($sql);
if (!$conn->query($sql)) {
echo "query failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
echo '<select class="assess" name="precontcons" style="width:4em">' ;
while($row = $result->fetch_assoc()){echo '<option value='. $row['riskNumDrop'] .'>'.$row['riskNumDrop'].'</option>';}
?> </select>
所以理想情况下,我会生成一次输出并重复使用多次。我猜一个数组($ result已经是)但是我如何填充它的下拉? TIA
答案 0 :(得分:1)
保存为字符串可以节省您必须循环生成多次相同输出的相同数据的处理。如果这是您想要的,您可以执行以下操作。
替换:
echo '<select class="assess" name="precontcons" style="width:4em">' ;
while($row = $result->fetch_assoc()){echo '<option value='. $row['riskNumDrop'] .'>'.$row['riskNumDrop'].'</option>';}
?> </select>
使用:
$drop = '<select class="assess" name="precontcons" style="width:4em">' ;
while($row = $result->fetch_assoc()){
drop .= '<option value='. $row['riskNumDrop'].'>'.$row['riskNumDrop'].'</option>';
}
$drop .= '</select>';
如果您愿意,可以多次echo $drop
。
如果出于某种原因你想要不同的选择属性,你可以保存选项列表并打印选择,如下所示:
$dropOptions = "";
while($row = $result->fetch_assoc()){
$dropOptions .= '<option value='. $row['riskNumDrop'].'>'.$row['riskNumDrop'].'</option>';
}
然后只是echo '<select class="foo" name="bar">'.$dropOptions.'</select'>
答案 1 :(得分:0)
您可以将数据存储到数组中,然后通过枚举数组来打印数据。
$risks = array();
// Load values into array.
while ($row = $result->fetch_assoc()) {
array_push($row['riskNumDrop']);
}
// Drop down #1
echo '<select>';
foreach ($risks as $risk) {
echo '<option value='. $risk .'>'. $risk .'</option>';
}
echo '</select>';
// Drop down #2
echo '<select>';
foreach ($risks as $risk) {
echo '<option value='. $risk .'>'. $risk .'</option>';
}
echo '</select>';
答案 2 :(得分:-1)
只需使用fetch_all
方法将结果输入数组即可。它将结果集中的所有行返回到关联或数字数组中。你可以用这样的数组做任何你想做的事情:
$result = $conn->query('SELECT * FROM riskNumDrop');
if (!$result) {
echo "query failed: (" . $mysqli->errno . ") " . $mysqli->error;
exit; // fetch_* functions cannot be called on error (sice $result is false)
}
// get all rows from the result
$rows = $result->fetch_all(MYSQLI_ASSOC);
// output first dropdown...
echo '<select name="dropdown_1">';
foreach ($rows as $row) {
// options for the first dropdown (same as you did before)
}
echo '</select>';
// output second dropdown...
echo '<select name="dropdown_2">';
foreach ($rows as $row) {
// options for the second dropdown
}
echo '</select>';