0

友人の皆さん、こんにちは。複数のテーブルからすべての購入リストを表示する必要があるときに問題に直面しています。「タブレット」、「シロップ」、「カプセル」、「注射」という名前の 5 つのテーブルを挙げてみましょう。フラスコ」、ユーザーからの各購入は1ページに表示する必要があります。各テーブルから20レコードを取得したとしましょう。合計で100行が表示されます。問題は、各テーブルから10行のみを表示する方法ですが、次と前を提供する方法ですボタン、次のボタンはそれぞれ他のテーブルに影響を与えませんが、コードは次のとおりです。問題は、100万人を超えるユーザーがいて、ほとんどすべてのユーザーが同時に購入を表示し、サーバーがなくなった場合です。ありがとうすべてのヘルプ。提供されたソースを参照してください。

$rs = mysql_query("SELECT * FROM tablet WHERE zomname ='".$_SESSION['username']."';",$conn) or die("Couldn't fetch records from stud");
$rs2 = mysql_query("SELECT * FROM syrup WHERE zomname ='".$_SESSION['username']."';",$conn) or die("Couldn't fetch records from stud");
$rs3 = mysql_query("SELECT * FROM capsul WHERE zomname ='".$_SESSION['username']."' LIMIT 10;",$conn) or die("Couldn't fetch records from stud");
$rs4 = mysql_query("SELECT * FROM injection WHERE zomname ='".$_SESSION['username']."';",$conn) or die("Couldn't fetch records from stud");
$rs5 = mysql_query("SELECT * FROM flask WHERE zomname ='".$_SESSION['username']."';",$conn) or die("Couldn't fetch records from stud");


$count=mysql_num_rows($rs);
$count2=mysql_num_rows($rs2);
$count3=mysql_num_rows($rs3);
$count4=mysql_num_rows($rs4);
$count5=mysql_num_rows($rs5);


if ($count>0 || $count2>0 || $count3>0 || $count4>0 || $count5>0)
{
            echo "<CENTER>";
            echo "<BR><B><U>Purchase</U></B><BR><br/>";
            echo "<TABLE align='center' border='1' cellspacing='0' cellpadding='5'>";
            echo "<TR><TH>Nama</TH><TH colspan='4'>batch</TH><TH>Hprice</TH><TH>Discount</TH><TH>Paid</TH><TH>Product</TH><TH>Branch</TH><TH>Regional</TH><TH>Time</TH></TR>";
            //print Tablet data
            $i=0;
            while($i<$count)
            {
                $name=mysql_result($rs, $i, "zomname");
                $product=mysql_result($rs, $i, "tproduct");
                $bnum1=mysql_result($rs, $i, "batch1");
                $bnum2=mysql_result($rs, $i, "batch2");
                $bnum3=mysql_result($rs, $i, "batch3");
                $bnum4=mysql_result($rs, $i, "batch4");
                $bprice=mysql_result($rs, $i, "price");
                $bprice=number_format($bprice, 0, ',', '.');
                $disc=mysql_result($rs, $i, "Tdiscount");
                $disc = $disc." persen";
                $paid=mysql_result($rs, $i, "Tpaid");
                $paid=number_format($paid, 0, ',', '.');
                $country=mysql_result($rs, $i, "Tbr");
                $Regin=mysql_result($rs, $i, "Treg");
                $date=mysql_result($rs, $i, "zomdate");
                $month=mysql_result($rs, $i, "zomonth");
                $time=mysql_result($rs, $i, "zomtime");
                $actualtime =$date."-".$month.",".$time;
                echo "<TR><TD>$name</TD><TD>$bnum1</TD><TD>$bnum2</TD><TD>$bnum3</TD><TD>$bnum4</TD><TD>$bprice</TD><TD>$disc</TD><TD>$paid</TD><TD>$product</TD><TD>$country</TD><TD>$table</TD><TD>$actualtime</TD></TR>";
                $i++;
            }
            echo "</TABLE></CENTER>";
            echo "<br/>";

//print Syrup data and so on....all of the 5 product type have to be in one page.
//but i can limit to show each 10 item from each product type by providing next n previous button for each product
4

1 に答える 1

0

一度に 10 個のブロックでデータベースからクエリを取得すると、データベースの正味の負荷が軽減されると思いますか? 多数の小さなリクエストを実行する多数のユーザーがいると仮定すると、正味の負荷は増加します。ページング操作中にライブ トランザクションが発生している可能性がある間にすべてのデータを確実に表示するという堅牢性の問題は言うまでもありません。

mysql_* は廃止されました。mysqli を見てください。

Pixel Maker のコメントにあるように、タイプを追跡するためにテーブルを使用してください。タイプを PHP にハードコーディングすることは、将来の苦痛のレシピです。

私の推奨事項:

1) ユーザーに多くのフィルター オプションを提供します。たとえば、購入日の範囲と購入の種類、さらに考えられるその他の便利なフィルターをユーザーに指定させます。これにより、返されたデータが表示しやすくなり、ユーザーが探しているものを見つけやすくなります。

2) ユーザーが要求するすべてを 1 つのクエリで取得します。ページを Ajax します。

于 2013-05-16T13:47:48.530 に答える