2014-01-03 4 views
-1

У меня есть форма поиска, в которой пользователь будет выбирать критерии поиска.Используйте результат checkbox в запросе

<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>&nbsp(Click on one or more)&nbsp 
    <strong>CL&nbsp</strong><input type=checkbox name=type[] size="2" maxlength="2" value=CL>&nbsp &nbsp 
    <strong>CO&nbsp</strong><input type=checkbox name=type[] size="2" maxlength="2" value=CO>&nbsp &nbsp 
    <strong>CS&nbsp</strong><input type=checkbox name=type[] size="2" maxlength="2" value=CS>&nbsp &nbsp 
    <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> 

Я хочу, чтобы включить результат флажка под названием типа в моем запросе следующим образом:

// 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

Просто проверяя, хотите ли вы, чтобы пользователь мог выбрать еще один флажок или вы хотели использовать радиокнопки? – Popnoodles

+0

Я использовал флажок, потому что я хочу, чтобы пользователь мог выбрать более одного значения флажка, если они ищут более одного. – Joseb

ответ

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') 

b вам действительно нужно санировать эти $ _POSTs.

+0

я использовал приведенный выше код и получите: Синтаксическая ошибка: синтаксическая ошибка, неожиданный '$ _POST' (T_VARIABLE) в C: \ XAMPP \ HTDOCS \ Stupay \ show_time_search3.php на линии 39 Линия 39 является IN (» ".implode (" ',' "$ _POST ['type']).") – Joseb

+0

Жаль, что была опечатка, но вы могли бы посмотреть, где эта ошибка, и, если не знакомы с implode , посмотрел функцию вверх и смог увидеть, что было не так. – Popnoodles

+0

Посмотрите. В чем была опечатка? – Joseb

Смежные вопросы