2012-01-21 15 views
0

私は小さな投票カウンタ製品を実行しているとします。値はデータベース「content」に格納され、行の投票数(「count」)、「rank」という行があり、どのようにこれらの値が自動化されるので、反復する必要はありませんPHPで1つ1つ使用すると、スクリプトの処理速度が大幅に低下しますか? (あなたの正確なテーブル構造に依存する)は、このようなMySQLの単純な評価システム

答えて

2

あなたがテーブルに

項目のフィールドを持つ このような構造を持っている場合は、次の項目に投票まで

:名前、ID、カウント、...

あなたは、単に行うことができますがID = $ idの

UPDATE item SET count = count + 1 WHERE id='$id'; 
IDを持つアイテムで

ダウン投票= $ IDを

UPDATE item SET count = count - 1 WHERE id='$id'; 

カウントには投票総数が格納されます。

ユーザ/ ipごとに複数の投票を行わないようにチェックしたい場合は、別のテーブルに各投票を保存し、前回のクエリを送信する前にこの繰り返しテーブルをチェックしてください。

0

何か作業をする必要があります。詳細は

UPDATE item SET rating = 
    (SELECT count(*) FROM rates WHERE type 'positive') - 
    (SELECT count(*) FROM rates WHERE type 'negative'); 

MySQL docsを見てみましょう。