我必须在单页中两次获取国家/地区名称。我有四个下拉菜单,分别是country_1,state_1,country_2,state_2。
在国家/地区,用户选择国家/地区名称,并根据国家/地区名称显示州名称。 如果我只使用country_1,state_1,那么我可以显示它,但我需要在同一页面上显示两个国家/地区。
我尝试了$stmt->data_seek($stmt,0);
$stmt->data_seek(0);
,但仍然无法显示它。
我只想知道我应该在哪里使用data_seek
<!--country name-->
$country_list="SELECT id,name FROM countries";
/* create a prepared statement */
if ($stmt = $conn->prepare($country_list)) {
/* execute statement */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($id, $country_name);
}
<select name="country_data" class="myselect form-control country_data">
<option value="" disabled selected>Select your country</option>
<?php while ($stmt->fetch()) {?>
<option value="<?php echo $id;?>"><?php echo $country_name;?></option>
<?php }?>
</select>
<!--state name-->
<select name="state" class="myselect form-control state_get" >
<option value=''>Select state</option>
</select>
<!--country name-->
<select name="country_data" class="myselect form-control country_data">
<option value="" disabled selected>Select your country</option>
<?php
$stmt->data_seek($stmt,0);
while ($stmt->fetch()) {?>
<option value="<?php echo $id;?>"><?php echo $country_name;?></option>
<?php }?>
</select>
<!--state name-->
<select name="state" class="myselect form-control state_get" >
<option value=''>Select state</option>
</select>
答案 0 :(得分:2)
$data = array();
$i=0;
while($stmt->fetch()) {
$data[$i]['id'] = $id;
$data[$i]['country_name'] = $country_name;
$i++;
}
然后尝试
foreach($data as $row){
}
答案 1 :(得分:1)
尝试将获取的数据保存在变量中。
$data = $stmt->fetch();
然后在任何你想使用的地方使用foreach循环。
foreach($data as $row){
}
答案 2 :(得分:0)
由于两种情况下的输出相同,因此仅循环数据一次效率要高得多。以下代码仅使用一个循环来创建html选项。它将它存储在变量中。然后,您可以通过回显变量来在两个地方使用它。
<?php
$options = "";
while ($stmt->fetch()){
$options .= "<option value='$id'>$country_name</option>\n";
}
?>
<!--country name 1-->
<select name="country_data1" class="myselect form-control country_data">
<option value="" disabled selected>Select your country</option>
<?php echo $options ?>
</select>
<!--state name 1-->
<select name="state1" class="myselect form-control state_get" >
<option value=''>Select state</option>
</select>
<!--country name 2-->
<select name="country_data2" class="myselect form-control country_data">
<option value="" disabled selected>Select your country</option>
<?php echo $options ?>
</select>
<!--state name 2-->
<select name="state2" class="myselect form-control state_get" >
<option value=''>Select state</option>
</select>
我更改了name
属性,因为您可能不希望它们具有相同的名称。我目前无法对此进行测试,如果您遇到任何错误,请告诉我。
此外,您尚未实施&#34;州&#34;的代码。下拉菜单,当你到达那一点时,你可能想考虑使用AJAX。
我在每个选项行的末尾添加了\ n,以便在查看源代码时使源代码更易于在浏览器中阅读。但是,没有必要,如果您愿意,可以将其删除。
编写第一部分的另一种方法(如果不使用bind_result,则如下所示:
<?php
$options = "";
while ($result = $stmt->fetch()){
$options .= "<option value='{$result['id']}'>{$result['name']}</option>\n";
}
?>