2016-08-30 7 views
1

Уплотненный «в то время как» цикл выполняется только один раз, только один DIV отображается, не может найти какие-либо ошибки, ошибки в «error_log». Не стесняйтесь предлагать.Вложенные в то время как цикл выполняется только один раз

Мне нужно второе соединение sql, потому что $ connectToStore делает соединение mysqli с отдельной базой данных.

$ пунктов выглядит 1-2,2-5,9-1

Я проверил и DIV, который отображается использует данные, которые в первой строке таблицы

PHP

include("connect.php"); 

$sql = "SELECT * FROM sp_tickets WHERE user_id='foo'"; 
$sqlresult = mysqli_query($connect, $sql); 
if (mysqli_num_rows($sqlresult) > 0) { 
    while ($row = mysqli_fetch_array($sqlresult)) { 

    $sqlStore = "SELECT * FROM transactions WHERE order_id='".$row['order_id']."'"; 
    $connectToStore = mysqli_connect("localhost", "root", "root", "root_db"); 
    $sqlStoreDBResult = mysqli_query($connectToStore, $sqlStore); 

    while ($rowTr = mysqli_fetch_array($sqlStoreDBResult)) { 

     $id_str_array = $rowTr['items']; 
     $id_str_array = rtrim($id_str_array, ","); 
     $id_str_array = explode(',', $id_str_array); 
     foreach ($id_str_array as $key => $value) { 
      $id_quantity_pair = explode("-", $value); // Uses Hyphen(-) as delimiter to separate product ID from its quantity 
      $product_id = $id_quantity_pair[0]; // Get the product ID 

      $sqlProduct = "SELECT * FROM products WHERE id='$product_id'"; 
      $sqlresult = mysqli_query($connectToStore, $sqlProduct); 
      while ($pp_row = mysqli_fetch_array($sqlresult)) { 

       $tickets .= '<div class="holder"> 
       <div data-ticket="' . $ticket . '" class="ticket"> 
        <div class="ticket-left"> 
         <span class="product-ticket left-span">' . $pp_row['product_name'] . ' ' . $pp_row['product_platform'] . ' ' . $pp_row['product_type'] . ' ' . $pp_row['product_region'] . '</span> 
         <span class="ticket-no left-span">Ticket No. ' . $row['ticket_id'] . '</span> 
         <span class="order-no left-span">Order No. ' . $row['order_id'] . '</span> 
         <span class="left-span">Transaction No. ' . $rowTr['txn_id'] . '</span> 
         <span class="product-region left-span">Region: ' . $pp_row['product_region'] . '</span> 
        </div> 
        <div class="ticket-right"> 
         <span class="created">Created: ' . $row['date'] . '</span> 
        </div> 
        <div class="ticket-bottom"> 
         <div class="bottom-holder"> 
          <span class="details"><span class="subject-txt">Category: </span>' . $row['category'] . '</span> 
          <span class="details"><span class="subject-txt">Subject: </span>' . $row['subject'] . '</span> 
          <span class="details desc">"' . $row['description'] . '"</span> 
         </div> 
        </div> 
       </div> 
       <div class="removeticketcontainer"> 
        <span class="removeticket">X</span> 
       </div> 
      </div>'; 
       } 
      } 
     } 
    } 
} 
+0

@The Один и только ChemistryBlob Да, это уникальный – EasternEuropean

+0

Где '$ tickets' объявлен? – Linesofcode

+0

, если вы еще не определили '$ tickets' somehwere выше' $ tickets. = '..' 'должен выкинуть ошибку? И откуда берется билет? – Jeff

ответ

0

Похоже, ваш внешний, пока только одна запись выборки

while ($row = mysqli_fetch_array($sqlresult)) { 
. . . . 
} 

Избавиться от самого внешнего, а если вы только получать одну запись ...

$row = mysqli_fetch_array($sqlresult);// remove closing } too 
0

решил. Ответ принадлежит @ckimbrell. «Проблема заключается в том, что вы перезаписываете переменную $ sqlresult с новым результатом, который возвращает только 1 строку. Попытайтесь изменить это в вложенном цикле».

include("connect.php"); 

$sql = "SELECT * FROM sp_tickets WHERE user_id='foo'"; 
$sqlresult = mysqli_query($connect, $sql); 

$connectToStore = mysqli_connect("localhost", "root", "root", "root_db"); 

if (mysqli_num_rows($sqlresult) > 0) { 
while ($row = mysqli_fetch_array($sqlresult)) { 

$sqlStore = "SELECT * FROM transactions WHERE order_id='".$row['order_id']."'"; 
$sqlStoreDBResult = mysqli_query($connectToStore, $sqlStore); 

while ($rowTr = mysqli_fetch_array($sqlStoreDBResult)) { 

    $id_str_array = $rowTr['items']; 
    $id_str_array = rtrim($id_str_array, ","); 
    $id_str_array = explode(',', $id_str_array); 
    foreach ($id_str_array as $key => $value) { 
     $id_quantity_pair = explode("-", $value); // Uses Hyphen(-) as delimiter to separate product ID from its quantity 
     $product_id = $id_quantity_pair[0]; // Get the product ID 

     $sqlProduct = "SELECT * FROM products WHERE id='$product_id'"; 
     $sqlresult2 = mysqli_query($connectToStore, $sqlProduct); 
     while ($pp_row = mysqli_fetch_array($sqlresult2)) { 

      $tickets .= '<div class="holder"> 
      <div data-ticket="' . $ticket . '" class="ticket"> 
       <div class="ticket-left"> 
        <span class="product-ticket left-span">' . $pp_row['product_name'] . ' ' . $pp_row['product_platform'] . ' ' . $pp_row['product_type'] . ' ' . $pp_row['product_region'] . '</span> 
        <span class="ticket-no left-span">Ticket No. ' . $row['ticket_id'] . '</span> 
        <span class="order-no left-span">Order No. ' . $row['order_id'] . '</span> 
        <span class="left-span">Transaction No. ' . $rowTr['txn_id'] . '</span> 
        <span class="product-region left-span">Region: ' . $pp_row['product_region'] . '</span> 
       </div> 
       <div class="ticket-right"> 
        <span class="created">Created: ' . $row['date'] . '</span> 
       </div> 
       <div class="ticket-bottom"> 
        <div class="bottom-holder"> 
         <span class="details"><span class="subject-txt">Category: </span>' . $row['category'] . '</span> 
         <span class="details"><span class="subject-txt">Subject: </span>' . $row['subject'] . '</span> 
         <span class="details desc">"' . $row['description'] . '"</span> 
        </div> 
       </div> 
      </div> 
      <div class="removeticketcontainer"> 
       <span class="removeticket">X</span> 
      </div> 
     </div>'; 
      } 
     } 
    } 
} 
} 
Смежные вопросы