如何将基于文本的角色扮演游戏中的相同库存项目组合到一行


how to combine same inventory items in a text based role playing game to one row

我运行一个基于文本的游戏,在库存中我得到这样的行:

迷你火箭筒x10000
迷你火箭筒x10000
迷你火箭筒x10000
迷你火箭筒x10000
迷你火箭筒x10000
迷你火箭筒x10000

我想知道如何使它,使项目组合,以显示一行这样

迷你火箭筒x10000000

每项只有一行。下面是页面代码:

    <?php
    session_start();
    require "global_func.php";
    if ($_SESSION['loggedin'] == 0)
    {
        header("Location: login.php");
        exit;
    }
    $userid = $_SESSION['userid'];
    require "header.php";
    $h = new headers;
    $h->startheaders();
    include "mysql.php";
    global $c;
    $is =
            mysql_query(
                    "SELECT u.*,us.* FROM users u LEFT JOIN userstats us ON                 u.userid=us.userid WHERE u.userid=$userid",
                    $c) or die(mysql_error());
    $ir = mysql_fetch_array($is);
    check_level();
    $fm = money_formatter($ir['money']);
    $cm = money_formatter($ir['crystals'], '');
    $lv = date('F j, Y, g:i a', $ir['laston']);
    $h->userdata($ir, $lv, $fm, $cm);
    $h->menuarea();
    function item_give($user, $itemid, $qty, $notid=0)
    {
      if($notid > 0)
      {
        $q=mysql_query("SELECT * FROM inventory WHERE inv_userid={$user} and                 inv_itemid={$itemid} AND inv_id != {$notid}");
              }
              else
              {
        $q=mysql_query("SELECT * FROM inventory WHERE inv_userid={$user} and         inv_itemid={$itemid}");
      }
      if(mysql_num_rows($q) > 0)
      {
        $r=mysql_fetch_array($q);
        mysql_query("UPDATE inventory SET inv_qty=inv_qty+{$qty} WHERE inv_id=        {$r['inv_id']}");
      }
      else
      {
        mysql_query("INSERT INTO inventory (inv_itemid, inv_userid, inv_qty) VALUES         ({$itemid}, {$user}, {$qty})");
      }
    }
    $inv =
            mysql_query(
                    "SELECT iv.*,i.*,it.* FROM inventory iv LEFT JOIN items i ON         iv.inv_itemid=i.itmid LEFT JOIN itemtypes it ON i.itmtype=it.itmtypeid WHERE iv.inv_userid=        {$userid} ORDER BY i.itmtype ASC, i.itmname ASC",
                    $c);
    if (mysql_num_rows($inv) == 0)
    {
        print "<b>You have no items!</b>";
    }
    else
    {
        print
                "<font color=white><b>Your items are listed below.</b><br />
    <table width=100%><tr style='background-color:gray;'><font color=white>        <th>Item</th><th><font color=white>Sell Value</th><font color=white><th>Total Sell         Value</th><font color=white><th>Links</th></tr></font>";
        $lt = "";
        while ($i = mysql_fetch_array($inv))
        {
            if ($lt != $i['itmtypename'])
            {
                $lt = $i['itmtypename'];
                print
                        "'n<tr style='background: gray;'><th colspan=4>{$lt}</th>        </tr>";
            }
            print "<tr><td><font color=white>{$i['itmname']}</font>";
            if ($i['inv_qty'] > 1)
            {
                print "&nbsp;<font color=white>x{$i['inv_qty']}</font>";
            }
            print "</td><td><font color=white>'${$i['itmsellprice']}</td><td></font>";
            print $i['itmsellprice'] * $i['inv_qty'];
            print
                            "</td><font color=white><td>[<a href='iteminfo.php?ID=        {$i['itmid']}'><font color=white>Info</a>] [<a href='itemsend.php?ID={$i['inv_id']}'><font         color=white>Send</a>] [<a href='itemsell.php?ID={$i['inv_id']}'><font color=white>Sell</a>]                 [<a href='imadd.php?ID={$i['inv_id']}'><font color=white>Add To Market</a>]</font>";
            if ($i['itmtypename'] == 'Food' || $i['itmtypename'] == 'Medical')
    {
                print " [<a href='itemuse.php?ID={$i['inv_id']}'><font         color=white>Use</a>]</font>";
            }
            if ($i['itmname'] == 'Nuclear Bomb')
            {
                print " [<a href='nuclearbomb.php'><font color=white>Use</a>]</font>";
            }
            print "</td></tr>";
        }
        print "</table>";
    }
    $h->endpage();

有人能帮忙吗?

您可以在SQL查询中使用GROUP BY

类似以下语句的内容:

SELECT iv.*,i.*,it.*,SUM(iv.inv_qty)
FROM inventory iv
    LEFT JOIN items i
        ON iv.inv_itemid=i.itmid
    LEFT JOIN itemtypes it
        ON i.itmtype=it.itmtypeid
WHERE iv.inv_userid={$userid}
GROUP BY i.itmname
ORDER BY i.itmtype ASC, i.itmname ASC

注意SUM(iv.inv_qty)GROUP BY i.itmname部分。我不知道你确切的表模式,但这是我能从你的操作中给出的信息中想出的最好的。

希望有帮助