订单列表/while循环php问题 [英] Order list/ while loop php issue

查看:45
本文介绍了订单列表/while循环php问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在php中为admin用户整理了一个基本的订单列表,用于检查登录用户下的订单内容.

I have put together a basic order list for admin users in php for checking order contents placed by logged in users.

此脚本的目的是检索订单详细信息(商品、数量、价格)以及用户的名字和姓氏(其中Order for:"是指).

The aim of this script is to retrieve the order details (item, quantity, price) as well as the user’s first name and surname (where ‘Order for:’ is).

下面的脚本一切正常,因为它检索订单(如果有多个订单,还有订单)以及它/他们的商品、数量和价格.

The script below does everything ok in that it retrieves the order (and orders if there are more than one) and it’s/their item, quantity and price.

但是,它不显示用户的姓名.

However, it doesn’t display the user’s name and surname.

我知道问题在于我尝试显示名称的位置在 while 循环之外,但我有点卡在它应该放置的位置.有什么建议么?代码如下:

I know the problem is that where I am trying to display the name is outside the while loop but Im a little stuck in where it should sit. Any suggestions? Code is below:

    <?php 
    $page_title = 'View Individual Order';
    include ('includes/header.html');

    // Check for a valid user ID, through GET or POST.
   if ( (isset($_GET['id'])) && (is_numeric($_GET['id'])) )
    { // Accessed through view_users.php   
     $id = $_GET['id'];

    } elseif ( (isset($_POST['id'])) && (is_numeric($_POST['id'])) )
   { // Form has been submitted.   
    $id = $_POST['id'];
} else { // No valid ID, kill the script.
    echo '<h1 id="mainhead">Page Error</h1>
    <p class="error">This page has been accessed in error.</p><p><br /><br /></p>';
    include ('./includes/header.html'); 
    exit();
}
?>

<h1>Order Details</h1>

<?php
require_once ('database.php'); // Connect to the db.

// Retrieve the user's, order and product information.
$query = "SELECT us.users_id, us.users_sales_id, us.users_first_name, us.users_surname, us.users_dealer_name, 
             ord.order_id, ord.users_id, ord.total, ord.order_date,  
             oc.oc_id, oc.order_id, oc.products_id, oc.quantity, oc.price,
             prd.products_id, prd.products_name, prd.price      
         FROM users AS us, orders AS ord, order_contents AS oc, products AS prd  
         WHERE ord.order_id=$id
         AND us.users_id = ord.users_id
         AND ord.order_id = oc.order_id
         AND oc.products_id = prd.products_id    
         ";

$result = mysql_query ($query) or die(mysql_error());

if (mysql_num_rows($result)) { // Valid user ID, show the form.

    echo    '<p>Order for:<strong>' . $row[2] . ' ' . $row[3] . ' </strong> </p>
            <table border="0" style="font-size:11px;" cellspacing="1" cellpadding="5">
                <tr class="top">
                <td align="left"><b>Product</b></td>
                <td align="center"><b>Price</b></td>
                <td align="center"><b>Qty</b></td>
                </tr>';

    $bg = '#dddddd'; // Set the background color.

    while($row = mysql_fetch_array($result, MYSQL_NUM)) { // WHILE loop start

    $bg = ($bg=='#eaeced' ? '#dddddd' : '#eaeced');

    echo        '<tr bgcolor="' . $bg . '">';

    echo        '<td align="left">' . $row[15] . '</td>
            <td align="center">' . $row[13] . ' pts</td>
            <td align="center">' . $row[12] . '</td>
            </tr>';

    echo        '';         

                }// end of WHILE loop

        echo '</table>
            <p> Here:</p>   
            <br><br>
            <p><a href="view-all-orders.php"> << Back to Orders</a></p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            <p>&nbsp;</p>
            ';

} else { // Not a valid user ID.
    echo '<h1 id="mainhead">Page Error</h1>
    <p class="error">This page has been accessed in error.</p><p><br /><br /></p>';   
}

mysql_close(); // Close the database connection.
?>

<p>Footer here</p>

<?php
include ('./includes/footer_admin_user.html'); // Include the HTML footer.
?>

推荐答案

一种方法是先抓取该行,然后使用 do/while 循环,而不仅仅是基本的 while 循环.像这样:

One way you could do it is grab the row first, and then use a do/while loop instead of just a basic while loop. Like this:

if (mysql_num_rows($result)) { // Valid user ID, show the form.

    /*********** I added this line ***********/
    $row = mysql_fetch_array($result, MYSQL_NUM);

    echo    '<p>Order for:<strong>' . $row[2] . ' ' . $row[3] . ' </strong> </p>
            <table border="0" style="font-size:11px;" cellspacing="1" cellpadding="5">
                <tr class="top">
                <td align="left"><b>Product</b></td>
                <td align="center"><b>Price</b></td>
                <td align="center"><b>Qty</b></td>
                </tr>';

    $bg = '#dddddd'; // Set the background color.

    /*********** I changed this from a while loop to a do-while loop ***********/
    do { // WHILE loop start

    $bg = ($bg=='#eaeced' ? '#dddddd' : '#eaeced');

    echo        '<tr bgcolor="' . $bg . '">';

    echo        '<td align="left">' . $row[15] . '</td>
            <td align="center">' . $row[13] . ' pts</td>
            <td align="center">' . $row[12] . '</td>
            </tr>';

    echo        '';         

    } while($row = mysql_fetch_array($result, MYSQL_NUM)); // end of WHILE loop

这篇关于订单列表/while循环php问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