PHP多个下拉框,带有分隔的表格

时间:2016-02-24 20:40:32

标签: php mysql

好吧,因为标题说我有很多桌子,我需要在不同的下拉框中显示它们。到目前为止,我已经将第一张桌子显示在一个下拉框内,但我不确定下一张桌子的显示方式。

<?php
$link = mysql_connect('server', 'user', 'password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
$selected = mysql_select_db("database",$link) 
or die("Could not select examples");
  $sql="SELECT * FROM MOBO CPU, RAM,GPU, PSU, COMPUTERCASE";
   $result = mysql_query($sql);

    echo "<select name='mobo'>";
    while ($row = mysql_fetch_array($result)) {
        echo '<option value="'.$row["id"].'">'.$row["mobo"].'</option>';
    }
    echo "</select>";

?>

所以这是我的php到目前为止,这就是数据库的外观。

CREATE TABLE MOBO (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,mobo VARCHAR(50) UNIQUE,quantity INT,price DECIMAL(18,2));
CREATE TABLE CPU (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, cpu VARCHAR(50) UNIQUE, quantity INT, price DECIMAL(18,2));
CREATE TABLE RAM (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,ram VARCHAR(50) UNIQUE,quantity INT,price DECIMAL(18,2));

等我也希望有人能够解决我的问题以详细解释它是如何完成我的PHP Newb。

1 个答案:

答案 0 :(得分:0)

首先,您正在使用mysql_*函数,并在最新版本的PHP中删除它们。虽然现在可以使用,但是将来升级到更高版本的PHP会有问题。使用Mysqli或PDO(PDO是我的偏好)

其次,在诸如表名之类的标识符中使用小写。此代码可能适用于Windows,但如果您迁移到Linux,则所有这些都将区分大小写,并且此代码将无法正常工作。

我在这段代码中不明白,while ($row = mysql_fetch_array($result)) {。 mysql_fetch_array()返回数据库的完整结果集。 while循环将不断重新定义它的值,您应该使用foreach($var = mysql_fetch_array(...) as $key => $value){},然后在我的示例中单独定义$var然后在foreach循环中使用它之前会更好。

然后我认为你的问题已得到解决。

  $sql="SELECT * FROM mobo, cpu, ram, gpu, psu, case";
  if($result = mysql_query($sql) != false){ // you should actually check if the query ran successfully.
      $data = mysql_fetch_array($result);

      //echo "<select name='mobo'>";
      foreach($data as $row => $value){
          echo $row, $value, "</br>";
      }
      //echo "</select>";
  }

最后,从多个表中选择所有内容都是错误的数据库设置。一旦在数据库中有大量结果,它会将您拖下来,然后解决此问题将是一个问题。或许最好通过id使用内部或外部连接。