2015-01-10 3 views
1

Как присоединиться к этой таблице вместе, показывая заголовок только один раз? Я попытался вырвать из цикла while, но мне не повезло, может, я ошибся?php/MySQL - Как присоединиться к таблице «Корзина»

Вот мой код до сих пор:

<?php 
function cart() { 
foreach($_SESSION as $name => $value) { 
if ($value>0){ 
    if (substr($name, 0, 5)=='cart_') { 
     $id = substr($name, 5, (strlen($name)-5)); 
     $get = mysql_query('SELECT id, name, price FROM products WHERE id='.mysql_real_escape_string((int)$id));?> 
      <center> 
      <table class='menufinal' border=0 width=75%> 
      <th>Remove Item</th> 
      <th>Item Name</th> 
      <th>Item Price</th> 
      <th>Quantity</th> 
      <th>Line Total</th> 
     <?php while ($get_row = mysql_fetch_assoc($get)) { 
      $sub = $get_row['price']*$value;?> 
      <tr> 
      <td><?echo '<a href="cart.php?delete=' .$id.'"><img src="x.png"></a><br>'?></td> 
      <td><?echo $get_row['name']?></td> 
      <td><?echo '&pound' . number_format($get_row['price'], 2);?></td> 
      <td><?echo '<a href="cart.php?remove=' .$id. '"style="text-decoration:none">- </a>' .$value. '<a href="cart.php?add=' .$id. '"style="text-decoration:none"> +</a>' ?> </td> 
      <td> <?echo '&pound ' . number_format($sub, 2);?> </td> 
      </tr> 
      <? 
     } 
    } 
    if (empty($total)) { 

     if (empty($sub)) { 
      //do nothing 
     } else { 
      $total = $sub; 
     } 
    } else { 
     $total += $sub; 
    } 
} 
} 
if (!empty($total)){ 
    echo '<br>Total: &pound' . number_format($total, 2) . '<br>'; 
    echo '<div id="dorc"><p><a href="index.php"><img src="dishes.png" width="240" height="152"></a> <img src="spacer.png" width="200"> <a href="checkout.php"><img src="checkout.png" width="240" height="152"></a>'; 
} else { 
    header ('Location: index.php'); 
} 
} 

?> 

В настоящее время этот код выводит:

enter image description here

+0

Я не знаю, почему вы используете mysql_real_espacing все время вы можете увидеть код https: // GitHub. com/jewelhuq/Simple-php-crud-project/blob/master/dbconnect.php. Если вы следуете приведенному здесь коду, вам не нужно постоянно помещать mysql_real_espacing, он автоматически поместит mysql_real_espacing во все переменные, которые он получает. – jewelhuq

+0

Если возможно, не используйте mysql_query, используйте mysqli_insted или, если возможно, перейдите к pdo, но если pdo вам кажется трудным, попробуйте использовать redbeanphp, который построен на pdo. – jewelhuq

+0

