Генерим из базы чекбоксы (кол-во разное может быть) после того как сгенерились мы видим: <form name="form1" method="post" action=""> <input type="checkbox" name="checkbox2" value="1"> <input type="checkbox" name="checkbox3" value="2"> <input type="checkbox" name="checkbox" value="3"> </form> так вот, потом после того как юзер отметит чекбоксы, как всё передать в запрос к БД? т.е. SELECT * WHERE а тут данные из чекбоксов (допусти 1 и 3) как это генерить?
<input type="checkbox" name="checkbox[]" value="1"> <? $arr=array_map("intval",$_POST['checkbox']); $query.="WHERE id in (".implode(",",$arr).")"; ?> То ли я на точно такой же вопрос отвечал не далее пары дней назад, то ли у меня дежавю
Код (Text): <form name="form1" method="post" action=""> <input type="checkbox" name="checkbox[1]" value="1"> <input type="checkbox" name="checkbox[2]" value="2"> <input type="checkbox" name="checkbox[3]" value="3"> <input type='submit' value='Переслать данные всех чекбоксов'> </form>
Так, не поленился, зделал "копи-паст", что получилось: PHP: <html> <head> <meta http-equiv="Content-Language" content="en" /> <meta name="GENERATOR" content="Zend Studio" /> <meta http-equiv="Content-Type" content="text/html; charset=cp1251" /> <title>test</title> </head> <body bgcolor="#FFFFFF" text="#000000" link="#FF9966" vlink="#FF9966" alink="#FFCC99"> <form name="form1" method="post" action=""> <input type="checkbox" name="checkbox[1]" value="1"> <input type="checkbox" name="checkbox[2]" value="2"> <input type="checkbox" name="checkbox[3]" value="3"> <br> <input type='submit' value=' Послать '> </form> </body> </html> <?php if (!isset($_POST['checkbox'])) die(); $arr=array_map("intval",$_POST['checkbox']); $query.="WHERE id in (".implode(",",$arr).")"; echo $query; ?>
Что конкретно не получается? Объясните пожалуйста! Включите обработку ошибок Код (Text): error_reporting(E_ALL); Делайте просмотр HTML кода и кидайте сюда: будем разбираться
Правильно ли: <?php include("config.php"); $connect = mysql_connect("$user_hostname", "$user_username", "$user_password"); mysql_select_db("$user_database", $connect); if (isset($_POST['checkbox'])) { $arr=array_map("intval",$_POST['checkbox']); $query.="WHERE id_lesson in (".implode(",",$arr).")"; echo $query; } else { echo ("<form method=\"POST\">"); $sql = mysql_query("SELECT * FROM lessons", $connect); while ($tablerows_1 = mysql_fetch_row($sql)) { //теперь в цикле для каждой полученной строки сделаем вывод echo "<input type=\"checkbox\" name=\"checkbox[$tablerows_1[0]]\" value=\"$tablerows_1[0]\">$tablerows_1[1]</option> <BR>"; } echo ("<input type=\"submit\" name=\"Submit\" value=\"Submit\"> </form>"); } mysql_close($connect); ?>
Что значит "правильно ли"? Неужели читателям форума проще в уме исполнить этот код, чем тебе ткнуть один раз мышкой, и увидеть собственными глазами?! Что за манера задавать вопросы, ответ на которые можно получить самостоятельно?
Попробуйте вот так: PHP: <?php include("config.php"); $connect = mysql_connect("$user_hostname", "$user_username", "$user_password"); mysql_select_db("$user_database", $connect); if (isset($_POST['checkbox'])){ $arr = array_map("intval",$_POST['checkbox']); $query = ' WHERE id_lesson in ('.implode(',',$arr).')'; echo ($query); } else { echo ('<form method="POST">'); $sql = mysql_query('SELECT * FROM lessons'); while ($tablerows_1 = mysql_fetch_row($sql)){ //теперь в цикле для каждой полученной строки сделаем вывод echo '<input type="checkbox" name="checkbox['.$tablerows_1[0].']" value="'.$tablerows_1[0].'">'.$tablerows_1[1].'<br>'; } echo ('<input type="submit" name="Submit" value="Submit"></form>'); } mysql_close($connect); ?> Обратите внимание на ковычки ' и " (они по разному работают) Ну и сообщите о результатах: интересует сгенерированный HTML и ваше изречение о том что вас не устраивает
topas позволю себе предположить, что ты старательно позаменял все двойные кавычки на одинарные в целях повышения производительности. я прав?
привычка твоя неудачная. никакой разницы нету, ачеловека ты только с толку сбиваешь, добавляя ему ещё неизвестности. хтмл выводить эхом - и вовсе моветон. в любых кавычках. если уж где и стоило трогать кавычки в этом коде, так это в mysql_connect
<?php include("config.php"); $connect = mysql_connect("$user_hostname", "$user_username", "$user_password"); mysql_select_db("$user_database", $connect); $arr = array_map("intval",$_POST['checkbox']); $query = ' WHERE lessons.id_lesson in ('.implode(',',$arr).') AND users.school=school.id_school AND main.user_id=users.id AND main.lesson_id=lessons.id_lesson ORDER BY main.date'; // готовим текст запроса $result = 'SELECT `main`.`id`, `main`.`date`, `users`.`login`, `users`.`name`, `school`.`name_school`, `users`.`class`, `users`.date_reg`, `lessons`.`name_lesson`, `main`.`mark` FROM `main`, `users`, `school`, `lessons`'.$query; // подготовили текст запроса or die($query.'<br>'.$mysql_error());//запрос while ($row = mysql_fetch_assoc($result)) { { // echo("<BR> $tablerows[7]"); } mysql_close($connect); ?>
Попробуй так: PHP: <?php include("config.php"); $connect = mysql_connect("$user_hostname", "$user_username", "$user_password"); mysql_select_db("$user_database", $connect); $arr = array_map("intval",$_POST['checkbox']); $query = 'SELECT `main`.`id`, `main`.`date`, `users`.`login`, `users`.`name`, `school`.`name_school`, `users`.`class`, `users`.`date_reg`, `lessons`.`name_lesson`, `main`.`mark` '; $query .= ' FROM `main`, `users`, `school`, `lessons`'; $query .= ' WHERE lessons.id_lesson in ('.implode(',',$arr).') AND users.school=school.id_school AND main.user_id=users.id AND main.lesson_id=lessons.id_lesson '; $query .= ' ORDER BY main.date'; $result = mysql_query($query) or die($query.'<br>'.mysql_error()); while ($row = mysql_fetch_row($result)){ echo("<BR> $row[7]"); } mysql_close($connect); ?>