2013-03-28 78 views
0

我需要從我的postgreSQL數據庫中使用諸如SELECT title FROM books WHERE ownedBy = [users facebook ID]的查詢來填充書名的下拉列表,然後使用用戶的選擇顯示該書的其他信息。該頁面是一個Facebook應用程序,這是我如何獲得Facebook的ID。從postgresql數據庫填充php下拉框

這是迄今爲止的代碼部分,主要是從我發現的類似問題的各種回答中創建的。

<form action="updateform.php" method="post"> 
<select name="booktitle" id="booktitle"> 
<option>Select book</option> 
<?php 
$db = pg_connect("host=ec2-54-243-190-226.compute-1.amazonaws.com port=5432 dbname=d6fh4g6l0l6gvb user=zmqygfamcyvhsb password=1Apld4ivMXSK8JZ_8yL7FwIuuz sslmode=require options='--client_encoding=UTF8'") or die('Could not connect: ' . pg_last_error()); 
$sql = pg_query("SELECT title FROM books WHERE ownedby='$user_id'"; 
while ($row = pg_fetch_assoc($sql)) { 
echo '<option value="'.htmlspecialchars($row['title']).'"></option>';} 
pg_close($db); 
?> 
</select> 
<input type="hidden" name="userid" id="userid" value="<?php echo htmlspecialchars($user_id); ?>"> 
//other form elements here 
</form> 

更新:我沒有關閉的隱藏字段,這樣似乎解決它是顯示不出來的錯誤。下拉列表不填充,但我沒有收到服務器日誌中的任何錯誤。

如果任何人都可以幫我拿到下拉框部分的工作,那現在會很棒,一旦這部分工作,我就會努力找出其他問題。

+0

SQL肯定會返回傳回的user_id的行嗎? – d1ll1nger 2013-03-28 11:00:38

+0

@DaleBetts當我直接在數據庫上運行'SELECT title FROM books WHERE ownedby = [my facebook id];'時,它確實會返回值,但我不知道如何測試PHP是否成功檢索它們。編輯:它目前在下拉框中顯示正確的行數,但沒有文字) – TheMarron 2013-03-28 11:47:11

回答

2

你應該寫

$sql = pg_query($db, "SELECT title FROM books WHERE ownedby='$user_id'"); 

而且,在你的選擇中顯示的名稱必須指定。

echo '<option value="'.htmlspecialchars($row['title']).'">'.htmlspecialchars($row['title']).'</option>'; 
+0

這似乎阻止了錯誤。現在下拉框只給我2個空白選項。 – TheMarron 2013-03-28 12:16:48

+0

@ TheMarron查看更新。您必須指定選項的顯示文字。 – jaudette 2013-03-28 17:33:43

0

在您的查詢'$ user_id'爲空。首先仔細檢查'$ user_id'的值。那麼它會工作。

+0

$ user_id先前在代碼'user_id = $ facebook-> getUser();' – TheMarron 2013-03-28 10:40:41

+0

'中被分配了一個值,如果$ user_id已經被分配了,那麼這個值不在查詢中。或者在關閉'$ sql'的括號後嘗試並隱藏按鈕沒有正確關閉。所以先做,然後嘗試。希望這會對你有所幫助。 – Jitendra 2013-03-28 10:52:21