Возможный дубликат [php/MySQL - отображение только одного заголовка для элементов] (http://stackoverflow.com/questions/27879328/php-mysql-displaying-only-one-header-for-items) – andrewsi

ответ

1

Ниже приведен исправленный код, создание таблицы перемещается за пределы контура.

Также заголовок таблицы был добавлен в tr для создания действительного html, а также собранных данных в переменную $ output, чтобы предотвратить ошибку с перенаправлением вашего местоположения, поскольку данные уже будут записаны в браузер (вы можете сильно различаться .? есть проблемы с этим, так как есть вероятность другого выхода до этой функции тележка() вызывается

<?php 
function cart() { 

    $output = ''; 
    $output .= '<center>'; 
    $output .= '<table class='menufinal' border=0 width=75%>'; 
    $output .= '<tr>'; 
    $output .= '<th>Remove Item</th>'; 
    $output .= '<th>Item Name</th>'; 
    $output .= '<th>Item Price</th>'; 
    $output .= '<th>Quantity</th>'; 
    $output .= '<th>Line Total</th>'; 
    $output .= '</tr>'; 

    foreach($_SESSION as $name => $value) { 
     if ($value>0){ 
      if (substr($name, 0, 5)=='cart_') { 
       $id = substr($name, 5, (strlen($name)-5)); 
       $get = mysql_query('SELECT id, name, price FROM products WHERE id='.mysql_real_escape_string((int)$id)); 
       while ($get_row = mysql_fetch_assoc($get)) { 
        $sub = $get_row['price']*$value; 
        $output .= '<tr>'; 
        $output .= '<td><a href="cart.php?delete=' .$id.'"><img src="x.png"></a><br></td>'; 
        $output .= '<td>' . $get_row['name'] . '</td>'; 
        $output .= '<td>&pound ' . number_format($get_row['price'], 2) . '</td>'; 
        $output .= '<td><a href="cart.php?remove=' .$id. '"style="text-decoration:none">- </a>' .$value. '<a href="cart.php?add=' .$id. '"style="text-decoration:none"> +</a></td>'; 
        $output .= '<td>&pound ' . number_format($sub, 2) . '</td>'; 
        $output .= '</tr>'; 
       } 
      } 
      if (empty($total)) { 

       if (empty($sub)) { 
        //do nothing 
       } else { 
        $total = $sub; 
       } 
      } else { 
       $total += $sub; 
      } 
     } 
    } 

    $output .= '</table>'; 

    if (empty($total)){ 
     header ('Location: index.php'); 
     exit;  
    } 

    $output .= '<br>Total: &pound' . number_format($total, 2) . '<br>'; 
    $output .= '<div id="dorc"><p><a href="index.php"><img src="dishes.png" width="240" height="152"></a> <img src="spacer.png" width="200"> <a href="checkout.php"><img src="checkout.png" width="240" height="152"></a>'; 

    echo $output; 
} 

?> 
+0

Работал отлично, спасибо вы! – Oscar

2

Измените сценарий следующим образом. Надеюсь, что он будет работать $ значение) {

if ($value>0){ 
     if (substr($name, 0, 5)=='cart_') { 

      $id = substr($name, 5, (strlen($name)-5)); 
      $get = mysql_query('SELECT id, name, price FROM products WHERE id='.mysql_real_escape_string((int)$id));?> 
if($i==0) 
{ 
       print(" 
       <center> 
       <table class='menufinal' border=0 width=75%> 
       <th>Remove Item</th> 
       <th>Item Name</th> 
       <th>Item Price</th> 
       <th>Quantity</th> 
       <th>Line Total</th> 
       </tr> 
       "); 
} 
      $i++; 
      while ($get_row = mysql_fetch_assoc($get)) { 
       $sub = $get_row['price']*$value;?> 
       <tr> 
       <td><?echo '<a href="cart.php?delete=' .$id.'"><img src="x.png"></a><br>'?></td> 
       <td><?echo $get_row['name']?></td> 
       <td><?echo '&pound' . number_format($get_row['price'], 2);?></td> 
       <td><?echo '<a href="cart.php?remove=' .$id. '"style="text-decoration:none">- </a>' .$value. '<a href="cart.php?add=' .$id. '"style="text-decoration:none"> +</a>' ?> </td> 
       <td> <?echo '&pound ' . number_format($sub, 2);?> </td> 
       </tr> 
       <? 
      } 
     } 
     if (empty($total)) { 

      if (empty($sub)) { 
       //do nothing 
      } else { 
       $total = $sub; 
      } 
     } else { 
      $total += $sub; 
     } 
    } 
    } 
    if (!empty($total)){ 
     echo '<br>Total: &pound' . number_format($total, 2) . '<br>'; 
     echo '<div id="dorc"><p><a href="index.php"><img src="dishes.png" width="240" height="152"></a> <img src="spacer.png" width="200"> <a href="checkout.php"><img src="checkout.png" width="240" height="152"></a>'; 
    } else { 
     header ('Location: index.php'); 
    } 
    } 

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