За последние 24 часа нас посетили 19483 программиста и 1610 роботов. Сейчас ищет 961 программист ...

При выводе в цикле, выводится по три раза вместо одного

Тема в разделе "PHP для новичков", создана пользователем LAlexS, 7 дек 2011.

  1. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Не могу понять где косяк.

    PHP:
    1. $order_list = mysql_query("SELECT tp.id, tp.model_name, tp.parent_brand, tp.image_main, tb.brand_name, tb.bid, tc.synonym, ts.product, ts.qty, ts.price, ts.type, ts.cart, ts.order_id FROM product_info tp, brands tb, categories tc, users tu, shopping_cart ts WHERE tp.parent_brand = tb.bid AND tp.parent_categorie = tc.id AND tp.id = ts.product AND ts.order_id = '$oid'") or die("Error2! ".mysql_error());
    2.  
    3. echo "<table>";
    4.  
    5. while ($order = mysql_fetch_array ($order_list))
    6.     {
    7.     $summ = $order['price'] * $order['qty'];
    8.     $sum_sum += $summ;
    9.     echo "<tr>
    10.     <td><img src='../img_mid/".$order['image_main']."' width='100' height='150'></td>
    11.     <td>".$order['synonym']." ".$order['brand_name']." ".$order['model_name']."</td>
    12.     <td>".$order['type']."</td>
    13.     <td>".$order['qty']."</td>
    14.     <td>".$order['price']."</td>
    15.     <td>".$summ."</td>
    16.     </tr>";
    17.  
    18.     }
    19.  
    20. echo "</table>";
    21. echo $sum_sum;
    Выводит три раза одно и тоже

    HTML:
    1.     <td><img src='../img_mid/pc_1024_1022.jpg' width='100' height='150'></td>
    2.     <td>Комплект Pierre&nbsp;Cardin 1024/1022</td>
    3.     <td></td>
    4.     <td>1</td>
    5.     <td>1860</td>
    6.     <td>1860</td>
    7.  
    8.     </tr><tr>
    9.     <td><img src='../img_mid/pc_1024_1022.jpg' width='100' height='150'></td>
    10.     <td>Комплект Pierre&nbsp;Cardin 1024/1022</td>
    11.     <td></td>
    12.     <td>1</td>
    13.     <td>1860</td>
    14.     <td>1860</td>
    15.  
    16.     </tr><tr>
    17.     <td><img src='../img_mid/pc_1024_1022.jpg' width='100' height='150'></td>
    18.     <td>Комплект Pierre&nbsp;Cardin 1024/1022</td>
    19.     <td></td>
    20.     <td>1</td>
    21.     <td>1860</td>
    22.     <td>1860</td>
    23.  
    24.     </tr></table>5580
    25.  
    26. </td></tr></table>
     
  2. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    SQL-запрос возвращает 3 строки, я прав? Дело в соединении таблиц, стоит использовать явные соединения таблиц, в данном случае LEFT JOIN'а или RIGHt JOIN'а не хватает...
     
  3. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Mr. T

    Все верно!

    но теперь пишет ошибку синтаксиса (((
    PHP:
    1.  
    2. $order_list = mysql_query("SELECT tp.id, tp.model_name, tp.parent_brand, tp.image_main, tb.brand_name, tb.bid, tc.synonym, ts.product, ts.qty, ts.price, ts.type, ts.cart, ts.order_id FROM product_info tp left join brands tb left join categories tc left join users tu left join shopping_cart ts on tp.parent_brand = tb.bid AND tp.parent_categorie = tc.id AND tp.id = ts.product AND ts.order_id = '$oid'") or die("Error2! ".mysql_error());
     
  4. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Джойны записаны неверно...
     
  5. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Вроде разобрался с синтаксисом, но все-равно пишет ошибку

    PHP:
    1. $order_list = mysql_query("SELECT tp.id, tp.model_name, tp.parent_brand, tp.image_main, tb.brand_name, tb.bid, tc.synonym, ts.product, ts.qty, ts.price, ts.type, ts.cart, ts.order_id FROM product_info AS tp LEFT JOIN brands AS tb ON (tp.parent_brand = tb.bid) LEFT JOIN categories AS tc ON (tp.parent_categorie = tc.id) LEFT JOIN shopping_cart AS ts (tp.id = ts.product) WHERE ts.order_id = '$oid'") or die("Error2! ".mysql_error());
     
  6. Denis.Y

    Denis.Y Активный пользователь

    С нами с:
    8 авг 2011
    Сообщения:
    145
    Симпатии:
    0
    Адрес:
    Россия, Самарская область
    Код (Text):
    1. LEFT JOIN shopping_cart AS ts (tp.id = ts.product) WHERE ts.order_id = '$oid'")
    Пропустил ON

    Нужно:

    Код (Text):
    1.  
    2.  $order_list = mysql_query("SELECT tp.id, tp.model_name, tp.parent_brand, tp.image_main, tb.brand_name, tb.bid, tc.synonym, ts.product, ts.qty, ts.price, ts.type, ts.cart, ts.order_id FROM product_info AS tp LEFT JOIN brands AS tb ON (tp.parent_brand = tb.bid) LEFT JOIN categories AS tc ON (tp.parent_categorie = tc.id) LEFT JOIN shopping_cart AS ts ON (tp.id = ts.product) WHERE ts.order_id = '$oid'") or die("Error2! ".mysql_error());
     
  7. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Denis.Y

    Огромное спасибо за твою внимательность!!!