Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择所选行中的不同行_Php_Mysql_Database - Fatal编程技术网

Php 选择所选行中的不同行

Php 选择所选行中的不同行,php,mysql,database,Php,Mysql,Database,我正在从两个表中选择行 然后我接收阵列 a.id | a.id_user | a.id_location | a.id_event | a.date ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 2 1 2 20.03.2013 2 3 1 2 20

我正在从两个表中选择行

然后我接收阵列

a.id | a.id_user | a.id_location | a.id_event | a.date ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 2 1 2 20.03.2013 2 3 1 2 20.03.2013 3 4 1 2 20.03.2013 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_事件有多个值,我不知道如何将代码更改为只回显一次a.id_事件,然后是参与该事件的所有用户,因为此时它是回显

id_event 2 id_user 2 id_user 3 id_user 4 我希望能像那样工作

$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'];
}

只要您的数据是按id_事件排序的,因此值是连续的,我认为最好的解决方法就是在循环中使用一个变量来包含last的id_事件,如果重复,只打印id_用户

例如:


编辑:将foreach更改为while。。。mysql_fetch_数组,这是正确的方法。

请提供所需的表架构、数据和结果。切中要害。在用户echo id\u user为一个事件\u id全部回显之前,不应该有一些额外的循环吗?不需要,因为循环将用于所有结果,只是不打印具有重复id\u事件的那些。我将编辑反映这一点的帖子。$last\u id\u event=null;而$b=mysql_fetch_数组$a{//每行。foreach$b as$key=>$row{if$b['id_event']!=$last_id_event{echo$b['id_event'];$last_id_event=$b['id_event'];}echo$b[id_user].a.}我就是这样做的,我用id_事件改变了顺序,它是有效的,但它是一个id_事件的值乘以10倍于同一个user_id,10倍于另一个user_id,而在表中,同一事件只有一个user_id,我认为它是这样工作的,因为每个条件选择$b$a在所有选定的行上都不起作用,比如日期等等,这就是为什么它不断重复我不确定为什么要做两个循环:一个是while,它选择mysql数组中的每一行,另一个是foreach,它选择给定行中的每一列 id_event 2 id_user 2 id_user 3 id_user 4
$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'];
}