2011-07-14 82 views
0

我正在嘗試使用動態選擇表單將信息發送到MySQL數據庫。用戶將能夠選擇他們的學校,然後從該學校的列表中選擇他們的專業(全部從MySQL表中檢索)。然後我想將這些信息發送到數據庫中的另一個表中進行存儲。使用POST向MySQL數據庫發送動態選擇表格

這是我的代碼迄今:

<select name="school"> 
    <php 
    $sql = "SELECT school_name, school_id FROM school_table ORDER BY school_name"; 
    $query = mysql_query($sql,$conn); 

    while($row = mysql_fetch_array($states)) 
    { 
    echo ("<option value=$row[school_id]>$row[school_name]</option>");   
    } 
    ?> 
</select> 

我不知道如何使第二選擇,這將最好從第一個表識別school_id並與相應的匹配它school_id在第二張桌子上,其中還列出了那所學校的專業。另外,我不知道如何在最終完成MySQL表格時發送表單。

回答

0

您可以使用簡單的表單將組合框中的值提交給服務器(如HTTP POST或HTTP GET),並將該值用作SQL語句中的變量,也可以使用簡單的AJAX請求發送必要的信息給你的PHP腳本。無論如何,你的服務器端代碼應該是這樣的:

//process.php 
$myRetrievedValue = $_POST["school"]; 
$mySqlStm = "SELECT * FROM foo WHERE bar = '".mysql_escape_string($myRetrivedValue)."'"; 

在客戶端,你的代碼看起來是這樣的(使用一個簡單的表格,沒有AJAX的東西):

<form action="process.php" method="post"> 
<select name="school"> 
<php $sql = "SELECT school_name, school_id FROM school_table ORDER BY school_name"; 
     $query = mysql_query($sql,$conn); while($row = mysql_fetch_array($states)) { 
     echo ("<option value=$row[school_id]>$row[school_name]</option>");   } ?> 
</select> 
<input name="" type="submit" /> 
</form> 

請記住:當你在查詢中使用用戶輸入使用準備好的語句(或者至少使用上面的方法)來避免SQL注入。

+0

函數mysql_escape_string已被棄用,不應該使用 –

0

答案是使用連接在一個SELECT兩個表中選擇: http://dev.mysql.com/doc/refman/5.0/en/join.html

INNER JOIN 

    SELECT `school_table`.`school_name`, 
      `school_table`.`school_id`, 
      `2ndTable`.`school_id`, 
      `2ndTable`.`major`, 
       FROM school_table,2ndTable 
       WHERE `school_table`.`school_id`=`2ndtable`.`school_id` 
       ORDER BY school_name 

or a 
LEFT JOIN (returning all columns in the left) 

    SELECT `school_table`.`school_name`, 
      `school_table`.`school_id`, 
      `2ndTable`.`major`, 
      `2ndTable`.`school_id` 
       FROM school_table 
       LEFT JOIN on `school_table`.`school_id`=`2ndtable`.`school_id` 
       ORDER BY school_name