0

2 つのテーブルから行を選択しています

$a = mysql_query("SELECT a.id, a.id_user, a.id_location, a.id_event, a.date FROM イベントとして LEFT JOIN評価はb ON a.id_event = b.id_event AND a.id_user = b.id_whos_get_rate WHERE a.id_user <> $log1[id] AND 存在する ( 選択 1 CとしてのFROMイベント WHERE a.id_event = c.id_event AND c.id_user = $log1[id] ) と b.id は NULL ORDER BY DATA") ;

それから私は配列を受け取っています

a.id | a.id_user | a.id_location | a.id_event | デート ++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++ 1 2 1 2 2013.03.20 2 3 1 2 2013.03.20 3 4 1 2 2013.03.20 4 12 1 3 20.03.2013 5 13 1 3 20.03.2013 6 14 1 3 20.03.2013

次に、その値をエコーし​​、各ユーザーがラジオを追加して、その方法で行っていることを行いたいと思います。

<pre>>while($b = mysql_fetch_array($a)){ 
>$place = mysql_query("select * from name_event where id=$b[id_location]");
>$place1= mysql_fetch_array($place);
>echo  $place1[name];
>echo $b[date].;
>echo "id event: ".$b[id_event].;
>$name= mysql_query("select* from users where id='".$b[id_user]."'and id!=$log1[id]");
>$name1= mysql_fetch_array($name);
>if (!empty($name1[login])){
>echo  $name1[login].   ;
>echo "form method ='post' action ='rate.php'
>rate
>input type='radio' name='s' value='$name1[id]|1|$b[id_event]' 
>input type='radio' name='s' value='$name1[id]|2|$b[id_event]' 
>input type='submit' name='submit' value='value'

問題は、 a.id_event に複数の値があり、 a.id_event を一度だけエコーするようにコードを変更する方法がわかりません。

id_event 2
id_user 2

id_event 2
id_user 3

id_event 2
id_user 4

そして私はそのように働くことを期待しています

id_event 2
id_user 2
id_user 3
id_user 4
4

1 に答える 1

0

データが によって並べ替えられている限りid_event、したがって値が連続している限り、これに対する最良の答えは、最後の id_event を含む変数をループに配置し、繰り返されている場合は id_user を出力することだと思います。

例として:

$last_id_event = null;
while($row = mysql_fetch_array($a)){ // Each row
    if($row['id_event'] != $last_id_event){
        echo "id event: ".$row['id_event'];
        $last_id_event = $row['id_event']
    }
    echo "id user: ".$row['id_user'];
}

編集: foreach を while(... mysql_fetch_array) に変更しました。これが正しい方法です。

于 2013-09-05T03:29:04.657 に答える