在php中提交表单后从2下拉列表中获取数据

时间:2011-05-23 09:19:21

标签: php

我一直在这里寻找答案,但我找不到一个:)。 我的问题我有2个下拉列表“制造商”和“模型”。这是一个飞机目录。我想要的是在用户选择制造商和型号并单击“提交”后,他们将被重定向到页面并显示属于该特定制造商和型号的某架飞机的信息。为了澄清,我想在用户点击提交按钮后显示该数据。我看到很多关于从下拉列表中获取数据的教程,但是他们都使用“onchange”来获取和显示下拉列表中的值。

这是代码:

<form name="psform" action="pistonsingle.php" method="post">
         <?php 
            $display = displaymaincat(1);
            while($result=mysql_fetch_array($display)){
                echo $result['maincategory'];  
            }
          ?>
         <?php 
           $display = mysql_query("SELECT * FROM manufacturers");
            confirm_query($display);
            echo "<select name=\"manu\">";
            echo "<option> --Select Manufacturer--</option>";
            while($result=mysql_fetch_array($display)){
             echo "<option value=$result[id]>$result[manufacturer] </option>";};
             echo "</select>";
         ?>
         <?php 
             $display = mysql_query("SELECT * FROM models");
            confirm_query($display);
            echo "<select name=\"models\">";
             echo "<option name=\"nullsel\"> --Select Model--</option>";
            while($result=mysql_fetch_array($display)){
             echo "<option value=$result[id]>$result[model] </option>";};
             echo "</select>";
         ?>
         <input type="submit" name="psbutton" id="button" value="Show Listing"  />
         </form>

然后我尝试使用我在动作页面上创建的这个功能 function psdisplay(){

        if(isset($_POST['submit'])){
        $display = mysql_query("SELECT * FROM individualaircraft 
        INNER JOIN aircraftmaincat on individualaircraft.maincategory_id = aircraftmaincat.id
        INNER JOIN manufacturers on individualaircraft.manufacturer_id = manufacturers.id
        INNER JOIN models on individualaircraft.model_id = models.id
        WHERE maincategory_id = 1");
        confirm_query($display);
        return $display;
    }
        }

    

?></td>
<td><?php 
        $display = psdisplay();
        while($result=mysql_fetch_array($display)){
            echo $result['generalinformation'];
        }
?></td>
<td><?php 
    $display = psdisplay();
        while($result=mysql_fetch_array($display)){
            echo $result['website'];
        }

?></td>

它的工作。它显示数据,但问题是当用户点击提交按钮时,即使他/她选择某个制造商或型号,我的代码所做的只是显示所有飞机而不是某个属于某个制造商和型号的飞机。

我希望有人可以帮助我:)。提前谢谢。

关键帧产生器

1 个答案:

答案 0 :(得分:1)

嘿,我没有看到你实际使用模型和制造商价值的任何地方。你肯定不会在psdisplay()函数的sql查询中使用它们。这可能更符合您的需求。

function psdisplay($manufacturer, $model)
        $display = mysql_query("SELECT * FROM individualaircraft 
        INNER JOIN aircraftmaincat on individualaircraft.maincategory_id = aircraftmaincat.id
        INNER JOIN manufacturers on individualaircraft.manufacturer_id = " . mysql_real_escape_string($manufacturer) . "
        INNER JOIN models on individualaircraft.model_id = " . mysql_real_escape_string($model) . "
        WHERE maincategory_id = 1") or die(mysql_error());
        confirm_query($display);
        return $display;
}

然后将此代码更改为:

<td><?php 
$display = psdisplay($_POST['manu'], $_POST['model']);
while($result=mysql_fetch_array($display)){
    echo $result['generalinformation'];
}
?></td>

哦,如果这对您有用,请不要忘记添加一些验证并转义sql查询中的变量:)