0

結果の表示を制限するにはどうすればよいですか?100ビューに制限する必要があります。

DBには次のものがあります。

ID|NAME|PAGE|COUNT|DATE

カウントでは、100までカウントしてから、そのIDの表示を停止します。カウント<100でそれを行うことができます。次に、特定のIDを更新します。ビュー数が100未満のレコードを取得できましたが、特定のIDのカウントを更新できませんでした。

行は次のように表示されます:

phpコード:

foreach($bannerGroups[0] as $ban) {
        echo '<li class="right1">'.$ban->html().'</li>';       
}

しかし、どこにアップデートを入れるのかわかりません。試しましたが、IDを1つだけ更新するだけでした。ただし、1ページに4が表示され、更新時にランダム化されます。だから私は何をすべきかわかりません。

また、私はphpを学んでいるだけだと言いたいです。すべての混乱をお詫び申し上げます。

http://pastebin.com/A9hJTPLEのコード

4

5 に答える 5

2

私が正しく理解していれば、以前に100回未満表示されたすべてのバナーを表示したいですか?

WHEREそうであれば、それを句に追加するだけです。

$bannerResult = mysql_query("SELECT * FROM table WHERE page='cat' WHERE `COUNT` < 100");

それらすべてを更新するには、個々のバナーを表示しながらクエリを実行するか、それぞれのバナーを「記録」idして、最後に次のように1つのクエリを実行します。

$ids = array();
foreach($bannerGroups[0] as $ban) {
    $ids[] = $ban['ID']; // record the ID; don't know how Banner
                         // class works, assuming uses indexes; maybe ID() method?
    echo '<li class="right1">'.$ban->html().'</li>';
}
...
mysql_query('UPDATE table SET `COUNT` = `COUNT` + 1 WHERE ID IN (' . join(',', $ids) . ')');

更新
コメントに基づいて、Bannerクラスには個々のバナーを取得するメソッドがありませんID。この場合、IDバナー配列を作成するときに値を記録できます。

$ids = array();
while($row=mysql_fetch_assoc($bannerResult)) {
    $banners[] = new Banner($row);
    $ids[] = $row['ID']; // record the ID
}
// update the `count` on each record:
mysql_query('UPDATE table SET `COUNT` = `COUNT` + 1 WHERE ID IN (' . join(',', $ids) . ')');
于 2012-08-25T21:39:57.903 に答える
1

申し訳ありませんが、私はあなたの質問を間違えました...

まず、「viewcount」のような新しいsql-columnをdbに挿入する必要があります...読み取りのたびに、viewcountの値をインクリメントする必要があります...

その動作の場合(mysqlは同じテーブルのupdate-clauseでのサブ選択を許可しないため)、そのようにdbから結果をフェッチし、レコードのすべての主キーを配列に渡す必要があります。 ... view-logicの後で、次のようなクエリを起動する必要があります。

UPDATE foo SET viewcount = viewcount + 1 WHERE id IN (1,2,3,4,5,6...,100);

ここで、IN句は、primary-keys-arrayと "implode('、'、$ arr);"を使用して簡単に生成できます。

お役に立てれば。

于 2012-08-25T21:39:30.340 に答える
0
$bannerResult = mysql_query("SELECT * FROM table WHERE page='cat' AND `count`<100");
于 2012-08-25T21:39:18.027 に答える
0

@newfurnitureyはそれを理解しました。毎回ですがforeach($banneruGroups added: $ids = $ban->getValue('id');mysql_query("UPDATE dataa SET COUNT = COUNT + 1 WHERE id = '$ids'");クエリを1回だけ追加して更新する方法はありますか?そして、IDがすでに100回表示されている場合、Warning: Invalid argument supplied for foreach() in.それを修正する方法はありますか?DBに4つのIDがあります。それらの1つがすでに100ビュー(カウント)を持っている場合、エラーが発生します!

于 2012-08-26T09:38:51.127 に答える
-1

データソースを100アイテムに制限してみてください。
これはOFFSET x LIMIT 100、MySQL/PostgreSQLクエリやTOP 100MSSQLのようなものです。

于 2012-08-25T21:36:29.553 に答える