2016-10-20 2 views
0

Я играл, пытаясь понять, как извлечь информацию из таблицы базы данных и поместить ее в таблицу HTML. Мне удалось заставить все работать до тех пор, пока у меня есть определенное количество столбцов со следующим кодом, но теперь хочу сделать это на шаг дальше, где код определяет количество столбцов в таблице базы данных. Вот текущий рабочий код у меня есть:Вытащить таблицу базы данных и поместить в таблицу 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

Вставить 'ini_set ('max_execution_time', 0);' в начале вашего ** второго ** блока кода PHP. –

+1

О, ничего себе! Я забыл увеличивать $ a .... Так что $ a оставалось меньше, чем num полей навсегда! Задача решена!! – Brandon

ответ

0

По умолчанию время выполнения php составляет 30 секунд. Если вы пытаетесь получить из больших данных БД и пытаетесь сделать цикл с ним, время выполнения скрипта будет больше 30 секунд, и вы получите сообщение об ошибке. Вы можете изменить его с php.ini конфиги, или из сценария, добавив

set_time_limit (3600) // в течение одного часа или ini_set ('max_execution_time', 3600);

Секунды, которые вы можете установить на ноль. Zero означает, что скрипт может работать вечно.

+0

Я беспокоюсь, что мой код выше неправильно. Я все еще на этапе тестирования и имею только 8 записей в моей базе данных с 4 полями каждый. Я бы не думал, что есть какой-то способ, который он должен взять больше, чем несколько секунд, чтобы пробежать в общей сложности 32 поля. Это заставляет меня думать, что мой цикл неверен, чтобы заставить его работать намного больше, чем должно быть? – Brandon

+0

О, ничего себе! Я забыл прирастить $ a .... Так что $ a просто остался меньше num_fields навсегда! Задача решена!! – Brandon

0

Извините, ребята, я просто пропустил приращение $ a на 1 для каждого цикла. Добавление $ a ++; после $ scheduletext. = "". $ row [$ a]. ""; зафиксировал петлю!

Смежные вопросы