За последние 24 часа нас посетили 158377 программистов и 2579 роботов. Сейчас ищут 1510 программистов ...

Выборка товаров из бд

Тема в разделе "PHP и базы данных", создана пользователем Ric, 9 фев 2011.

  1. Ric

    Ric Активный пользователь

    С нами с:
    9 фев 2011
    Сообщения:
    97
    Симпатии:
    2
    Здраствуйте, при написание дипломки(интернет магазин) столкнулся с проблемой при выводе товаров из базы данных.
    Вот код:
    PHP:
    1. <?php
    2.  
    3. require_once('include_fns.php');
    4. display_standart_menu();
    5. $catid=$_GET['catid'];
    6. do_html_header($name);
    7.  $name = get_category_name($catid);
    8.  
    9.  echo "<table align=left border=1><tr><td>";
    10.  $cat_array=get_categories();
    11.  display_categories($cat_array);
    12.  echo "</td></tr></table>";
    13.  
    14.  
    15.   // Извлечь из базы данных информацию о цветке
    16.   $flow_array = get_flow($catid);
    17.  
    18.   display_flow($flow_array);
    19.   do_html_footer();
    20.  
    21. ?>
    22.  
    в этом коде извлекаетсья товар из бд по выбранной категории, также имеються функции get_flow() and display_flow() которые представлены ниже:
    функция get_flow()
    PHP:
    1.  
    2. function get_flow($catid)
    3. {
    4.    // Выполняет запрос в базу данных книг определенной категории
    5.    if (!$catid || $catid=='')
    6.      return false;
    7.    
    8.    $conn = db_connect();
    9.    $query = "select * from tovar where catid='$catid'";
    10.    $result = @$conn->query($query);
    11.    if (!$result)
    12.      return false;
    13.    $num_flow = @$result->num_rows;
    14.    if ($num_flow ==0)
    15.       return false;
    16.    $result = db_result_to_array($result);
    17.    return $result;
    18. }
    функция display_flow()
    PHP:
    1.  
    2. <?php
    3.  function display_flow($flow_array)
    4. {
    5.  
    6.   // Выводит все товары, переданные в массиве
    7.   if (!is_array($flow_array))
    8.   {
    9.      echo '<br />В настоящий момент нет доступных книг в этой категории<br />';
    10.   }
    11.   else
    12.   {
    13.     // Создать таблицу
    14.  
    15.     foreach ($flow_array as $row)
    16.     {
    17.            echo '<table width = \"100%\" border = 1 >';
    18.       $url = 'show_flow.php?artikul='.($row['artikul']);
    19.       echo '<tr><td>';
    20.       if (@file_exists('tovar/'.$row['artikul'].'.jpg'))
    21.       {
    22.         $title = '<img src=\'tovar/'.($row['artikul']).'.jpg\' border=0 />';
    23.         do_html_url($url, $title);
    24.       }
    25.       else
    26.       {
    27.         echo '&nbsp;';
    28.       }
    29.       echo '</td></tr><tr><td align=center>';
    30.       $title =  $row['name'];
    31.       $price=$row['price'];
    32.       do_html_url($url, $title,$price);
    33.       echo '</td></tr><tr><td><font face="Arial" color=green size=5>'.$price." руб".'</font>';
    34.     echo '</td></tr></table>';
    35. }
    36.   }
    37. }
    38.  ?>
    также имееться функция указанная в get_flow
    PHP:
    1.  
    2. <?php
    3. function db_result_to_array($result)
    4. {
    5.    $res_array = array();
    6.  
    7.    for ($count = 0; $row = $result->fetch_assoc(); $count++)
    8.      $res_array[$count] = $row;
    9.  
    10.    return $res_array;
    11. }
    12.  
    13. ?>
    14.  
    проблема в том, что каждый товар начинаеться с новой строки, а хотелось бы, чтобы в каждой строке было как минимум по 3 товара.
    http://s002.radikal.ru/i199/1102/b7/fe46904516fd.jpg ссылка на то что выводит.
     
  2. runner

    runner Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    Это из-за того, что каждый товар выводится в свою таблицу
    Как вариант можно выводить в ячейки общей таблицы с тремя столбцами. При выводе нужно проверять, нужен ли переход на новую строку

    Вот примерный код вместо строк 14-34 функции display_flow()
    PHP:
    1.  
    2. $n=sizeof($flow_array );
    3. $i=0;
    4. echo "<table>";
    5. foreach ($flow_array as $row)
    6. {
    7.     if($i%3==0)
    8.     {
    9.         echo "<tr>";
    10.     }
    11.     echo '<td>';
    12.     echo '<table width = \"100%\" border = 1 >';
    13.     $url = 'show_flow.php?artikul='.($row['artikul']);
    14.     echo '<tr><td>';
    15.     if (@file_exists('tovar/'.$row['artikul'].'.jpg'))
    16.     {
    17.       $title = '<img src=\'tovar/'.($row['artikul']).'.jpg\' border=0 />';
    18.       do_html_url($url, $title);
    19.     }
    20.     else
    21.     {
    22.       echo ' ';
    23.     }
    24.     echo '</td></tr><tr><td align=center>';
    25.     $title =  $row['name'];
    26.     $price=$row['price'];
    27.     do_html_url($url, $title,$price);
    28.     echo '</td></tr><tr><td><font face="Arial" color=green size=5>'.$price." ???".'</font>';
    29.     echo '</td></tr></table>';
    30.     echo '</td>';
    31.     if(($i!=0 and $i%3==0) or $i==$n-1)
    32.     {
    33.         echo "</tr>";
    34.     }
    35.     $i++;
    36. }
    37. echo "</table>";
    38.  
     
  3. Ric

    Ric Активный пользователь

    С нами с:
    9 фев 2011
    Сообщения:
    97
    Симпатии:
    2
    runner
    Спасибо большое! Помогло!:)