从db调用时,从表单中选择传递信息

时间:2012-07-17 05:59:38

标签: php mysql

我正在开展一个项目,我似乎无法做到这一点,无论我做什么。

我在db,year,manufacturer_id和models

中有3个表

我想根据用户提出的要求显示品牌和型号。即,如果用户选择Make as Ford,然后选择Year作为1942,则Model应该返回该年中生成的所有模型的列表。但是,如果有人告诉我哪里出错了,那它就行不通了。

我的数据库表格设置如下。

制造商 2列id(唯一)和制造商

今年 2列id(唯一)和年份

模型 4列id(唯一)年份(对应于年份id表)manufacturer_id(对应于制造商id表)和模型。

我使用的代码如下。

 <tr>
<td align="right" label for='formyear'>Year: </td>
<td><select name="formyear">
<?php 
$sql="SELECT id,year FROM year";
$result =mysql_query($sql);
while ($data=mysql_fetch_assoc($result)){
?>
<option value ="<?php echo $data['id'] ?>" ><?php echo $data['year'] ?></option>
<?php } ?>
</select></td>
</tr>
<tr>
<td align="right" label for='formmake'>Make: </td>
<td><select name="formmake" id="formmake" onchange="return populateModel(this.value);">
<?php 
$sql="SELECT id,manufacturer FROM manufacturer";
$result =mysql_query($sql);
while ($data=mysql_fetch_assoc($result)){
?>
<option value ="<?php echo $data['id'] ?>" ><?php echo $data['manufacturer'] ?></option>
<?php } ?>
</select>
</td>
</tr>
<tr>
<td align="right" label for='formmodel'>Model: </td>
<td><select name="formmodel" id="formmodel">
<?php 
$sql="SELECT id,manufacturer_id,model FROM model WHERE year='1'";
$result =mysql_query($sql);
while ($data=mysql_fetch_assoc($result)){
?>
<option value ="<?php echo $data['id'] ?>" ><?php echo $data['model'] ?></option>
                                <?php } ?>

                                </select>

我好像弄得一团糟。我要感谢所有看过这个的人。

2 个答案:

答案 0 :(得分:0)

如果您认真使用PDO。

说过我会把年份放在模型表中。是的,你会有一个给定模型的多个条目,但是有一个单独的年表意味着你    将该年与所有相关模型联系起来,    显然每种型号的年份不同。只需添加一年字段,     make ID

上的INNER JOIN

我不是一个汽车人,但可能比几年少,        在这种情况下,将模型ID添加到年表中        少参赛。

如果您使用years table表示其他内容,     即用户提交信息的表格...使用年份ID     在模型表和INNER JOIN中都是三个。

这一点仍然是相同的......你有多个        模型表行,每年一个

答案 1 :(得分:0)

对于年份以及制造商下拉列表,在更改时,获取在javascript函数中选择的年份和制造商的值(如果未设置则假定为空)。

然后,为了获取相关列,您可以使用上述值作为参数向php文件发送ajax调用。在该php文件中,您只需根据发送的数据检查模型:

$year=(isset($_REQUEST['year']) && $_REQUEST['year']!='')?$_REQUEST['year']:'';
$mfr_id=(isset($_REQUEST['mfr_id']) && $_REQUEST['mfr_id']!='')?$_REQUEST['mfr_id']:'';

$sql="SELECT id,model FROM model";
if($year!='')
{
    $sql.=" WHERE year=".$year;
    if($mfr_id!='')
        $sql.=" and manufacturer_id=".$mfr_id;
}
else
{
    if($mfr_id!='')
        $sql.=" WHERE manufacturer_id=".$mfr_id;
}
$result =mysql_query($sql);

将根据您的条件筛选结果集中的行。