вывод из базы

Тема в разделе "PHP", создана пользователем droit74, 7 май 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. droit74

    droit74 Постоялец

    Регистр.:
    20 сен 2009
    Сообщения:
    55
    Симпатии:
    0
    задача такая вывести из базы ассортимент суши сеты и роллы(море продукты) их нужно вывеси отсортированном виде (сначало один продукт потом другой и тд)
    я пишу :
    PHP:
     $result mysql_query("SELECT id,name,value,description,img_m,product FROM dishes  ",$db);
      
    $myrow mysql_fetch_array($result);
        for (
    $i=1$i<=3$i=$i+1){
        switch (
    $i){
          case 
    1$indif="sushi";
          case 
    2$indfi="set"
          case 
    3$indif="roll";
        }
        do
          if (
    $myrow[product]==$indif){
            
    printf("
        <table class='tablprod'>
          <tr>
           <td  class='tablprod2'><img src='%s' width='150' height='150'></td>
            <td  align='center'  class='tablprod3'>
             <table class='tablprod4'>
              <tr>
                <td><h2>%s </h2> </td>
              </tr>
              <tr>
                <td> <h3>%s руб.</h3></td>
              </tr>
              <tr>
                <td>%s</td>
              </tr>
            </table ></td>
          </tr>
        </table>"
    ,$myrow["img_m"],$myrow["name"],$myrow["value"],$myrow["description"]);
            }
        while (
    $myrow mysql_fetch_array($result));
        }
        
    ?>
    в строчке ($myrow[product]==$indif) почимуто не даёт истину а когда пишу ($myrow[product]=="set") выводит нармально
     
  2. artcosmic

    artcosmic

    Регистр.:
    16 сен 2008
    Сообщения:
    198
    Симпатии:
    161
    или
    может, я неверно понял?
     
    droit74 нравится это.
  3. droit74

    droit74 Постоялец

    Регистр.:
    20 сен 2009
    Сообщения:
    55
    Симпатии:
    0
    а как сделать чтобы он сначала выводил "sushi" потом "roll" и после "set"
     
  4. artcosmic

    artcosmic

    Регистр.:
    16 сен 2008
    Сообщения:
    198
    Симпатии:
    161
    Первое, что приходит в голову
    а потом
    но сначала надо сделать бекап, а то мало ли что такое изменение за собой потянет ;)
    ну или мучаться с ассоциативными массивами
     
  5. drawing4

    drawing4

    Регистр.:
    21 ноя 2008
    Сообщения:
    323
    Симпатии:
    37
    А при чем тут Update вообще?

    Если я правильно понял то группируется запросом, нужно потом всего лишь вывести его. Т.е. даже если построчно выводить массив, то выведет отдельно суши, отдельно роллы и т.д.
     
  6. artcosmic

    artcosmic

    Регистр.:
    16 сен 2008
    Сообщения:
    198
    Симпатии:
    161
    UPDATE там к тому, чтобы потом сделать запрос с сортировкой в нужном порядке. Но это плохое решение.
     
  7. FlashBlack

    FlashBlack Постоялец

    Регистр.:
    19 сен 2006
    Сообщения:
    77
    Симпатии:
    45
    один из вариантов построить массив продуктов:
    PHP:
        $sql mysql_query('SELECT id,name,value,description,img_m,product FROM dishes ORDER by name ASC');
        
    $products = array();
        while( 
    $row mysql_fetch_array($sql))
        {
            
    $products[$row['product']][] = array(
                
    'img_m' => $row['img_m'],
                
    'name' => $row['name'],
                
    'value' => $row['value'],
                
    'description' => $row['description'],
            );
        }
        
    $position = array('sushi''roll''set');
        foreach(
    $position as $product)
        {
            if (isset(
    $products$product ]))
                foreach (
    $products$product ] as $item)
                {
                    
    printf("
        <table class='tablprod'>
          <tr>
           <td  class='tablprod2'><img src='%s' width='150' height='150'></td>
            <td  align='center'  class='tablprod3'>
             <table class='tablprod4'>
              <tr>
                <td><h2>%s </h2> </td>
              </tr>
              <tr>
                <td> <h3>%s руб.</h3></td>
              </tr>
              <tr>
                <td>%s</td>
              </tr>
            </table ></td>
          </tr>
        </table>"
    $item['img_m'], $item['name'], $item['value'], $item['description']);
                }
        }
     
  8. sergioFerro

    sergioFerro Писатель

    Регистр.:
    11 май 2008
    Сообщения:
    7
    Симпатии:
    0
    1. у тебя несколько ошибок в коде(используй фреймворк он будет тебя поправлять сам:(
    PHP:
          case 1$indif="sushi";
    ---->      case 
    2$indfi="set"// опечатка
          
    case 3$indif="roll";
          if (
    $myrow[product]==$indif){ // для доступа к элементам всегда используй "" --> $myrow['product'], иначе настанет день когда проблем не огребешь
    2. Алгоритм понятен, но его не достаточно, так как по твоей схеме придется 3 раза пройтись по всей таблице в БД, используй встроену. сортировку в SQL
    PHP:
     $result mysql_query("SELECT id,name,value,description,img_m,product FROM dishes ORDER BY product",$db);
      
    $myrow mysql_fetch_array($result);
        do {
          
    printf("
        <table class='tablprod'>
          <tr>
           <td  class='tablprod2'><img src='%s' width='150' height='150'></td>
            <td  align='center'  class='tablprod3'>
             <table class='tablprod4'>
              <tr>
                <td><h2>%s </h2> </td>
              </tr>
              <tr>
                <td> <h3>%s руб.</h3></td>
              </tr>
              <tr>
                <td>%s</td>
              </tr>
            </table ></td>
          </tr>
        </table>"
    ,$myrow["img_m"],$myrow["name"],$myrow["value"],$myrow["description"]);
        } while (
    $myrow mysql_fetch_array($result));
        
    ?>
     
  9. UDAV

    UDAV

    Регистр.:
    22 июн 2007
    Сообщения:
    776
    Симпатии:
    153
    А если роллам задать четный id (или любое поле, в котором вручную будет добавляться нужный номер), а сушам не четный и выводить их по id -)
     
  10. jo0o00nyy

    jo0o00nyy Постоялец

    Регистр.:
    12 май 2010
    Сообщения:
    65
    Симпатии:
    27
    Используй код от FlashBlack, только я еще бы изменил его
    PHP:
        while( $row mysql_fetch_array($sql))
        {
            
    $products[$row['product']][] = array(
                
    'img_m' => $row['img_m'],
                
    'name' => $row['name'],
                
    'value' => $row['value'],
                
    'description' => $row['description'],
            );
        }
    на
    PHP:
    while( $row mysql_fetch_array($sql))
    {
       
    $products[$row['product']][] = $row;
    }
    P.S. в switch не забывай использовать break;
    PHP:
        switch ($i){
          case 
    1$indif="sushi";
             break;
          case 
    2$indfi="set"
             break;
          case 
    3$indif="roll";
             break;
        }
     
Статус темы:
Закрыта.