このメッセージ システムを開始しました。上の画像では、Danny が 3 つのメッセージを送信し、Bibby が 2 つのメッセージを送信したことがわかります。でも名前は一度だけ表示したいので、基本的に名前はカテゴリーみたいなもので、名前をクリックするとその人からのメッセージが全部出てくるのでは?
前もって感謝します
データベースから一意のレコードを取得するには、2 つの方法があると思います。
一つは、DISTINCT
SELECT DISTINCT Name
FROM tableName
もう1つの方法は、GROUP BY
SELECT Name
FROM tableName
GROUP BY Name
これを試して
$sql = mysql_query("SELECT * dm WHERE torn='$session_rand' GROUP BY fromuser ");
$count = mysql_num_rows($sql);
while($row = mysql_fetch_array($sql))
{ $sendername = $row["fromuser"];
echo '<div class="eachuser" style="background-color:#FFF; margin-bottom:1px; padding:7px; font-size:12px; text-align:center;"> ' .$sendername. ' </div>'; }
class="eachuser"
インナースタイルを持っているのですか?それらを置く
background-color:#FFF; margin-bottom:1px; padding:7px; font-size:12px; text-align:center;
クラスでeachuser
それらをdiv内から削除します
おそらくやりたいこと (データベース クエリを変更する @JW. の例に従いたくない場合) は、既に表示されている名前を格納するための配列を作成し、結果セットをループします。
// the result set coming from the database - all senders
$senders = array('danny', 'danny', 'danny', 'bibby', 'bibby', 'danny', 'bibby');
// the empty array to store the already displayed senders
$displayed = array();
// loop through each sender
foreach($senders as $sender) {
// if the sender is not in the array (therefore not yet displayed)
if(!in_array($sender, $displayed) {
echo $sender . "<br />";
$displayed[] = $sender;
}
}
このループは、各名前を 1 回だけエコー バックする必要があります。