复选框,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,哈哈。

任何其他的想法,我可以尝试?

+0

我可以看到表receipename(或recipename)的结构吗? – webbiedave 2010-04-28 04:42:17

+0

变量是错误拼写在您的代码示例:foreach($ _POST ['variabble']作为$成分) – Fenton 2010-04-28 06:34:33

+0

嗨Sohnee,感谢您发现!我改变了它,但仍然没有区别。 webbiedave我的桌子叫水果,我有两列,一个叫做receipename,另一个叫做成分。成分由苹果,香蕉,橙子等组成。 每行都有一个receipename(即黑莓摇)和成分(上面列出的一个或多个)。如果在复选框中选中的成分等于数据库中的记录/条目,我希望显示食谱名称。那有意义吗?? – smokey20 2010-04-28 07:06:12

修正在我们的代码

$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:此代码未经测试