За последние 24 часа нас посетили 17633 программиста и 1672 робота. Сейчас ищет 1461 программист ...

Цикл с выводом чекбоксов

Тема в разделе "Сделайте за меня", создана пользователем php-newbie, 3 май 2015.

  1. php-newbie

    php-newbie Новичок

    С нами с:
    23 фев 2015
    Сообщения:
    13
    Симпатии:
    0
    Здравствуйте. Просидел всё утро так до меня и не допёрло как это реализовать. Может кто-то подскажет или покажет. В общем нужно сделать вывод чекбоксов таким образом, что бы сначала выводилось p_name, а под ним все value, которые существуют в данный момент среди существующих товаров. [​IMG] это схема БД.
    Собственно p_name я вывожу так( очень криво)
    Код (Text):
    1. $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");
    2.                 $query_par = mysql_query($sql_par) or die(mysql_error());
    3.                 while ($row_par=mysql_fetch_assoc($query_par))
    4.                 {
    5.                     echo '<p class="par-search-header"><h3>'.$row_par['p_name'].'</h3>';
    6.                                 }
    А вот как влепить сюда ещё цикл с корректным выводом чек боксов я пока не могу

    апдейт: с таким кодом выводит чек боксы, но не отсортировывает их к нужным p_name, а просто выводит все подряд под каждым p_name
    Код (Text):
    1. $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");
    2.                 $query_par = mysql_query($sql_par) or die(mysql_error());
    3.                 while ($row_par=mysql_fetch_assoc($query_par))
    4.                 {
    5.                     $ii+=1;
    6.                     $cur_name = $row_par['p_name'];
    7.                     echo '<p class="par-search-header"><h3>'.$row_par['p_name'].'</h3>
    8.                      <ul class="checkbox-par">';
    9.                    
    10.                    
    11.                     $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");
    12.                         if (mysql_num_rows($sql_pars) > 0 )
    13.                         {
    14.                         $row = mysql_fetch_array($sql_pars);
    15.                         do
    16.                         {
    17.                             $checked_par = $checked_par.$ii;
    18.                             $checked_par = "";
    19.                                  if ($_GET["value"])
    20.                                  {
    21.                                     if (in_array($row["id"],$_GET["value"]))
    22.                                     {
    23.                                         $checked_par = "checked";
    24.                                     }
    25.                                  }
    26.                                   echo '
    27.  
    28.                                 <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>';
    29.                                  }
    30.                                   while ($row = mysql_fetch_array($sql_pars)); 
    31.                                  
    32.                                 }
    33.                                 echo '</ul>';
    34.  
    35.  
    36.                 }
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. php-newbie

    php-newbie Новичок

    С нами с:
    23 фев 2015
    Сообщения:
    13
    Симпатии:
    0
    у меня проблема во втором запросе. мне нужно задать условие "p_name =*текущий p_name*". я это пытался сделать записывая в переменную $cur_name = $row_par['p_name']; но тогда вылазит ошибка типа "Warning: mysql_num_rows() expects parameter 1 to be resource,", но самое главное, что когда я сразу в запросе записываю p_name = "Тип разъёма", то оно всё выводит корректно. Таким образом получается, что неполадки появляются только при использовании переменной, но подругому я и не могу. Я проверял, в той переменной всегда записывается корректное значение, но в запросе оно почему-то не хочет функционировать. То есть $cur_name идентично строке 'Тип разъёма', но с переменной вылазит ошибка. я в смятении.


    апдейт, я лох, всё решилось тем, что стоило взять переменную в одинарные кавычки, когда писал её в запросе.