我是PHP編碼新手。我有不同的偏好讓用戶從我的html頁面選擇。我想檢索用戶選擇的所有複選框,並顯示其中包含所有這些首選項的酒店名稱。例如,如果用戶選擇「屋頂」,「海邊」和「游泳池」複選框,則mytrip.db數據庫中相應列中放置它們的賓館必須一次全部檢索並且得到顯示。我的代碼只需要一個複選框值,並僅顯示酒店名稱。我想顯示包含所有首選項的酒店。 我的代碼如下:如何從PHP中一次選擇多個複選框的基礎上從SQLite 3數據庫檢索值?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>PHP: Get Values of Multiple Checked Checkboxes</title>
<link rel="stylesheet" href="css/php_checkbox.css" />
</head>
<body>
<div class="container">
<div class="main">
<h2>PHP: Get Values of Multiple Checked Checkboxes</h2>
<select id="mySelect" name="list">
<option selected>Select a place</option>
<option value="1">Lahore</option>
<option value="2">Dubai</option>
<option value="3">New York</option>
<option value="4">Canberra</option>
<option value="5">London</option>
</select>
<form action="php_checkbox.php" method="post">
<label class="heading">Select Your Preferences:</label>
<input type="checkbox" name="check_list[]" value="Swimming pool"><label>Swimming pool</label>
<input type="checkbox" name="check_list[]" value="Roof top"><label>Roof top</label>
<input type="checkbox" name="check_list[]" value="Sea side"><label>Sea side</label>
<input type="submit" name="submit" Value="Submit"/>
</html>
<?php include 'checkbox_value.php';?>
</form>
</div>
</div>
</body>
</html>
checkbox_value.php代碼如下:
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('mytrip.db');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
}
if(isset($_POST['submit'])){
if(!empty($_POST['check_list'])) {
// Counting number of checked checkboxes.
$checked_count = count($_POST['check_list']);
echo "You have selected following ".$checked_count." option(s): <br/>";
$prefarray=array();
$i=0;
// Loop to store and display values of individual checked checkbox.
foreach($_POST['check_list'] as $selected) {
$prefarray[$i]= $selected;
echo "<p>".$prefarray[$i] ."</p>";
echo "<p>".$selected ."</p>";
$i++;
}
echo "<p>".$i ."</p>";
$sql =<<<EOF
SELECT hotel_name from Dubai WHERE $prefarray[i]==1 AND $prefarray[i-1]==1 ;
EOF;
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC)){
echo "<p> <br /></p>\n";
echo "\n". $row['hotel_name'] . "\n";
}
$db->close();
echo "<br/><b>Note :</b> <span>Similarily, You Can Also Perform CRUD Operations using These Selected Values.</span>";
}
else{
echo "<b>Please Select Atleast One Option.</b>";
}
}
?>
這段代碼的問題是,它僅顯示一個複選框值,如果我使用查詢
SELECT hotel_name FROM Dubai WHERE $selected==1
我試着保存通過製作數組「prefarray」選中的複選框值。但是當我執行我在checkbox_value.php代碼中發佈的查詢時,它會給出錯誤「Prefarray中的未定義偏移3」。我希望數據庫查詢只具有用戶選擇的複選框值。例如,如果用戶選擇2出三個複選框的然後我的查詢應該看起來像
SELECT hotel_name FROM Dubai WHERE $checkbox==1 AND $checkbox2==1;
任何幫助,以實現二者的這些任務可以理解的!
運行代碼我得到「警告後:SQLite3的: :query():無法編寫語句:1,在"附近; ":語法e第35行checkbox_value.php中的錯誤「。並且在fetchArray()函數中。請指導我如何實現它? – MinjaNinja
嘗試'$ sql =「SELECT hotel_name FROM Dubai WHERE」。$ where where。「;」;' – xReprisal
仍然收到相同的警告和錯誤。 – MinjaNinja