使用POST将动态选择表单发送到MySQL数据库

时间:2011-07-14 23:59:46

标签: php mysql html forms

我正在尝试使用动态选择表单将信息发送到MySQL数据库。用户可以选择他们的学校,然后从该学校的列表中选择他们的专业(都从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表时发送表单。

2 个答案:

答案 0 :(得分: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注入。

答案 1 :(得分: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