我正在做一个项目,无论我做什么,我似乎都做不到这一点。
我有3个表在数据库,年,manufacturer_id和模型
我想显示的基础上,由用户提出的要求和模型。也就是说,如果用户选择Make作为福特,然后选择year作为1942,那么Model应该返回该年生产的所有车型的列表。但是它不起作用,有人能告诉我哪里出了问题吗?
我的数据库表设置如下。
制造商2列id (唯一)和制造商
年份2列id (唯一)和年份
模型4列id (它是唯一的)、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>我好像把这事搞得一团糟。我想要感谢所有关注这篇文章的人的帮助。
发布于 2012-07-17 14:19:14
如果您是认真的,请使用PDO。
话虽如此,我还是会把年份放在模型表中。是的,对于给定的模型,您将有多个条目,但是对于年份有一个单独的表,这意味着您必须将该年份与所有相关模型相关联,显然每个模型的年份都不同。只需添加一个年份字段,在make ID上添加INNER JOIN
我不是一个汽车爱好者,但可能比年份的车型更少,在这种情况下,将车型Id添加到年表中的条目会更少。
如果您正在使用年份表做其他事情,例如用户提交信息的表单……在模型表中使用年份ID并内部连接这三个表。
不过这一点还是一样的。您有多个模型表行,每年一个
发布于 2012-07-18 14:06:44
对于年份和制造商下拉列表,在更改时,获取在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);结果集中的行将根据您的条件进行筛选。
https://stackoverflow.com/questions/11516793
复制相似问题