复选框,SQL选择语句和PHP
问题描述:
我想根据用户提交的选择显示数据库表中的一些行。这里是我的表单代码复选框,SQL选择语句和PHP
<form action="choice.php" method="POST" >
<input type="checkbox" name="variable[]" value="Apple">Apple
<input type="checkbox" name="variable[]" value="Banana">Banana
<input type="checkbox" name="variable[]" value="Orange">Orange
<input type="checkbox" name="variable[]" value="Melon">Melon
<input type="checkbox" name="variable[]" value="Blackberry">Blackberry
从我的理解我将这些值放入一个称为变量的数组中。 我的两个栏被称为receipe名称和成分(每个成分下的领域可以存储一些水果)。我想要做的是,如果选择了多个复选框,则会显示相应的名称。
这是我的php代码。
<?php
// Make a MySQL Connection
mysql_connect("localhost", "*****", "*****") or die(mysql_error());
mysql_select_db("****") or die(mysql_error());
$variable=$_POST['variable'];
foreach ($variable as $variablename)
{
echo "$variablename is checked";
}
$query = "SELECT receipename FROM fruit WHERE $variable like ingredients";
$row = mysql_fetch_assoc($result);
foreach ($_POST['variabble'] as $ingredients)
echo $row[$ingredients] . '<br/>';
?>
我对php很新,只是希望显示数据,我不需要对它执行任何操作。我已经尝试了很多选择语句,但是我无法获得任何显示结果。我的数据库连接是好的,它确实打印出哪些变量被检查。
非常感谢提前。
编辑:
感谢回答一百万。但是,我试图纠正我自己的代码=空白页和上述两个解决方案==空白页也。 GRRRR!这是我尝试的一个解决方案。
<?php
// Make a MySQL Connection
mysql_connect("localhost", "", "") or die(mysql_error());
mysql_select_db("") or die(mysql_error());
$query = "SELECT receipename FROM fruit ";
$cond = "";
foreach($variable as $varname)$cond .= " $varname like 'ingredients' OR";
$cond = substr_replace($cond, '', -2);
$query .= " WHERE $cond";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
echo $row['receipename'],'<br />';
}
我也试过
<?php
// Make a MySQL Connection
mysql_connect("localhost", "24056", "project99") or die(mysql_error());
mysql_select_db("24056db2") or die(mysql_error());
$variable=$_POST['variable'];
foreach ($variable as $variablename)
{
$query = "SELECT receipename FROM horse WHERE ingredients = '".$variablename."'";
while($row = mysql_fetch_assoc($query))
{
echo $row['receipename']."<br/>";
}
}
?>
我想另一种方式说,如果该复选框变量等于成分列下的记录,我想打印出记录的receipename。 在这里我几乎感到困惑mysellf,哈哈。
任何其他的想法,我可以尝试?
答
修正在我们的代码
$query = "SELECT receipename FROM fruit WHERE $variable like ingredients";
$row = mysql_fetch_assoc($result);
难道你看到上面的区别?
地方 “$查询” 代替 “$结果” mysql_fetch_assoc($结果)
我的解决方案
$variable=$_POST['variable'];
foreach ($variable as $variablename)
{
$query = "SELECT receipename FROM fruit WHERE ingredients = '".$variablename."'";
while($row = mysql_fetch_assoc($query))
{
echo $row['receipename']."<br/>";
}
}
答
你的问题我也不清楚,你可能请尝试以下内容 -
$query = "SELECT receipename FROM fruit ";
$cond = "";
foreach($variable as $varname)$cond .= " $varname like 'ingredients' OR";
$cond = substr_replace($cond, '', -2);
$query .= " WHERE $cond";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
echo $row['receipename'],'<br />';
}
否TE:此代码未经测试
我可以看到表receipename(或recipename)的结构吗? – webbiedave 2010-04-28 04:42:17
变量是错误拼写在您的代码示例:foreach($ _POST ['variabble']作为$成分) – Fenton 2010-04-28 06:34:33
嗨Sohnee,感谢您发现!我改变了它,但仍然没有区别。 webbiedave我的桌子叫水果,我有两列,一个叫做receipename,另一个叫做成分。成分由苹果,香蕉,橙子等组成。 每行都有一个receipename(即黑莓摇)和成分(上面列出的一个或多个)。如果在复选框中选中的成分等于数据库中的记录/条目,我希望显示食谱名称。那有意义吗?? – smokey20 2010-04-28 07:06:12