私が持っている状況は、現在のユーザーの最も頻繁にアクセスした 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 になります。私がこれを説明したことを願っています。ありがとう