2016-10-20 4 views
0

データベーステーブルから情報を引き出してHTMLテーブルに配置する方法を理解しようとしていました。私は次のコードで列のセット数を持っている限り、物事を働かせることができましたが、コードがデータベーステーブルの列の数を決定するところまで1ステップ進めたいと考えています。ここで私が持っている現在の作業コードは次のとおりです。データベーステーブルをプルしてHTMLテーブルに入れよう

<?php 
    include("connection.php"); 

    $query= "SELECT * FROM schedule"; 
    $result = mysqli_query($link, $query); 
    $scheduletext="<table>"; 

    if($result = mysqli_query($link, $query)) { 
     while ($row=mysqli_fetch_array($result)) { 
      $scheduletext.="<tr><td>".$row[1]."</td>"; 
      $scheduletext.="<td>".$row[2]."</td>"; 
      $scheduletext.="<td>".$row[3]."</td></tr>"; 
     } 
    } 
    $scheduletext=$scheduletext."</table>"; 

?> 

<html> 
    <head> 
     <title>TastySnack - Production Schedule</title> 
     <link href="https://fonts.googleapis.com/css?family=Kaushan+Script" rel="stylesheet">  
     <link rel="stylesheet" type="text/css" href="tasty.css"> 
    </head> 
    <body> 
     <div id="top"> 
      <div id="top-left"> 
       TastySnack Production 
      </div> 
      <div id="top-right"> 
       <img id="logo" src="images/TastysnackLogo.jpg"> 
      </div> 
     </div> 
     <div id="split"></div> 
      <div id="schedule"> 
       <?php print_r($scheduletext); ?> 
     </div> 
    </body> 
</html> 

私は、テーブル内の列の量を読み取るが、致命的なエラーを取得維持するために上記のコードにループを追加しようとしています:最大実行時間の30秒を超えました。これまでのコードの変更方法は次のとおりです。

<?php 
    include("connection.php"); 

    $query= "SELECT * FROM schedule"; 
    $result = mysqli_query($link, $query); 
    $scheduletext="<table>"; 

    if($result = mysqli_query($link, $query)) { 
     while ($row=mysqli_fetch_array($result)) { 
      $scheduletext.="<tr>"; 

      while($a< mysqli_num_fields($result)) { 
       $scheduletext.="<td>".$row[$a]."</td>"; 
      } 

      $scheduletext.="</tr>"; 
     } 
    } 
    $scheduletext=$scheduletext."</table>"; 
?> 

これを動作させるにはどうすればよいですか?

+0

PHPコードの** second **ブロックの先頭に 'ini_set( 'max_execution_time'、0);を挿入します。 –

+1

ああ、うわー!私は$ aをインクリメントするのを忘れてしまった。だから$ aはnumフィールドよりもずっと小さくなった。問題が解決しました!! – Brandon

答えて

0

デフォルトでは、PHPの実行時間は30秒です。 DBから大きなデータを取得してループを実行しようとすると、スクリプトの実行時間が30秒以上になり、エラーが発生します。あなたは一時間 または ini_set( 'max_execution_timeに'、3600)のため

は、set_time_limit(3600)//を追加することにより、php.iniのコンフィグから、またはスクリプトからそれを変更することができます 。

秒は0に設定できます。ゼロは、スクリプトが永遠に実行できることを意味します。

+0

上記のコードが間違っていると心配です。私はまだテスト段階にあり、4つのフィールドを持つ私のデータベースには8つのエントリしかありません。私はそれが32フィールドの合計を実行するために数秒以上かかるはずの方法があったとは思わなかった。それは私のループが間違っていると思って、それ以上のものを走らせることができないのですか? – Brandon

+0

ああ、うわー!私は$ aをインクリメントするのを忘れていた。だから$ aはnum_fieldsよりもずっと小さくなった。問題が解決しました!! – Brandon

0

申し訳ありませんが、ループごとに$ aを1ずつ増やしています。 $ a ++を追加する。 $ scheduletext。= ""。$ row [$ a]の後に "";ループを修正!

関連する問題