2016-05-07 15 views
0
<?php 

$con = mysqli_connect('localhost', 'root', ''); 
if(!$con) 
{ 
    die("not ok"); 
} 

mysqli_select_db($con,"uoh"); 


$q1 = "SELECT * FROM student_record INNER JOIN degree_plan ON 
student_record.course_number = degree_plan.course_number 
INNER JOIN courses ON student_record.course_number = 
courses.course_number where student_record.id = 201102887 AND degree_plan.major='COE'"; 

$result = mysqli_query($con , $q1) ; 
$data = array(); 
while($row = mysqli_fetch_array($result)) 
{ 
    $data[$row["term_no"]][] = array(
     'code' => $row["code"], 
     'grade' => $row["grade"] 
    ); 

} 


echo '<table width="200" border="1">'; 
    echo "<tr>"; 
    echo "<th>courses</th>"; 
    echo "<th>terms</th>"; 
    echo "<th>grades</th>"; 
    echo "</tr>"; 

foreach($data as $term=>$otherrow) { 
    $count = 0; 
    foreach ($otherrow as $data) { 
     if($count == 0) { 
      echo "<tr>"; 
      echo "<td>" . $data["code"]. "</td>"; 
      echo '<td rowspan="'.count($otherrow).'">' . $term. '</td>'; 
      echo "<td>" . $data["grade"]. "</td>"; 
      echo "</tr>"; 
      } 

     else 

     { 
      echo "<tr>"; 
      echo "<td>" . $data["code"]. "</td>"; 
      echo "<td>" . $data["grade"]. "</td>"; 
      echo "</tr>"; 
     } 
     $count++; 
    } 
} 
echo "</table>"; 

?> 

Ich habe diesen Code und es funktioniert sehr gut, aber ich konfrontiert Problem, wenn ich mehr Spalte hinzufügen möchte. Ich habe versucht, vierte Spalte hinzuzufügen (echo "<td>" . $row["crd"]. "</td>";), aber es gibt kein Ergebnis .Es gibt mir leere Zellen. Wie kann ich das machen?Wie mit Arrays in PHP Sprache umgehen

Ich möchte hinzufügen dieses Echo "<td>" . $row["crd"]. "</td>"; Spalte zu meinem Code hinzufügen.

+0

Ihre Variable heißt '$ data', nicht' $ row'. Sie erstellen in Ihrer ersten Schleife ein Array mit dem Namen '$ data' und wiederholen es später. Sie verwenden auch $ data in der inneren foreach, die den Inhalt überschreiben wird. Sie sollten eine dieser Variablen umbenennen. – andrewsi

+0

Englisch ist auch nicht meine Muttersprache, aber Sie sollten sich wirklich die Mühe machen zu verstehen, dass es "Arrays" und nicht "Arraies" ist ... – raidenace

Antwort

0

Wie in den Kommentaren erwähnt, gibt es zwei Fehler, die bemerkt wurden.

  1. Sie erneut erklären $data in Ihrer zweiten foreach-Schleife
  2. Sie haben überall nicht $row initiiert und atempting $row["crd"] Echo in einer leeren Zelle führen.

Vorgeschlagene Lösung:

Ändern Sie den Namen des $data Wert in der foreach-Schleife zu $row und damit beide Probleme gleichzeitig lösen:

foreach($data as $term=>$otherrow) { 
    $count = 0; 
    foreach ($otherrow as $row) { 
     if($count == 0) { 
      echo "<tr>"; 
      echo "<td>" . $row["code"]. "</td>"; 
      echo '<td rowspan="'.count($otherrow).'">' . $term. '</td>'; 
      echo "<td>" . $row["grade"]. "</td>"; 
      echo "</tr>"; 
      } 

     else 

     { 
      echo "<tr>"; 
      echo "<td>" . $row["code"]. "</td>"; 
      echo "<td>" . $row["grade"]. "</td>"; 
      echo "</tr>"; 
     } 
     $count++; 
    } 
} 

Und wenn Sie echo "<td>" . $row["crd"]. "</td>"; hinzufügen Jetzt sollte es den Wert widerspiegeln, der im Array $row gespeichert wurde (solange der Wert natürlich zuerst aus der Tabelle in der Datenbank extrahiert wurde).

Lassen Sie mich wissen, ob dies für Sie funktioniert.

+0

ja. es funktioniert jetzt gut. – ABHAY