2017-02-02 4 views
0

Я хочу создать таблицу html из базы данных mariadb. Я не знаю, сколько столбцов в каждой таблице базы данных закончится.php create html-таблица с неизвестным количеством столбцов в базе данных

Так как я не знаю, сколько столбцов у меня есть, я пришел с этим:

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <link rel="stylesheet" type="text/css" href="styles/global.css"> 
</head> 
<body> 

    <?php 

    $con=mysqli_connect("localhost","root","","test"); 
// Check connection 
    if (mysqli_connect_errno()){ 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
//query 
    $sql="SELECT * FROM news ORDER BY author"; 
    $result=mysqli_query($con,$sql); 



    $counter = 0; 
    while($row=mysqli_fetch_array($result, MYSQLI_ASSOC)){ 

     echo $counter; 
     echo nl2br("\n"); 
     ?> 

     <table> 
      <thead> 
       <?php  
       if($counter==0){ ?> 
        <tr> 
         <th><?php echo implode("</th><th>", array_keys($row)); ?> 
         </th> 
        </tr> 
        } 
      </thead> 
      <tbody> 
       <?php  
       if($counter>=0){ ?> 
        <tr> 
        <td><?php echo implode("</td><td>", $row); ?> 
        </td> 
        </tr> 
       } 
      </tbody> 
     </table> 

     <?php 
     $counter ++; 
    } 

mysqli_free_result($result); 
mysqli_close($con); 
?> 
</body> 
</html> 

Проблема заключается в том, что таблица обыкновение заполняться более чем в первом ряду.

Кроме того у меня есть получить ошибку

Parse error: syntax error, unexpected end of file in E:\xampp\htdocs\test.php on line 58 Blockquote

Ошибка исчезает, когда я вхожу две фигурные скобки «}}» после того, как время цикла, он представит следующее:

execute:

Я не знаю, почему в браузере есть фигурные фигурные скобки, как видно на картинке.

EDIT: Я редактировать нить, потому что она была помечена как дубликат parsing and syntax errors, хотя мой основной проблемой является создание таблицы с неизвестным количеством столбцов.

Любая идея, как решить эту проблему? Спасибо вам, ребята!

+1

Начните с того, что ставьте только то, что вы хотите повторять несколько раз. INSIDE while loop – RiggsFolly

+0

Начните с разделения кода и вашего HTML-кода и отступов должным образом. Тогда вы легко сможете определить свою опечатку. – miken32

+0

Да, спасибо, я всегда стараюсь делать все внутри одной большой петли, нужно практиковать это мышление. –

ответ

0

Если честно, я не уверен, почему он дал эту ошибку, поскольку все ваши фигурные скобки были закрыты. Однако попробуйте упростить, как сказал RiggsFolly, поставить только то, что вы хотите повторить внутри цикла. Это делает вашу логику намного проще и аккуратнее. Попробуйте это:

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <link rel="stylesheet" type="text/css" href="styles/global.css"> 
</head> 
<body> 

    <?php 

    $con=mysqli_connect("localhost","root","","test"); 
// Check connection 
    if (mysqli_connect_errno()){ 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
//query 
    $sql="SELECT * FROM news ORDER BY author"; 
    $result=mysqli_query($con,$sql); 
    $row=mysqli_fetch_array($result, MYSQLI_ASSOC) 
    ?> 

    <table> 
     <thead> 
       <tr> 
        <th><?php echo implode("</th><th>", array_keys($row)); ?> 
        </th> 
       </tr> 
     </thead> 
     <tbody> 
       <tr> 
       <td><?php echo implode("</td><td>", $row); ?> 
       </td> 
       </tr> 

    <?php 
    $counter = 0; 
    while($row=mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
//  echo $counter; 
//  echo nl2br("\n"); 
     ?> 

       <tr> 
       <td><?php echo implode("</td><td>", $row); ?> 
       </td> 
       </tr> 

     <?php 
     $counter ++; 
    } 

mysqli_free_result($result); 
mysqli_close($con); 
?> 
      </tbody> 
     </table> 
</body> 
</html> 

И затем, проверить любой свободной template processors доступны, так что вы не смешивая содержимое и код.

+0

Благодарим вас за помощь, особенно указывая на движку шаблонов (так как я новичок начинаю очень приятно знать). Я вижу, что одна большая ошибка возникла из-за того, что вы не выбрали извлеченный массив внутри таблицы. –

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

  • Нет связанных вопросов^_^