2013-03-13 136 views
2

我有一個小問題。我有一個edit.php頁面。該頁面列出了可以編輯的產品信息。從選定的數據庫中選擇選項值

我運行一個查詢

while($rows=mysql_fetch_assoc($query)){ 


echo"<form method=\"POST\" action=\"edit.php\">"; 
echo "<input type ='hidden' name='ID' value = '{$rows['ID']}'>"; 
echo "Product:&nbsp <input type='text' name='product' value = '{$rows['ProductName']}'>"; 

while循環之前,我存儲在變量的細節,例如:

$hiddenid = $_POST['ID']; 
$productName = $_POST['product']; 

和工作原理。當我加載php表單時,它會顯示從數據庫中檢索的產品名稱(在文本字段中)。但問題是我想將產品名稱存儲爲用戶已選擇的下拉列表框,然後選擇該列表框。

因此,基本上我想要做的不是在文本框中顯示數據庫檢索的選項,而是希望用戶選擇在下拉列表框中顯示的選項。

我希望這樣做會有用嗎?爲什麼我的選項值根本沒有顯示,其次他們也沒有顯示SELECTED選項(從數據庫中檢索)。

請幫忙嗎?

+0

你沒有結束你的foreach循環 – ioums 2013-03-13 17:15:16

+0

@ioums很抱歉,我已經結束了。剛剛忘了最後}現在編輯它:) – Jsmith 2013-03-13 17:17:38

+0

也許只是另一個錯字,但它應該在 – ioums 2013-03-13 17:20:08

回答

3

專注於這一個領域,除非它是一個複製錯誤,否則您應該得到一個PHP錯誤。請注意以下更改:

while($rows=mysql_fetch_assoc($query)){ 
?> 
    <form method=\"POST\" action=\"edit.php\"> 
    <input type ='hidden' name='ID' value = '<?php echo $rows['ID'];?>'> 
    <select name ="pnames"> 
     <?php foreach ($arrayproducts as $key => $value) { 
     ?> 
      <option value = "<?php echo $key; ?>" 
      <?php 
       if ($key == $productName){ 
        echo 'selected="selected"'; 
       } 
      ?> > 
      <?php echo $value; ?> 
      </option> 
    <?php } //end foreach ?> 
    </select> 
<?php }//end while ?> 

您在開始時在PHP段中有純HTML代碼。

而且,我相信你想

if ($value == $productName){ 
+0

好吧,我得到它的工作......我決定做的一切在PHP標籤..這是我的意思是錯誤是我在回顯 'echo「

>錯誤。PHP中\ 「>」; echo「」; // \t \t回聲 「的產品:」; \t \t回聲 「的產品:」; echo「」的端部;' 好了,所以至少現在的選項顯示。然而,另一個織補問題:?「( 基本上頁面顯示的下拉即第一個選項‘cholcate’,而不是具體是什麼用戶已保存在數據庫中爲什麼會這是任何想法 – Jsmith 2013-03-13 19:43:02

+0

是最後一行?我的回答您的問題 – UnholyRanger 2013-03-13 19:47:25

1

這可能不是該這麼好的地方,但因爲我看到噸的代碼,每天就是可怕的我想我會附和。

首先,檢查你的輸入。你永遠不要相信用戶$ _GET,$ _POST等的任何變量。原始代碼的鬆散只是尋找SQL注入攻擊。

<?php 

這東西看起來像它期待某種傳遞ID的然後就從數據庫中提取的產品名稱......它真的不清楚。所以我們假設已經定義了變量。需要使用這樣的代碼:

if(!empty($_GET['id'])&&is_numeric($_GET['id'])){ 
    $id=$_GET['id']; 
} else { 
    $id=''; 
} 

//Declare your array 
$arrayproducts = array(); 


while($rows=mysql_fetch_array($query)){ 

這裏需要調用的東西出來返回數組...沒有看到這很難說,你期待什麼SQL,但你的標註應該是這樣的。 ..

//Whatever the name from SQL is for the column 
$temp_ID = $rows['id']; 

//Whatever the name for the product column is 
$temp_Prod = $rows['prod']; 

//Load the array 
$arrayproducts[$temp_ID]=$temp_Prod; 
} 

最好加載一個var的一切,然後張貼在一個鏡頭,而不是出入PHP。代碼將會更快,您將能夠跟蹤代碼。

$page = "<form method=\"POST\" action=\"edit.php\">"; 

檢查該ID是否有效。正則表達式是最好的,但在這裏的一次。

if(!empty($id)){ 
    $page .= "<input type =\"hidden\" name=\"ID\" value = \"$id\">"; 
} 
$page .= "<select name =\"pnames\">\n"; 

foreach ($arrayproducts as $key => $value) { 

    $page .= "<option value = \"$key\""; 

最好使用mysql的自動增量字段和內置ID,這樣就不會有重複的ID接管現有記錄的機會。

 if ($id == $key){ 
     $page .= ' selected="selected"'; 
     } 
    $page .= ">$value</option>\n"; 

//close the foreach 
} 

$page .= "</select>\n"; 

print $page; 
?> 
+0

非常感謝您的回覆和幫助。我現在已經修復了它,這是因爲我正在關閉回聲裏面的一個小'>'!離譜的權利?現在的問題是SELECTED不顯示基於用戶的原始選擇是什麼:'( – Jsmith 2013-03-13 19:44:38

相關問題