我在PHP中有一個簡單的表單,有4個複選框。用戶可以選擇0-4個複選框,根據他們的選擇結果應該不同。使用選定複選框中的選項從mySQL檢索結果
基本上四個複選框代表大學的四個校區 - 校園A,B,C,D。並假設用戶選擇2個校區說A和C,那麼我想根據選擇查詢數據庫並檢索對應於這兩個校區A和C的課程。如果用戶只選擇一個校園,那麼我想檢索課程在那個單一的校園裏。
在mySQL上,我使用ID爲主鍵的以下模式(ID,校園名稱,城市,州)的位置表。此外,我有一個課程表架構作爲課程(ID,課程名稱,位置ID,Seatsleft)。 ID是主鍵,LocationID是引用Location表的ID的外鍵。
我的PHP代碼如下:
這是我的代碼的更新版本。
PHP表單複選框選擇不同的校園
<body>
<?php
require 'connection.php';
if(isset($_POST['formSubmit']))
{
$aCampus = $_POST['campus'];
if(empty($aCampus))
{
echo("<p>You didn't select any campus.</p>\n");
}
else
{
$N = count($aCampus);
echo("<p>You selected $N campus(s): ");
for($i=0; $i < $N; $i++)
{
echo($aCampus[$i] . " ");
}
echo("</p>");
}
}
function IsChecked($chkname,$value)
{
if(!empty($_POST[$chkname]))
{
foreach($_POST[$chkname] as $chkval)
{
if($chkval == $value)
{
return true;
}
}
}
return false;
}
$where="1";
if(!empty($_POST['campus'])){
foreach ($_POST['campus'] as $campus){
$where=" LocationID='". $campus."'";
}
}
//$query = "SELECT `Name` FROM `course` WHERE LocationID=1";
$query="SELECT `Name` FROM `course` WHERE 1 AND (".$where.")";
if ($query_run = mysql_query($query)) {
while ($query_row = mysql_fetch_assoc($query_run)) {
$coursename =$query_row['Name'];
echo $coursename. '<br/>';
}
} else {
echo mysql_error();
}
?>
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">
<p>
Which campus courses do you want to get access to?<br/>
<input type="checkbox" name="campus[]" value=1 />Campus A<br />
<input type="checkbox" name="campus[]" value=2 />Campus B<br />
<input type="checkbox" name="campus[]" value=3 />Campus C<br />
<input type="checkbox" name="campus[]" value=4 />Campus D
</p>
<input type="submit" name="formSubmit" value="Submit" />
</form>
</body>
</html>
我的問題是我怎麼從我的PHP形式的選擇和查詢數據庫來檢索只對選定的校園課程?
你應該瞭解的方法制得的語句(http://goo.gl/orrj0
上面的代碼將用於以下記錄工作)並使用[PDO](http://goo.gl/TD3xh)或[MySQLi](http://php.net/mysqli)。如果你不能決定哪些,[這篇文章](http://goo.gl/YXyWL)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/b2ATO)。另請參閱[爲什麼不應該在PHP中使用mysql函數?](http://goo.gl/J5jAo) – Daedalus