2016-06-15 68 views
0

我想显示来自数据库的数据。我想显示4个名为'score','listening_score','reading_score'和'structure_score'的表格。 '分数'表格包含最终得分。混淆来自数据库的显示数据

的index.php

<? php 
    echo "Your TOEFL Score, <br>"; 
     echo "<table class=\"score\">"; 
     $email = $_SESSION['email']; 
     $q = mysql_query("SELECT * FROM score where email='$email'"); 
     $query = mysql_query("SELECT * FROM structure_score where email='$email'"); 
     $query1 = mysql_query("SELECT * FROM listening_score where email='$email'"); 
     $query2 = mysql_query("SELECT * FROM reading_score where email='$email'"); 
     while ($row = mysql_fetch_array($q)) { 
      echo " 
       <h3> <span >".$row['Score']."</span> </h3>"; 

     while ($row = mysql_fetch_array($query)) { 
      echo " 
       <tr><td>Score Structure: </td> <td>".$row['Score']."</td><td>Right Answer: </td> <td>".$row['Right_Answer']."</td></tr>"; 

     while ($row = mysql_fetch_array($query1)) { 
      echo " 
       <tr><td>Score Listening: </td> <td>".$row['Score']."</td><td>Right Answer: </td> <td>".$row['Right_Answer']."</td></tr>"; 

     while ($row = mysql_fetch_array($query2)) { 
      echo " 
       <tr><td>Score Reading: </td> <td>".$row['Score']."</td><td>Right Answer: </td> <td>".$row['Right_Answer']."</td></tr>"; 
       } 
      } 
      } 
     } 
     echo "</table><br><br>"; 
?> 

我想显示:

233 
Score Structure: 24 Right Answer: 0 
Score Listening: 24 Right Answer: 0 
Score Reading: 22 Right Answer: 0 

但是当我测试两次,数据将被显示这样的:

233 

263 
Score Structure: 24 Right Answer: 0 
Score Listening: 24 Right Answer: 0 
Score Reading: 22 Right Answer: 0 

Score Reading: 31 Right Answer: 12 
Score Listening: 33 Right Answer: 10 
Score Structure: 32 Right Answer: 8 

我想显示像这样:

233 
Score Structure: 24 Right Answer: 0 
Score Listening: 24 Right Answer: 0 
Score Reading: 22 Right Answer: 0 

263 
Score Reading: 31 Right Answer: 12 
Score Listening: 33 Right Answer: 10 
Score Structure: 32 Right Answer: 8 

这是我的表结构:

CREATE TABLE IF NOT EXISTS `score` (
    `email` varchar(30) NOT NULL, 
    `Score` int(100) NOT NULL, 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE IF NOT EXISTS `listening_score` (
    `email` varchar(30) NOT NULL, 
    `Right_Answer` int(100) NOT NULL, 
    `Score` int(100) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE IF NOT EXISTS `reading_score` (
    `email` varchar(30) NOT NULL, 
    `Right_Answer` int(100) NOT NULL, 
    `Score` int(100) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE IF NOT EXISTS `structure_score` (
    `email` varchar(30) NOT NULL, 
    `Right_Answer` int(100) NOT NULL, 
    `Score` int(100) NOT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 
+2

你能否提供您所使用的表的结构?因为我们能够更好地理解您的问题 –

+0

是的,我确定很多用户可以帮助您,但是没有更多详细信息,我们不能提供 – sloaxleak

+0

因此,可能会有多个TOEFL分数与同一电子邮件相关联?这并没有什么意义,看起来你错过了“会话”或某事的概念 - 所以电子邮件在会议1(发生在X日期)和会议2(发生在Y日)。否则,你不能按你想要的方式分组。 – rlanvin

回答

0

u显示在PHP代码是什么力量让在圈圈难怪它会出去像ABCDDCB嵌套。 从你建立的表格中,我可以看到四个表格之间没有关系,但是对于email字段而言。我建议你在表格中增加total_score字段,但score表除外。并选择句子约束到唯一与emailtotal_score。 代码类似以下内容:

picture 1

picture 2