我正在开展一个项目,我似乎无法做到这一点,无论我做什么。
我在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>
我好像弄得一团糟。我要感谢所有看过这个的人。
答案 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);
将根据您的条件筛选结果集中的行。