2015-01-20 86 views
0

我在wordpress網站上完美運行以下內容。在HTML中使用數據庫輸出用PHP選擇標籤

<?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_postsPOST_TITLE的每個實例的數據庫所在的post_type顯示post_status公共。然後對它進行排序並將其輸出到數組,然後將選擇標籤填充到匹配的每個post_title的列表中。

目前,它的POST_TITLE輸出到兩個期權價值和name字段....

我想什麼做的是在原有的查詢來填充選項選擇另一場ID值,而post_title填充名稱。

所以選擇會讀這樣的事情在HTML渲染時:

<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到選擇標籤的名稱?

+0

」SELECT post_title,ID FROM wp_posts ...「您不在該字段列表中使用」和「,只是在where子句中。這裏使用逗號。 – developerwjk 2015-01-20 18:36:10

+0

好的謝謝你指出,WJK。現在將編輯顯示修復程序。我將如何制定其餘的輸出? – Grant 2015-01-20 18:37:51

回答

0

當您查詢多個值時,可以使用逗號分隔它們。 在你的代碼

post_title AND ID 

應該

post_title, ID 

你的返回值是$結果,您的foreach可能是

foreach ($results as $result) { 
echo "<option value='$result->ID'" . ($_GET['show'] == $result->ID ? " selected='selected'" : "") . ">$result->post_title</option>"; 
} 

不知道,如果你的$ _GET持有POST_TITLE或ID

+0

是的,這是完美的。非常感謝。我只是不明白如何區分價值觀的邏輯,但也使它工作,你已經教給我一些新的東西;) – Grant 2015-01-20 18:50:23

+0

很高興成爲幫助 – RST 2015-01-20 21:14:27

0

將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從任務的右側。 「

+0

輝煌,非常感謝你。你解釋得非常清楚,非常感謝! – Grant 2015-01-20 18:53:32