簡體   English   中英

在PHP中使用HTML Select Tag中的數據庫輸出

[英]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_typeshowpost_statuspublic 然后對它進行排序,並將其輸出到數組,然后用一個匹配的每個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_titleID您實際上只需要修復此部分:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM