2014-11-02 2 views
2

[EDIT 3]Выбрать таблицу и петля внутри цикла

Я попробовал коды сильфонные, но получает только одну строку из основной таблицы.

<?php 
include ("config.php"); 
$results = $mysqli->query 
("SELECT transaction_id FROM orders_list WHERE customer_name = 'Al Kasih' ORDER BY id");    
if ($results) { 
    while($obj = $results->fetch_object()) { 
     echo '<div>'; 
     echo '<ul>';    
     echo '<li>'.$obj->transaction_id.'</li>'; 
       $thisthat=$obj->transaction_id;   
       $results = $mysqli->query 
          ("SELECT transaction_id, items, quantity, one_product_price FROM orders_history 
           WHERE transaction_id = '$thisthat'");   
       if ($results) { 
        while($obj = $results->fetch_object()) { 
         echo '<ul>'; 
         echo '<li>'.$obj->items.'</li>'; 
         echo '<li>'.$obj->quantity.'</li>'; 
         echo '<li>'.$obj->one_product_price.'</li>'; 
         echo '</ul>'; 
        } 
       }          
     echo '</div>'; 
     echo '</ul>'; 
    } 
} 
?> 

В таблице order_list он покажет всю историю заказов от всех клиентов.

----------------------------------------------------------------------- 
id_cart   products  quantity  invoices  status 
----------------------------------------------------------------------- 
    0001   this    2    $20  delivered 
    0001   that    1    $20  pending 
    0001   those    2    $20  approved 
    0002   this    2    $20  delivered 
    0002   that    1    $20  pending 
    0002   those    2    $20  approved 
    0003   this    2    $20  delivered 
    0003   that    1    $20  pending 
    0003   those    2    $20  approved 
    0004   this    2    $20  delivered 
    0004   that    1    $20  pending 
    0004   those    2    $20  approved 
----------------------------------------------------------------------- 

В то время как в таблице member_carts, он будет показывать только по имени заказчика и их уникальный id_cart.

------------------------------------------- 
id_cart   customer  payment  
------------------------------------------- 
    0001   Klaudia   creditcard  
    0002   Klaudia   paypal   
    0003   MyFather  Transfer  
    0004   MyMother  Transfer  
------------------------------------------- 

На странице счета клиента по имени Клаудия, я хочу, чтобы показать все истории заказов на основе id_cart

----------------------------------------------------------------------- 
id_cart   products  quantity  invoices  status 
----------------------------------------------------------------------- 
       this    2    $20  delivered 
    0001   that    1    $20  pending 
       those    2    $20  approved 
----------------------------------------------------------------------- 
       this    2    $20  delivered 
    0002   that    1    $20  pending 
       those    2    $20  approved 
----------------------------------------------------------------------- 

Как сделать/выбрать в запросе, так что результат учетная запись страницы Klaudia вернется так. Я все еще учусь, как присоединиться к таблице.

Примечание: cart_id будет уникальным, потому что это фактически скрытый ввод даты/месяца/года/часа/секунды/миллисекунды, который будет отправлен в таблицу базы данных.



//////// [ОБНОВЛЕНО] ///////////////

Fisrt Я собираюсь выбрать таблицу

SELECT order_list.id_cart, 
     order_list.products, 
     order_list.quantity, 
     order_list.invoices, 
     order_list.status, 
FROM order_list, member_carts 
WHERE order_list.id_cart = member_carts.id_cart 
AND member_carts.customer = 'Klaudia'; 

А затем получить запросы:

$id_cart = $row['$id_cart']; 
$products = $row['$products']; 
$quantity = $row['$quantity']; 
$invoices = $row['$invoices']; 
$status = $row['$status']; 

А теперь сложная часть, как кольцую

<table width="780" border="1"> 
 
    <tr> 
 
    <td width="134">id_cart</td> 
 
    <td width="173">products</td> 
 
    <td width="155">quantity</td> 
 
    <td width="135">invoices</td> 
 
    <td width="149">status</td> 
 
    </tr> 
 
    <tr> 
 
    <td rowspan="3"> ?php echo $id_cart ? </td> 
 
    <td> ?php echo $products ? </td> 
 
    <td> ?php echo $quantity ? </td> 
 
    <td> ?php echo $invoices ? </td> 
 
    <td> ?php echo $status ? </td> 
 
    </tr> 
 
    <tr> 
 
    <td> looping of products </td> 
 
    <td> looping of quantity </td> 
 
    <td> looping of invoices </td> 
 
    <td> looping of status </td> 
 
    </tr> 
 
    <tr> 
 
    <td> looping of products </td> 
 
    <td> looping of quantity </td> 
 
    <td> looping of invoices </td> 
 
    <td> looping of status </td> 
 
    </tr> 
 

+0

вы хотите выбрать и использовать его с помощью PHP? – cuSK

+0

@cuSK Да Сначала я хочу выбрать его, чтобы показать его через php – klaudia

+0

Подождите, я готовлю php-код, который вам подходит. – cuSK

ответ

1

SQL запрос:

SELECT order_list.id_cart, 
    order_list.products, 
    order_list.quantity, 
    order_list.invoices, 
    order_list.status, 
    FROM order_list, member_carts 
    WHERE order_list.id_cart = member_carts.id_cart 
    AND member_carts.customer = 'Klaudia'; 

Этот запрос будет решить вашу проблему ...

+0

Можете ли вы помочь мне, как не зацикливать id_cart, а только зацикливать остальные. Ваш SQL-запрос работает как прелести. Но теперь мне нужно больше. Благодарю. – klaudia

+0

Я обновляю свой вопрос. Посмотрите на это! – klaudia

1

запроса для получения ваших данных:

SELECT  * 
FROM  order_list ol 
JOIN  member_carts mc 
    ON  ol.id_cart = mc.id_cart 
WHERE  customer = 'Klaudia' 
ORDER BY ol.id_cart 

// обновить

Для CALCulate строк в корзине вы можете использовать этот код:

$cart_items_count = array(); 
for($result as $row) { 
    if(!isset($cart_items_count[$row['cart_id']]) { 
    $cart_items_count[$row['cart_id']] = 0; 
    } 
    $cart_items_count[$row['cart_id']]++; 
} 

Для данных дисплея:

<table width="780" border="1"> 
    <tr> 
    <td width="134">id_cart</td> 
    <td width="173">products</td> 
    <td width="155">quantity</td> 
    <td width="135">invoices</td> 
    <td width="149">status</td> 
    </tr> 
    <?php $current_cart_id = null; ?> 
    <?php foreach($results as $row): ?> 
    <?php 
    $id_cart = $row['$id_cart']; 
    $products = $row['$products']; 
    $quantity = $row['$quantity']; 
    $invoices = $row['$invoices']; 
    $status = $row['$status']; 
    ?> 
    <tr> 
    <?php if($id_cart != $current_cart_id): ?>   
     <td rowspan="<?php echo $cart_items_count[$id_cart] ?>"><?php echo $id_cart ?></td> 
     <?php $current_cart_id = $id_cart; ?> 
    <?php endif; ?> 
    <td> ?php echo $products ? </td> 
    <td> ?php echo $quantity ? </td> 
    <td> ?php echo $invoices ? </td> 
    <td> ?php echo $status ? </td> 
    </tr> 
    <?php foreach; ?> 
</table> 
+0

Большое спасибо. Я проверю его, если он сработает. – klaudia

+0

krynio, посмотрите на мой вопрос с обновлением, пожалуйста! – klaudia

+0

klaudia вы должны рассчитать количество продуктов в каждой корзине, чтобы отображать таблицу, и в цикле вы должны иметь текущий cart_id. При изменении cart_id вы должны отображать информацию о корзине. – krynio

0

и вариант без "присоединиться":

SELECT ol.id_cart 
     ,ol.products 
     ,ol.quantity 
     ,ol.invoices 
     ,ol.status 
    FROM order_list ol 
     ,member_carts mc 
WHERE ol.id_cart = mc.id_cart 
    AND mc.customer = 'Klaudia' 
+0

Джоро, посмотрите на мой вопрос о обновлении, пожалуйста! – klaudia

0

Попробуйте этот запрос:

SELECT  * 
FROM  order_list AS ol 
WHERE  ol.id_cart IN (
           SELECT id_cart 
           FROM member_carts 
           WHERE customer = 'Klaudia' 
          ) 
ORDER BY id_cart ASC 
+0

Юрген Шнайдер, посмотрите на мой вопрос с обновлением, пожалуйста! – klaudia

Смежные вопросы