0

私が持っている状況は、現在のユーザーの最も頻繁にアクセスした 5 つの連絡先をエコーする連絡先名を持つページです。そして、私はそれらを次のように注文します:

$name_a=mysql_query(SELECT * FROM contacts WHERE email='$semail' ORDER BY frequency 
DESC);
$name_b=mysql_query(SELECT * FROM contacts WHERE email='$semail' ORDER BY frequency           
DESC OFFSET1);

メンバーがこの名前に関連付けられた送信ボタンをクリックすると、そのユーザーの「頻度」列に 1 が追加されます。このような:

UPDATE contacts SET frequency = frequency + 1 WHERE email='$semail' AND      
contact_a='$a[contact_a]'

問題は、2 つのメンバーが同じ頻度の値を持っている場合に発生します。これらの名前の 1 つがクリックされると、1 が追加されて順序が変更され、ページが更新された後に他の情報が表示されるためです。たとえば、'tom' と 'bob' の両方の頻度値が 10 の場合、Tom が最初にエコーされ (彼の名前がデータベースで最初に表示されるため)、次に Bob が次のように表示されます。

if ($name_a = mysql_fetch_assoc($name_a)) {echo $name_a['firstname'];} // eg. tom
if ($name_b = mysql_fetch_assoc($name_b)) {echo $name_b['firstname'];} // eg. bob

次に、誰かが bob のボタンをクリックすると、彼の頻度の値は 11 になり、ページが更新されると、彼は $name_a になり、送信ボタンをクリックすることで得られる追加情報は tom になります。私がこれを説明したことを願っています。ありがとう

4

1 に答える 1

0

...ORDER BY frequency, name、任意の頻度内で、名前が自然な並べ替え順序ではなくアルファベット順になるようにしますか?

于 2012-10-16T21:28:04.960 に答える