[英]Wordpress site SQL query to get <optgroup> set to distinct value
示例表数据
id manufacturer yeast_name yeast_id archived
01 Bootleg American BL001 yes
02 Imperial American IMP001 yes
03 Imperial German IMP002 yes
04 White Labs Chico WLP001 yes
05 White Labs London Ale WLP488 yes
06 White Labs Lager WLP893 no
07 Wyeast American WY1056 yes
我正在尝试使用代码片段在我的 Wordpress 站点上输出不同的<optgroup>
。 我可以使用以下代码在非 wordpress 网站上执行此操作:
工作代码
$sql = 'SELECT DISTINCT * FROM table_name WHERE archived = "yes" ORDER BY yeast_id ASC';
$result = mysqli_query($conn, $sql);
echo '<select class="req" id="strain" name="strain" size="1" style="width:40%;">';
echo '<option value="#">Choose Yeast Strain...</option>';
while($row = mysqli_fetch_assoc($result)){
$array[$row['manufacturer']][] = $row;
}
foreach($array as $key=>$value){
if(is_array($value)){
echo "<optgroup label='".$key."'>";
foreach($value as $k=>$v){
echo "<option value='".$v['yeast_id']."-".$v['yeast_name']."'>".$v['yeast_id']." ".$v['yeast_name']."</option>";
}
echo "</optgroup>";
}
}
echo '</select>';
我在使用 Wordpress 的 $wpdb->get_results 时遇到了问题,但我失败了。 我使用“ARRAY_A”将结果放入一个数组中。 我被困在如何做代码的“while”部分。 任何帮助都会非常出色。
非工作代码
global $wpdb;
$results = $wpdb->get_results("SELECT DISTINCT * FROM wpog_user_yeast WHERE archived = 'yes' ORDER BY yeast_id ASC", ARRAY_A);
echo '<select class="req" id="strain" name="strain" size="1" style="width:40%;">';
echo '<option value="#">Choose Yeast Strain...</option>';
while($row = $wpdb->get_results($results)){
$array[$row[$results->manufacturer]][] =$row;
}
foreach($array as $key=>$value){
if(is_array($value)){
echo "<optgroup label='".$key."'>";
echo "</optgroup>";
}
}
echo '</select>';
$result 已经是一个数组,所以$wpdb->get_results($results)
应该给你一个错误使用
foreach($results as $row){
$array[$row[$results->manufacturer]][] =$row;
}
此外,您应该保留$table = $wpdb->prefix ."user_yeast"
以防您也想在另一个 wopress 站点上使用该代码
谢谢@nbk。 你的解决方案让我成功了 95%! 一个小小的调整让我完成了剩下的工作。
$array[$row['manufacturer']][] =$row;
代替您的代码工作。
global $wpdb;
$results = $wpdb->get_results("SELECT DISTINCT * FROM wpog_user_yeast WHERE archived = 'yes' ORDER BY yeast_id ASC", ARRAY_A);
echo '<select class="req" id="strain" name="strain" size="1" style="width:40%;">';
echo '<option value="#">Choose Yeast Strain...</option>';
foreach($results as $row){
$array[$row['manufacturer']][] =$row;
}
foreach($array as $key=>$value){
if(is_array($value)){
echo "<optgroup label='".$key."'>";
foreach($value as $k=>$v){
echo "<option value='".$v['yeast_id']."-".$v['yeast_name']."'>".$v['yeast_id']." ".$v['yeast_name']."</option>";
}
echo "</optgroup>";
}
}
echo '</select>';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.