0

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

我在 db、year、manufacturer_id 和 models 中有 3 个表

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

我的数据库表设置如下。

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

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

模型 4 列 id(唯一) year(对应于 year 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>

我似乎把这件事弄得一团糟。我要感谢所有看到这里的人的帮助。

4

2 回答 2

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);

结果集中的行将根据您的条件进行过滤。

于 2012-07-18T06:06:43.897 回答
0

如果您认真使用PDO。

话虽如此,我会将年份放在模型表中。是的,对于给定的模型,您将有多个条目,但是要为年份设置单独的表意味着您必须将该年份与所有相关模型相关联,显然每个模型的年份不同。INNER JOIN只需在品牌 ID 上添加年份字段

我不是汽车人,但可能比年少模型,在这种情况下,将模型 ID 添加到年表将减少条目。

如果您将年份表用于其他用途,即用户提交信息的表单...在模型表中使用年份 ID,并在所有三个表中使用 INNER JOIN。

不过,要点保持不变...您有多个模型表行,每年一个

于 2012-07-17T06:19:13.763 回答