私はこのシナリオで作業しています:
Students Table
IDNUMBER
NAME
LEVEL
COURSE
SECTION
Exams Table
IDNUMBER
SUBJECT_ID
SCORE
Student_Subject Table
SUBJECT_ID
LEVEL
COURSE
SECTION
SUBJECTID_1 SUBJECTID_2 SUBJECTID_3 ... 見出しは、Student_Subject テーブルの Student テーブル LEVEL、COURSE、および SECTION に基づいて動的に生成されます。次に、Student_Subject テーブルから SUBJECT_ID を収集して、Exams テーブルからスコアを取得します。
望ましい出力
IDNUMBER NAME SUBJECTID_1 SUBJECTID_2 SUBJECTID_3 ...
123456 JACK 6.5 8.5 9.0
見出し、学生のリスト、およびスコアを取得できますが、それらを間違った位置に取得します。
IDNUMBER NAME SUBJECTID_1 SUBJECTID_2 SUBJECTID_3 ...
123456 JACK 9.0 8.5 6.5
これが私がこれまでに持っているものです。
<?php
include('../connect.php');
// Finds the Names
$sql="SELECT * FROM student WHERE course='$course' AND yearlevel='$year' AND section ='$section' " ;
$result = mysql_query($sql);
echo $title.' SECCIÓN: '.'"'.$section.'"';
echo "<table border='1' cellpadding='1' id='resultTable'><tr><th>#</th><th>NIE</th> <th>NOMBRE COMPLETO</th>";
// Finds subjects
$sql_subjects="SELECT subject FROM studentsubject WHERE course='$course' AND level='$year' AND section ='$section'" ;
$result_subjects = mysql_query($sql_subjects);
$s = '1';
while($subjects = mysql_fetch_array($result_subjects))
{
// Muestra los códigos de las materias.
echo "<th style='text-align:center'>".$subjects['subject']."</th>";
$s++;
}
echo "</tr>";
$i='1';
while($row = mysql_fetch_array($result))
{
//Diplays student info
echo "<tr>";
echo "<td style='text-align:center'>".$i."</td>";
echo "<td>".$row['idnumber'];
$student = $row['idnumber'];
echo "<td>".$row['lname'].','.$row['fname']."</td>";
$sql_grades="SELECT subject,score FROM exam WHERE idnum='$student' AND term='1'" ;
$result_grades = mysql_query($sql_grades);
$g = '1';
while($grades = mysql_fetch_array($result_grades))
{
// Displays the grades
echo "<td style='text-align:center'>".$grades['score']."</td>";
$g++;
}
echo "</tr>";
$i++;
}
echo "</table>";
私は何を間違っていますか?返信/サポートをよろしくお願いします。
こんにちは、みんな!この質問を投稿した後、SO は私の質問に関連するいくつかの提案された記事を提示し、いくつかを読んだ後、プロジェクトの希望の出力を得ることができました。
これが私が思いついたものです
// Finds students info
$sql="SELECT * FROM student WHERE course='$course' AND yearlevel='$year' AND section ='$section' " ;
$result = mysql_query($sql);
echo $title.' SECCIÓN: '.'"'.$section.'"';
echo "<table border='1' cellpadding='1' id='resultTable'><tr><th>#</th><th>NIE</th> <th>NOMBRE COMPLETO</th>";
// Finds the subjects
$sql_subjects="SELECT subject FROM studentsubject WHERE course='$course' AND level='$year' AND section ='$section'" ;
$result_subjects = mysql_query($sql_subjects);
$s = '1';
$fsubject = array();
while($subjects = mysql_fetch_array($result_subjects))
{
// Stores subject ID for later use.
$fsubject[] = $subjects;
// Writes Table Headings for "subjects"
echo "<th style='text-align:center'>".$subjects['subject']."</th>";
$s++;
}
echo "</tr>";
$i='1';
while($row = mysql_fetch_array($result))
{
//Writes students info
echo "<tr>";
echo "<td style='text-align:center'>".$i."</td>";
echo "<td>".$row['idnumber'];
$student = $row['idnumber'];
echo "<td>".$row['lname'].','.$row['fname']."</td>";
//Finds subjects score based on subjectID
foreach($fsubject as $subject){
//Stores subjectID
$test = $subject["subject"];
// echo $test;
//
// finds de exam scores based on SubjectID = $test in this case
$sql_grades="SELECT subject,score FROM exam WHERE idnum='$student' AND term='1' and subject='$test' " ;
$result_grades = mysql_query($sql_grades);
$g = '1';
while($grades = mysql_fetch_array($result_grades))
{
// Displays scores
echo "<td style='text-align:center'>".$grades['score']."</td>";
$g++;
}
}
echo "</tr>";
$i++;
}
echo "</table>";
?>
これを行うより良い方法はありますか?私は学んでいますが、これがサーバーに大きな負荷をかけるかどうかはわかりません。
JOINのご提案ありがとうございます。私はそれでもっと多くのことを学びましたが、それは私にとってはやり過ぎであり、この場合にそれを実装する方法がわかりません.