Как отобразить данные в PHP из базы данных, где каждые 4 данных, которые появляются, тогда остальные данные помещаются ниже - PullRequest
2 голосов
/ 04 февраля 2020

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

<!DOCTYPE html>
<html>
  <head>
    <style>
      table{
      border-collapse:separate;
      border-spacing: 10px 15px;
      }
      th,td{
      width: 150px;
      text-align: center;
      border: 1px solid black;
      padding: 5px;
      }
    </style>
  </head>


<body>

<table border="1">

<?php
$conn = mysqli_connect('localhost','root','qwerty','example');
$data = mysqli_query($conn,"select letter from office");
while($d = mysqli_fetch_array($data)){
?>

<td><?php echo $d['letter']; ?></td>

<?php
}
?>
</table>
</body>

Результат, который выглядит следующим образом:

AB C DEFGHIJKL

original result

Я хочу, чтобы результат был следующим:

AB C D

EFGH

IJKL expected result

, где есть только 4 данных в каждой строке.

Если данных более 4, данные размещены ниже.

как мне это сделать?

Ответы [ 4 ]

2 голосов
/ 04 февраля 2020
<!DOCTYPE html>
<html>
  <head>
    <style>
      table{
      border-collapse:separate;
      border-spacing: 10px 15px;
      }
      th,td{
      width: 150px;
      text-align: center;
      border: 1px solid black;
      padding: 5px;
      }
    </style>
  </head>


<body>

<table border="1">

<?php
$counter=1;
$conn = mysqli_connect('localhost','root','qwerty','example');
$data = mysqli_query($conn,"select letter from office");
while($d = mysqli_fetch_array($data)){
?>
if($counter <= 4){
  <td><?php echo $d['letter']; ?></td>
}else{
  echo"\n";
  $counter=0;
 }
<?php
}
?>
</table>
</body>

Я не уверен насчет кода, но думаю, что это поможет вам. и вы можете использовать тег
также раздел эха.

1 голос
/ 04 февраля 2020
<!DOCTYPE html>
    <html>
      <head>
        <style>
          table{
          border-collapse:separate;
          border-spacing: 10px 15px;
          }
          th,td{
          width: 150px;
          text-align: center;
          border: 1px solid black;
          padding: 5px;
          }
        </style>
      </head>


    <body>

    <table border="1">
    <tr>
    <?php
    $conn = mysqli_connect('localhost','root','qwerty','example');
    $data = mysqli_query($conn,"select letter from office");
    $i=1;
    while($d = mysqli_fetch_array($data)){
    ?>

    <td><?php echo $d['letter']; ?></td>
    <?php
    if($i==4){
    echo '</tr><tr>';
    $i=0;
    }
    $i++;
    }
    ?>
    </tr>
    </table>
    </body>
1 голос
/ 04 февраля 2020

Вы можете выполнить условие if для достижения этого, как показано ниже. То, что вы пытаетесь сделать, это разбить строку после каждых четырех записей. Так что есть много способов сделать это. Но я думаю, что с помощью модуля оператора вы можете достичь этого легко. Чтобы узнать больше об этих операторах, проверьте w3 c здесь

<?php
$i = 1;
$conn = mysqli_connect('localhost','root','qwerty','example');
$data = mysqli_query($conn,"select letter from office");
while($d = mysqli_fetch_array($data)){
?>

<td>
<?php

if ($i%4 ==0) { 
echo '<br>'; 
}else{
 echo $d['letter'];} ?></td>
}
$i++;
<?php
}
?>
0 голосов
/ 04 февраля 2020

Таким образом, в ваше время l oop вы говорите просто напечатать теги td html. Которые являются тегами данных таблицы.

Чтобы добавить строки, вам также нужно использовать теги tr. tr, строка таблицы. Это как лист Excel. tr - это строка, а td - отдельные ячейки.

Итак, вернемся к вашему коду.

$data = mysqli_fetch_array($data)

foreach ($data as $id->$d) {
    if($id == 0) {
        echo '<tr><td>' . $d['letter'] . '</td>'; 
    } 
    else if($id%4 == 0) {
        echo '</tr><tr><td>' . $d['letter'] . '</td>'; 
    }
    else {
        echo '<td>' . $d['letter'] . '</td>'; 
    }
}
echo '</tr>'; 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...