2010-04-28 120 views
0

我想根據用戶提交的選擇顯示數據庫表中的一些行。這裏是我的表單代碼複選框,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

回答

0

修正在我們的代碼

$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/>"; 
} 
} 
0

你的問題我也不清楚,你可能請嘗試以下內容 -

$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:此代碼未經測試