2017-09-14 4 views
0

私はSQLデータベース全体をhtmlテーブルに入れようとしています。私はMySQLi APIを使用しています。 しかし、それはただ単に混乱up.Hereの私のコードを見表の最初の行、およびそれらの残りの部分を返す:SQLデータベース全体をHTMLテーブルに入れよう

  <h1> School Lesson System</h1> 

      <?php 

       if(isset($_SESSION['u_id'])) { 
        echo "You are logged in \n"; 
       } 
      ?> 
      <table border="1"> 
       <thead> 
        <tr> 
         <td>Lesson_id</td> 
         <td>Teacher</td> 
         <td>Lesson</td> 
         <td>Day</td> 
         <td>Time</td> 
         <td>Classroom</td> 
         <td>Year</td> 
         <td>Curriculum</td> 
        </tr> 
       </thead> 
       <tbody> 
        <?php 
        require_once 'includes/dbh.inc.php'; 

        $query = "SELECT * FROM monday"; 
        $result = $conn->query($query); 
        $rows = $result->num_rows; 
        for ($j = 0; $j < $rows; ++$j) { 
         $result->data_seek($j); 
         $row = $result->fetch_array(MYSQLI_ASSOC); 
        echo "<tr>"; 
         echo "<td>" . $row['Lesson_id']. "</td>"; 
         echo "<td>". $row['Teacher']. "</td>"; 
         echo "<td>" .$row['Lesson']. "</td>"; 
         echo "<td>" . $row['Day']. "</td>"; 
         echo "<td>". $row['Time']. "</td>"; 
         echo "<td>". $row['Classroom']. "</td>"; 
         echo "<td>". $row['Year']. "</td>"; 
         echo "<td>". $row['Curriculum']. "</td>"; 
        echo "</tr>"; 
       echo"</tbody>"; 
      echo"</table>"; 
        } 


include_once 'footer.php'; 
?> 

このため、任意のソリューションを????

+2

...それを印刷するのforeach文を使用し、ちょうど'しばらく($行= $ result-> FETCH_ASSOC())を行う{ '、それは標準的な方法です行をフェッチする。 – Qirel

+2

「monday」と呼ばれるテーブルがありますか?私はあなたが対処する必要があるより大きな問題を抱えていることは恐れています! – Strawberry

答えて

1

代わりループ内<tbody><table>近いforループ

2.don't(主要な問題である)

3。あなたのコードにSESSIONを使用している間に私はあなたのコードにsession_start();を見ることができません。あなたが持っていないかどうか確認してください。それをページの上に追加します。

以下のように実行します -

<?php 
require_once 'includes/dbh.inc.php'; 

$query = "SELECT * FROM monday"; 
$result = $conn->query($query); 

while($row = $result->fetch_array(MYSQLI_ASSOC)){ 
    echo "<tr>"; 
     echo "<td>" . $row['Lesson_id']. "</td>"; 
     echo "<td>". $row['Teacher']. "</td>"; 
     echo "<td>" .$row['Lesson']. "</td>"; 
     echo "<td>" . $row['Day']. "</td>"; 
     echo "<td>". $row['Time']. "</td>"; 
     echo "<td>". $row['Classroom']. "</td>"; 
     echo "<td>". $row['Year']. "</td>"; 
     echo "<td>". $row['Curriculum']. "</td>"; 
    echo "</tr>"; 
} 
echo "</tbody>"; 
echo "</table>"; 
include_once 'footer.php'; 
?> 

注: - Mondayよう

表の名前は全く良くありません。 users(list of users)logs(track record of different activities) ...などの目的そのものを表す有益な名前になります。

+0

実際に月曜日のテーブルは、すべてのlesson_id、教師、教室....そのことが月曜日に起こることを意味しています。しかし、あなたが私に良い名前を与えることができれば、私はそれを感謝します –

2

forループ内でtbodyとtableタグを閉じるためです。

 echo"</tbody>"; 
     echo"</table>"; 

この2行をforの外側に移動します。

1

変更すること:while 1.Use

<?php 
        require_once 'includes/dbh.inc.php'; 

        $query = "SELECT * FROM monday"; 
        $result = $conn->query($query); 
        while ($row = $result->fetch_assoc()) { 
        echo "<tr>"; 
         echo "<td>" . $row['Lesson_id']. "</td>"; 
         echo "<td>". $row['Teacher']. "</td>"; 
         echo "<td>" .$row['Lesson']. "</td>"; 
         echo "<td>" . $row['Day']. "</td>"; 
         echo "<td>". $row['Time']. "</td>"; 
         echo "<td>". $row['Classroom']. "</td>"; 
         echo "<td>". $row['Year']. "</td>"; 
         echo "<td>". $row['Curriculum']. "</td>"; 
        echo "</tr>"; 

        } 
    echo"</tbody>"; 
       echo"</table>"; 
+0

LOL !!!誰かより高い評判が私の受け入れられた答えを最悪の答えに変えます。 –

+0

それは笑ではありません。 OPが直面している実際の問題は 'for'ループのせいではなく、 ''が 'for'ループの中に書かれてテーブル全体が歪んでいるからです。 'while'ループはコーディングの強化にすぎませんが、歪んだテーブルの実際の問題を解決することはできません。あなたが他の答えと忍耐強く比較するならば、あなたの答えは間違っているだけでなく、なぜOPがこれをしなければならないのかという説明が不足していることがわかります。答えは将来の訪問者にも役立ちますので、説明が必要です。それを正して下向き投票を削除します。 –

+0

まだLOL !!!しかし、感謝....私はあなたの意見に同意します:) –

0

データベース次に

class DBConnUtil { 
private $mysqli; 
function __construct() { 
    $this->open_connection(); 
} 

private function open_connection() { // function to connect database; 
     $this->mysqli = new mysqli(DB_SERVER,DB_USER,DB_PASS,DB_NAME); 
     if ($this->mysqli->connect_error) { 
      die('Error : ('. $this->mysqli->connect_errno .') '. $this->mysqli->connect_error); 
     } 
     $this->mysqli->set_charset("utf8"); 
} 
public function run_query ($queryString) { 
    $result=$this->mysqli->query($queryString); 

    if (!$result) { 
     trigger_error('Wrong SQL: ' . $queryString . ' Error: ' . $this->mysqli->error, E_USER_ERROR);                 
    } 
    $this->close_connection(); 
    return $result; 
} 



private function close_connection() { 
     $this->mysqli->close(); 
}  

}

別のクラスファイルLesson.phpを接続するためのクラス・ファイルを作成します。プライベート変数としてデータベース列を使用します。このようにfetchData()関数を記述します。

public function fetchData() { 
    $dbConn = new DBConnUtil(); //name of the database class mention 
    before.. 
    $queryString = "select * from tablename "; 
    $result = $dbConn->run_query($queryString); 
    $rows_returned = $result->num_rows; 

    $categorydata = array(); 
    while($rows = $result->fetch_object()){ 
    $categorydata[] = $rows; 
    } 
    $result->free(); 
    return $categorydata; 

    } 

は、代わりにfor` `とループの

+1

ラッパーはなぜそれをより簡単にするでしょうか?なぜダイレクトインターフェイスは十分なものではありませんか?私の経験では、これらのラッパーは、解決するよりも頭痛が増えます。 – Qirel

関連する問題