Здравствуйте. Просидел всё утро так до меня и не допёрло как это реализовать. Может кто-то подскажет или покажет. В общем нужно сделать вывод чекбоксов таким образом, что бы сначала выводилось p_name, а под ним все value, которые существуют в данный момент среди существующих товаров. это схема БД. Собственно p_name я вывожу так( очень криво) Код (Text): $sql_par = ("SELECT p_id, brands.b_id, categories.cat_id, p_name, pr_id, value, p_names.par_id FROM products, brands, categories, par_s, p_names WHERE par_s.par_id = p_names.par_id and products.b_id = brands.b_id and products.cat_id = categories.cat_id and categories.cat_id = $cat and p_id = pr_id GROUP BY p_name ORDER BY p_name ASC"); $query_par = mysql_query($sql_par) or die(mysql_error()); while ($row_par=mysql_fetch_assoc($query_par)) { echo '<p class="par-search-header"><h3>'.$row_par['p_name'].'</h3>'; } А вот как влепить сюда ещё цикл с корректным выводом чек боксов я пока не могу апдейт: с таким кодом выводит чек боксы, но не отсортировывает их к нужным p_name, а просто выводит все подряд под каждым p_name Код (Text): $sql_par = ("SELECT p_id, brands.b_id, categories.cat_id, p_name, pr_id, value, p_names.par_id FROM products, brands, categories, par_s, p_names WHERE par_s.par_id = p_names.par_id and products.b_id = brands.b_id and products.cat_id = categories.cat_id and categories.cat_id = $cat and p_id = pr_id GROUP BY p_name ORDER BY p_name ASC"); $query_par = mysql_query($sql_par) or die(mysql_error()); while ($row_par=mysql_fetch_assoc($query_par)) { $ii+=1; $cur_name = $row_par['p_name']; echo '<p class="par-search-header"><h3>'.$row_par['p_name'].'</h3> <ul class="checkbox-par">'; $sql_pars = mysql_query("SELECT p_id, id, brands.b_id, categories.cat_id, p_name, pr_id, value, p_names.par_id FROM products, brands, categories, par_s, p_names WHERE value !='' and par_s.par_id = p_names.par_id and products.b_id = brands.b_id and products.cat_id = categories.cat_id and categories.cat_id = $cat and p_id = pr_id GROUP BY value ORDER BY value DESC"); if (mysql_num_rows($sql_pars) > 0 ) { $row = mysql_fetch_array($sql_pars); do { $checked_par = $checked_par.$ii; $checked_par = ""; if ($_GET["value"]) { if (in_array($row["id"],$_GET["value"])) { $checked_par = "checked"; } } echo ' <li><input '.$checked_par.' type="checkbox" name="par'.$ii.'[]" value="'.$row["id"].'" id="checkpar'.$row["id"].'" /><label for="checkpar'.$row["id"].'">'.$row["value"].'</label></li>'; } while ($row = mysql_fetch_array($sql_pars)); } echo '</ul>'; }
Покажи данные виде array из которых хочешь сформировать html, и укажи какие данные/поведение ты хочешь получить от чекбоксов. Ну и примеры с чекбоксами http://runnable.com/VTSNl5PkmAYuVsGs/ http://runnable.com/VTUxcxHr5sJO0Anz/
у меня проблема во втором запросе. мне нужно задать условие "p_name =*текущий p_name*". я это пытался сделать записывая в переменную $cur_name = $row_par['p_name']; но тогда вылазит ошибка типа "Warning: mysql_num_rows() expects parameter 1 to be resource,", но самое главное, что когда я сразу в запросе записываю p_name = "Тип разъёма", то оно всё выводит корректно. Таким образом получается, что неполадки появляются только при использовании переменной, но подругому я и не могу. Я проверял, в той переменной всегда записывается корректное значение, но в запросе оно почему-то не хочет функционировать. То есть $cur_name идентично строке 'Тип разъёма', но с переменной вылазит ошибка. я в смятении. апдейт, я лох, всё решилось тем, что стоило взять переменную в одинарные кавычки, когда писал её в запросе.