SELECT SUM数据排名和资源ID#9错误PHP

时间:2014-04-28 07:48:57

标签: php mysql select sum ranking

我有一个网站,其中登录的成员存储在名为“用户”的表格下

'用户'表

users_sales_guild_id | users_first_name | users_surname
555                  | Jane             | Smith
333                  | John             | Smith
111                  | Mike             | Myers

用户的销售数据包含在' sales_points'字段位于名为“sales_list”的单独表中。

'sales_list'表

sales_id |  users_sales_guild_id     |  sales_points    |  sales_entry_date
1        |  555                      |  50              |  2013-02-31 00:00:00
2        |  333                      |  30              |  2013-02-31 00:00:00
3        |  111                      |  10              |  2013-02-31 00:00:00
4        |  555                      |  50              |  2013-03-31 00:00:00
5        |  333                      |  30              |  2013-03-31 00:00:00
6        |  111                      |  10              |  2013-03-31 00:00:00

基本上我要做的是查询:

一个。计算' sales_points的总金额'对于来自' sales_list'

的每个用户

B中。列出100个用户,其中点数最多的用户位于顶部,然后排名下一个最高点,依此类推......

℃。我不是在排名后,只是订单本身。

使用下面的代码我可以让100位用户打印好,但是在打印时,我在“总点数”列中收到“资源ID#9”消息。有人可以帮忙吗?

我想要打印什么

Jane Smith   |   100
John Smith   |   60
Mike Myers   |   20

代码:

    <?php 
    require_once ('config.inc.php');

    $page_title = '';
    include ('header.html');

    if (!isset($_SESSION['users_id'])) {

      $url = 'http://' . $_SERVER['HTTP_HOST']
        . dirname($_SERVER['PHP_SELF']);
       // Check for a trailing slash.
       if ((substr($url, -1) == '/') OR (substr($url, -1) == '\\') ) {
            $url = substr ($url, 0, -1); // Chop off the slash.
       }
       // Add the page.
       $url .= 'login.php'; 

    ob_end_clean(); // Delete the buffer.
    header("Location: $url"); 
    exit(); // Quit the script.
    }?>

    <h1>Rankings</h1>

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

    $total = mysql_query("SELECT SUM(sales_points) FROM sales_list,users WHERE sales_list.users_sales_guild_id = users.users_sales_guild_id
    AND sales_entry_date
    BETWEEN '2013-10-01 00:00:00' AND '2013-11-30 23:59:59'
    " ); 

    $query = "SELECT us.users_id, us.dealership_id, us.users_sales_guild_id, us.users_first_name, us.users_surname, us.users_type, 
             de.dealership_id, de.users_dealer_name, de.class , de.region, de.state, de.users_dealer_code_id, de.users_dealer_code_new_id, de.users_model, de.pma
             FROM users AS us, dealerships AS de 
             WHERE us.dealership_id = de.dealership_id
             ORDER BY ’$total’ DESC 
             LIMIT 100";

    $result = @mysql_query ($query); 

    // Table header.
    echo '<table  width="680"cellpadding="5" cellspacing="1" style="font-size:12px;">
    <tr class="orangehead">
    <td align="center"><b>Member</b></td>
    <td align="center"><b>Title</b></td>
    <td align="center"><b>Dealer</b></td>
    <td align="center"><b>Category</a></b></td>
    <td align="center"><b>Dealer Code</a></b></td>
    <td align="center"><b>Total Points</a></b></td>
    </tr>';

    // Fetch and print all the records. echo '<td align="left"><strong>' . $row['sp_invoice_no'] . '</strong></td> ';

    $bg = '#ffffff'; // Set the background color.
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

        $bg = ($bg=='#eaeced' ? '#ffffff' : '#eaeced'); // Switch the background color.   New: ' . $row['users_sales_guild_new_id'] . '
        // $entries = floor($row['sp_entry_amount']/200);
        echo '<tr bgcolor="' . $bg . '">';           
        echo '<td align="left"><strong>' . $row['users_first_name'] . ' ' . $row['users_surname'] . '</strong></td> ';  
        echo '<td align="center">' . $row['users_type'] . ' </td>';     
        echo '<td align="center"> ' . $row['users_dealer_name'] . ' </td>';     
        echo '<td align="center"> ' . $row['class'] . ' </td>';     
        echo  '<td align="center"> ' . $row['users_sales_guild_id'] . ' </td>';     
        echo  '<td align="center"> ' . $total . '</td>';    
        echo  '</tr>
        ';
        }

    echo '</table>';

    mysql_free_result ($result); // Free up the resources.

    mysql_close(); // Close the database connection.    

    include ('footer.html'); // Include the HTML footer.
    ?>

3 个答案:

答案 0 :(得分:1)

你没有取得第一个结果。例如,将其作为数组(mysql_fetch_array())获取。

// Execute query
$total_query = mysql_query("SELECT SUM(sales_points)
                      FROM sales_list, users
                      WHERE sales_list.users_sales_guild_id = users.users_sales_guild_id
                      AND sales_entry_date
                      BETWEEN '2013-10-01 00:00:00' AND '2013-11-30 23:59:59'");

// Fetch result
$total = mysql_fetch_array($total_query);

答案 1 :(得分:0)

你回应这个:

$total = mysql_query("SELECT SUM(sales_points) FROM sales_list,users WHERE sales_list.users_sales_guild_id = users.users_sales_guild_id
    AND sales_entry_date
    BETWEEN '2013-10-01 00:00:00' AND '2013-11-30 23:59:59'
    " ); 

变量$total包含查询结果,即资源。您应该使用mysql_fetch_assoc或类似函数来提取结果本身。最好给SUM(sales_points)一个别名,即AS total_sales_points,这样您就可以轻松获取。

顺便说一句,mysql _ * - 扩展即将成为deprecated。好的选择包括MySQLiPDO

答案 2 :(得分:0)

$query = mysql_query("SELECT SUM(sales_points) as points FROM sales_list,users WHERE sales_list.users_sales_guild_id = users.users_sales_guild_id
    AND sales_entry_date
    BETWEEN '2013-10-01 00:00:00' AND '2013-11-30 23:59:59'
    " );
$row = mysql_fetch_object($query);
$total = $row->points;

您正在回显mysql资源,首先需要获取结果,然后您可以回显它们。