[英]Using database output in HTML Select Tag with PHP
我的以下內容在wordpress網站上運行良好。
<?php
global $wpdb;
$results = $wpdb->get_results( "SELECT post_title FROM wp_posts WHERE post_type = 'show' AND post_status = 'publish' ORDER BY post_title ASC" );
$options = array();
foreach ($results as $result) {
$options[$result->post_title] = $result->post_title;
}
echo '<select class="field" name="djshow">';
foreach ($options as $key => $value) {
echo "<option value='$key'" . ( $_GET['show'] == $value ? " selected='selected'" : "" ) . ">$value</option>";
}
'</select>';
?>
它從wp_posts中搜索post_title的每個實例的數據庫,其中post_type為show , post_status為public 。 然后對它進行排序,並將其輸出到數組,然后用一個匹配的每個post_title列表填充Select標記。
目前,它會將post_title輸出到選項值和名稱字段。
我想做的是在原始查詢中選擇另一個字段ID ,以填充選項值,而post_title填充名稱。
因此,在html中呈現時,select會讀取如下內容:
<option value="15">Post Title 1</option>
<option value="18">Post Title 2</option>
<option value="23">Post Title 3</option>
etc...
我認為我需要使用的正確查詢是這樣(但如果我錯了,請更正我)
$results = $wpdb->get_results( "SELECT post_title,ID FROM wp_posts WHERE post_type = 'show' AND post_status = 'publish' ORDER BY post_title ASC" );
但這就是我有限的知識讓我失望的地方...
如何將ID的輸出分配給選項值,並將post_title分配給select標記的名稱?
當查詢多個值時,可以使用逗號分隔它們。 在你的代碼中
post_title AND ID
應該
post_title, ID
您的返回值以$ results為單位,您的foreach可能是
foreach ($results as $result) {
echo "<option value='$result->ID'" . ( $_GET['show'] == $result->ID ? " selected='selected'" : "" ) . ">$result->post_title</option>";
}
不知道您的$ _GET是否持有post_title或ID
更改SQL以同時包含post_title
和ID
您實際上只需要修復此部分:
foreach ($results as $result) {
$options[$result->post_title] = $result->post_title;
}
現在應該是:
foreach ($results as $result) {
$options[$result->ID] = $result->post_title;
}
因為在下一個foreach
中, $key
內容來自於放在方括號中的內容,而$value
來自賦值右側。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.