我有一个搜索表单,用户可以在其中选择搜索条件。
<form action="show_time_search3.php" method="post">
<p><strong>From Date</strong> (YYYY-MM-DD): <input type="datetime" name="day" size="10" maxlength="10" value="<?php if (isset($_POST['day'])) echo $_POST['day']; ?>" /></p>
<p><strong>To Date </strong> (YYYY-MM-DD): <input type="datetime" name="day2" size="10" maxlength="10" value="<?php if (isset($_POST['day2'])) echo $_POST['day2']; ?>" /></p>
<p><strong>Type:</strong> (Click on one or more) 
<strong>CL </strong><input type=checkbox name=type[] size="2" maxlength="2" value=CL>   
<strong>CO </strong><input type=checkbox name=type[] size="2" maxlength="2" value=CO>   
<strong>CS </strong><input type=checkbox name=type[] size="2" maxlength="2" value=CS>   
<p><strong>Student ID</strong>: <input type="text" name="studentid" size="4" maxlength="4" value="<?php if (isset($_POST['studentid'])) echo $_POST['studentid']; ?>" /></p>
<p><input type="submit" name="submit" value="Submit" /></p>
</form>
我希望在查询中包含名为type的复选框的结果,如下所示:
// Make the query:
$q = "SELECT (TIMEDIFF(endtime, startime)) as difference,
timeid,
DATE_FORMAT(day, '%b %d, %Y') as dia,
DATE_FORMAT(startime, '%r') as start,
DATE_FORMAT(endtime, '%r') as end,
type,
studentid from time
WHERE studentid='$id' AND type=$type AND day>='$day' and day<='$day2'";
$r = @mysqli_query ($dbc, $q); // Run the query.
我试过内爆,但得到转换数组错误消息。
我只想在我的查询中包含类型数组结果。
答案 0 :(得分:0)
如果您希望用户能够选择多种类型
<input type="checkbox" name="type[]" value="CL" checked="checked" />
将导致$_POST['type'][0]
存在值CL。
<input type="checkbox" name="type[]" value="CL" checked="checked" />
<input type="checkbox" name="type[]" value="CO" checked="checked" />
将导致$_POST['type'][0]='CL'
和$_POST['type'][1]='CO'
只要您检查isset($_POST['type'])
以避免错误,就可以内爆阵列
$where="WHERE studentid='$id'
AND type IN ('".implode("','", $_POST['type'])."')
AND day>='$day' and day<='$day2'";
应该有效,给予
type IN ('CL', 'CO')
但你真的需要清理那些$ _POSTs 。