如何从多个关联数组中进行选择并显示它们?

时间:2015-12-27 17:45:58

标签: mysql arrays associative

我有一个关于向教师发送不同科目和级别请求的页面。为此,我为教师设置了一个单独的区域,他们可以登录并查看已发送的所有请求以及与其特定主题和级别相匹配的请求。请原谅我的英文。

因此,我将请求的名称,地址等保存在一个数据库表中(因为它是唯一的),并且对于每个主题,有人请求将一行插入到另一个数据库表中。教师及其科目保存在另一个数据库表中,这些数据库表都通过外键相互连接,并通过WHERE命令进行过滤,以检查请求是否与教师科目/级别相匹配。现在这个功能。

但是我无法以正确的方式显示请求:我想通过仅显示请求的地址一次来显示这些请求,并为每个主题/级别组合创建表数据/单元格(td)(例如,一个客户要求5年级德语和英语,7年级德语和拉丁语应该显示地址和名称一次,之后两个单元格为5级德语和英语,之后是7个单元格/表格数据为7 。等级德语和拉丁语。)

这是我用于JOIN的代码(非常适合过滤和获取结果,将其翻译成英文):

SELECT
   request.street,
   classes.class,
   subjects.subject,
   schools.school,
   requests_subjects.description,
   teachers.name 
FROM
   requests_subjects  
LEFT JOIN
   subjects  
      ON  requests_subjects.subject_id = subjects.subject_id  
LEFT JOIN
   classes  
      ON  classes.class_id = requests_subjects.class_id  
LEFT JOIN
   schools  
      ON  schools.school_id = requests_subjects.schule_id  
LEFT JOIN
   requests  
      ON  requests_subjects.request_id = request.request_id  
LEFT JOIN
   requests_subjects  
      ON  requests_subjects.subject_id = teachers_subjects.subject_id  
LEFT JOIN
   teachers  
      ON  teachers_subjects.teacher_id = teachers.teacher_id  
WHERE
   teachers.name = '".ucfirst($_SESSION['user'])."' 
   AND requests_subjects.status_id = 1 
   AND lteachers_subjects.status_id = 1 
   AND requests_subjects.class_id <= teachers_subjects.class_id

我目前使用以下表格代码显示结果(也缩短并翻译成英文)。我基本上想用foreach循环为每个不同的类创建一个特定的表数据/单元 - &gt;因此,如果要处理两个不同的类/级别,则会创建两个表数据,每个表数据包含为该类/级别请求的主题:

print "<table> \n";
$result = $pdo->query($order);

桌头的第一行:

print " <tr> \n";
$row = $result->fetch(PDO::FETCH_ASSOC);

print " <th>Where?</th> \n";
  foreach ($row['class']){   
      print "<th>Which subjects and which level?</th> \n";
  }
  </tr> \n";

这里是foreach循环,它应该为每个地址只创建一个tablerow,为每个主题/类组合创建一个表数据/单元格:

    foreach ($row['street']){
        print " <tr> \n";
        if ($nr <= 1){
            print "<td>".$row['street']."</td>";
            foreach ($row['class']){  
               print "<td>" . $row['subject'] . " for the " 
                        . $row['class'] . " " . $row['school']
                   . "</td>";
            }
        }
        $nr + 1;  
    }
    print " </tr> \n";
}
print "</table> \n";

0 个答案:

没有答案