Как бы я мог отобразить таблицу из SQL с помощью PHP A-Z, где после 10 строк скрипт запускает новую таблицу рядом с ней

#php #html #mysqli

#php #HTML #mysqli

Вопрос:

Я пытаюсь отобразить данные таблицы SQL с помощью PHP, прямо сейчас я создал таблицу HTML, которая бесконечно повторяется до конца страницы. Теперь я хочу попробовать отобразить 10 ~ имен по вертикали, прежде чем запускать новую таблицу HTML рядом с ней, которая продолжает цикл, пока не отобразится вся таблица SQL. Сценарий, который у меня есть прямо сейчас, выглядит следующим образом.

 $result = mysqli_query($conn, "SELECT name, id FROM table ORDER BY name");

while($row = mysqli_fetch_array($result)){  
    echo "<table>
    <tr><td><input type="submit" name="select" value="" . $row['name'] . ""></input></td></tr>
    </table>" ;    
}
 

Комментарии:

1. Вы создаете переменную $counter и обновляете ее внутри цикла while. Когда вы насчитали число, кратное 10 строкам, вы закрываете таблицу, открываете новую и повторяете.

Ответ №1:

если я правильно понял, вы хотите иметь таблицу для каждых 10 строк, если это так, вы можете сделать это следующим образом :

 $result = mysqli_query($conn, "SELECT name, id FROM table ORDER BY name");
$i = 1;
while ($row = mysqli_fetch_array($result)) {
    if ($i == 1) {
        print "<table>";
    } elseif ($i == 10) {
        print " </table><table>";
        $i = 1;
    }
    echo "
    <tr><td><input type="submit" name="select" value="" . $row['name'] . ""></input></td></tr>
    ";
    $i  ;
}
 

Комментарии:

1. Спасибо, это сработало, теперь мне интересно, почему $row [‘name’] возвращает «name 1 amp; name 2 … «, в то время как когда я пытался дважды напечатать $row [‘name’], и он возвращал только «name 1 amp; name 1»

2. в коде, на который вы ссылались, печать строки [name] происходит каждый раз, когда mysql_fetch_array возвращает массив результата, и создается переменная $row . возможно, раньше код был другим или какие-то другие проблемы…

Ответ №2:

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

 $result = mysqli_query($conn, "SELECT name, id FROM table ORDER BY name");
$data = $result->fetch_all(MYSQLI_ASSOC);

foreach (array_chunk($data, 10) as $table) {
    echo "<table>";
    foreach ($table as $row) {
        echo "<tr><td><input type="submit" name="select" value="" . $row['name'] . ""></input></td></tr>";
    }
    echo "</table>";
}