2014-12-19 170 views
-1

我已經建立了一個php表單,它向我們的數據庫註冊了一個項目,它具有從我們的客戶/供應商數據庫填充的下拉菜單。PHP下拉選擇

我也設置了一個函數來編輯這些項目,我遇到的問題是,當我到我的編輯頁面時,它只顯示客戶/供應商名稱,而不是在下拉菜單中,而是一個值框 - 是有辦法讓編輯頁面顯示下拉菜單,但也可以在原始供應商/客戶上選擇?

註冊項目頁面

<?php 
$result = mysql_query('SELECT name FROM customers ORDER BY name ASC'); 
echo '<select name='client'>'; 
while($row = mysql_fetch_assoc($result)) 
{ ` 
    echo '<option value = ''.$row[name].''>'.$row[name].'</option>'; 
}` 
echo '</select>'; 
?> 

編輯頁面

<input type='text' name='client' value='<?php echo $client; ?>'/> 

我嘗試了一些教程和代碼的調整,但繼續得到錯誤。我知道我的SQL注入問題,目前這個網站是內部的。

任何幫助,將不勝感激。

感謝

+3

轉義它們請停止使用***已棄用的'mysql'擴展名***,[讀取紅色框](http://www.php.net) /的mysql_connect)。學習使用'PDO'或'mysqli'代替('i'代表改進) –

+2

只要看看你的代碼是如何着色的。 – Pinoniq

+0

OP,我知道我的SQL等不是藉口,你不得不使用該代碼,停止。 –

回答

0

在您編輯頁面:

<?php 
$result = mysql_query('SELECT name FROM customers ORDER BY name ASC'); 
echo "<select name=\"customer\">"; 
while($row = mysql_fetch_assoc($result)) 
{ 
    if ($row['name'] == $client) 
    { 
     echo "<option selected value=\"" . $row['name'] . "\">" . $row['name'] . "</option>"; 
    } 
    else 
    { 
     echo "<option value=\"" . $row['name'] . "\">" . $row['name'] . "</option>"; 
    } 
} 
echo "</select>"; 
?> 
+0

謝謝Seunhaab,問題解決了! – Dan

1

,而不是$row[name]你應該使用$row['name']

$client= "<select name='client'>"; // you had error here also. 
    while($row = mysql_fetch_assoc($result)) 
    { 
     $client.= "<option value = '".$row['name']."'>'".$row['name'].'</option>'; 
    } 
    $client.= '</select>'; 

現在呼應$client得到dropdown.no現在需要建設單獨的選擇標籤。 選定使用這樣的:對$client1回聲

$client1= "<select name='client'>"; 
     while($row = mysql_fetch_assoc($result)) 
     { 
       if($row['name'] == $clientValue){ 
      $client.= "<option selected='selected' value = '".$row['name']."'>'".$row['name'].'</option>'; 
      }else{ 
      $client1.= "<option value = '".$row['name']."'>'".$row['name'].'</option>'; 
     } 
     } 
     $client1.= '</select>'; 

您將在此基礎上,你必須傳遞值$clientValue得到選擇。

0

對於初學者來說,你有一個語法錯誤的位置:

echo '<select name='client'>'; 

(整個代碼可能有更多的報價錯誤,但我離題...)

至於使用下拉,你要找的是selected屬性。當您構建頁面元素以在「編輯」頁面上顯示該表單時,可能會出現您希望顯示的值。當你的循環發現其中的價值相匹配的元素,選擇它:

while($row = mysql_fetch_assoc($result)) 
{ 
    if ($knownValue == $row[name]) { 
     echo '<option selected value = ''.$row["name"].''>'.$row["name"].'</option>'; 
    } else { 
     echo '<option value = ''.$row["name"].''>'.$row["name"].'</option>'; 
    } 
} 
0

我也建議你改變舊的擴展的MySQL。目前我看不到任何SQL注入問題,但即使它是內部的,也應該注意它,因爲從不同的原因,你會忘記稍後再進行消毒。如果你正在寫它,然後正確地寫。

現在,對於這個問題,你沒有正確使用引號,因此錯誤。不要使用相同類型的報價,但改變它們,就像這樣:

echo '<select name="client">'; 

或者,如果你使用雙引號進行連結,使用單內。 如果你不得不使用相同的,請用\