私はPHPで4つのチェックボックスを持つ単純なフォームを持っています。ユーザーは 0 ~ 4 個のチェックボックスを選択でき、その選択に基づいて結果が異なります。
基本的に、4 つのチェックボックスは大学の 4 つのキャンパス (キャンパス A、B、C、D) を表します。ユーザーがAとCの2つのキャンパスを選択した場合、選択に基づいてデータベースにクエリを実行し、これら2つのキャンパスAとCに対応するコースを取得したいとします。ユーザーが1つのキャンパスのみを選択した場合、コースを取得したいその単一のキャンパスで。
mySQL には、次のスキーマ (ID、キャンパス名、都市、州) を持つ Location テーブルがあり、ID は主キーです。また、スキーマが Course(ID,CourseName,LocationID,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 フォームからオプションを取得し、データベースにクエリを実行して、選択したキャンパスのみからコースを取得するにはどうすればよいですか?