2016-05-07 4 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>"; 

?> 

私はこのコードを持っていますが、それはうまく機能しますが、もっと列を追加したいときに問題に直面しました。 4列目(echo "<td>" . $row["crd"]. "</td>";)を追加しようとしましたが、結果がありません。空のセルがあります。どのように私はそれを行うことができますか?PHP言語で配列を処理する方法

私はこのエコー"<td>" . $row["crd"]. "</td>";列を自分のコードに追加したいと思います。

+0

変数は '$ row'ではなく' $ data'と呼ばれます。最初のループの中に '$ data'という配列を作成しておき、それを後で繰り返します。内側のforeach内で '$ data'を再利用しています。これは内容を上書きします。これらの変数の名前を変更する必要があります。 – andrewsi

+0

英語は私の母国語ではありませんが、実際にはそれが 'arraies'ではなく'配列 'であることを理解する努力をする必要があります。 – raidenace

答えて

0

コメントに記載されているように、2つのエラーが通知されています。

  1. あなたは二foreachループで$data
  2. 再宣言しているあなたは$rowはどこにも開始されていない、と$row["crd"]をエコーするatemptingすると、空のセルになります。 $rowから

    変更foreachループで$data値の名前となり、同時に両方の問題を解決:

    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++; 
        } 
    } 
    

    そして、あなたはecho "<td>" . $row["crd"]. "</td>";を追加するソリューションを提案

$row配列に格納されている値をエコーする必要があります(値がデータベースの最初の場所のテーブルから抽出されている限り)。

これがうまくいけば教えてください。

+0

はい。今はうまくいく。 – ABHAY

関連する問題