php-mysql :使下拉列表工作


php-mysql : Making drop down list work

我想用下拉菜单显示数据库中的一些数据。数据(图片、链接、标题、数字)将分别显示在一个小div 中。

我删除了重复的数据,并制作了下拉列表。下拉列表还具有我想要的值。但是我的代码似乎不起作用。我想知道问题是我无法将数据的"回显"与我的休息代码连接起来,这样我就可以让我的代码工作。

这是我的代码:

$query="SELECT DISTINCT * FROM products GROUP BY category";
$result = mysql_query($query);
echo "<select name='"category'">";
while ($row = mysql_fetch_array($result)) {
  echo "<option value='" . $row['category'] . "'>" . $row['category'] ."</option>";
}
echo "</select>" . "</br>";

这是我代码的其余部分:

mysql_select_db("myapp",$con);
$result = mysql_query("SELECT * FROM products WHERE category = " . $row['category'], $con);
while($row = mysql_fetch_array($result))
{
  $mycategory = $row['category'];
  $myimage = '<img src="'.$row['image'].'" />';
  echo  "<div id='appear'>" . $myimage . '<br />' . $row['title'] . "<br  />"  
    . "<p style='color:red;' >" . "price: " . $row['price'] . "€" . "</p>"
    . '<a   href="image.php?id='.$row['id'].'">'
    . "details" . "<a>" . "</div>" ;  
}
mysql_close($con);

假设数据库已连接。我也只能使用php和mysql。

我假设你想让用户在第一页上选择类别,然后向他展示适合他选择的所有数据。如果要在同一页面中实时显示数据,则当用户选择新类别时,一切都会变得更加复杂。

但是让我们坚持使用简单的版本。到目前为止,您的代码不提供的是一个导航,该导航调用下一个 php 传输类别 id。您需要将第一个 php 代码框定在一个 html-form 元素中,该元素包含第二个 php 文件作为操作目标。例如:

<form action='part2.php' method='POST'>
<?php
  /* ... your first code snippet */
?>
<input type='submit' value='Display category' />
</form>

当用户单击"显示类别"按钮时,将调用您的第二个脚本,您可以通过全局变量 $_POST['category'] 访问所选类别字符串。

但要小心!在实际场景中,不要简单地将每 _POST 美元或 _GET 美元收到的数据发送到数据库,潜在攻击者可以简单地操纵它。谷歌跨站点脚本,如果你对这个话题感兴趣,但由于这是一个学校项目,我怀疑它对你有什么重要性,只是之后不要在线托管它!

但回到你的问题。您的第二个代码应该在你简单地替换后工作

$result = mysql_query("SELECT * FROM products WHERE category=".$row['category']."",$con);

$result = mysql_query("SELECT * FROM products WHERE category=".$_POST['category']."",$con);

在你截取的第二个发布的代码中,你的 echo 语句中有一个小错误,由于 stackoverflow 代码突出显示,很容易跟踪:你在开始 -tag 前面缺少一个简单的引号 ('),并且你的结束 -tag 缺少反斜杠(应该是,正如你肯定知道的)。如果这在你的原始代码中是错误的,而不仅仅是复制粘贴错误,php 无论如何都应该提到这一点!

希望对您有所帮助,祝您的项目好运!

> <</p>

?php
 $query="SELECT DISTINCT * FROM products GROUP BY category";
 $result = mysql_query($query);
echo "<select name='"category'" onchange='"form.submit()'">";

while ($row = mysql_fetch_array($result)) {
    echo "<option value='" . $row['category'] . "'>" . $row['category'] 
 ."</option>";
}
echo "</select>" . "</br>";
?>

它将帮助您在更改下拉列表的值时更改内容。

对于div,请使用以下代码。

<?php
if(isset($_POST['category']) && !empty($_POST['category']))
{
//rest of your div codes lie here
}
?>