Как повернуть стол вертикально с помощью PHP - PullRequest
2 голосов
/ 30 мая 2020

Я только изучаю PHP, и я хочу создать таблицу, отображающую эхо-данные, которые я отправляю в свою базу данных. У меня проблема в том, что по умолчанию таблица отображается горизонтально, как вы видите. 1002 * это мой скрипт

<table >
<tr>
<th>Name</th>
<th>Age</th>
<th>Height</th>
</tr>
<?php
$conn = mysqli_connect("localhost", "root", "", "class");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT Name, Age, Height FROM student order by Name desc";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td>" . $row["Name"]. "</td><td>" . $row["Age"] . "</td><td>"
. $row["Height"]. "</td></tr>";
}
echo "</table>";
} else //{ echo "0 results"; }//
$conn->close();
?>
</table>

, но я хочу, чтобы он отображался вертикально, а не вот так ВЕРТИКАЛЬНЫЙ РЕЗУЛЬТАТ Я ХОЧУ , и я попытался изменить html в эхо в моем PHP код, но я вообще не могу получить результат, а форма таблицы далека от того, что я хочу, и это полный сценарий моей страницы .

Ответы [ 3 ]

3 голосов
/ 30 мая 2020

Как все говорили, вам следует преобразовать горизонтальный массив в вертикальный.

Конечно, это должна быть универсальная функция для преобразования любого результата запроса, в отличие от жесткого кодирования заголовков строк. Идея состоит в том, чтобы получить ключи массива каждой строки и использовать их в качестве ключей для нового массива, а затем добавить каждое соответствующее значение в новый элемент массива.

Вот как это делается в mysqli:

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect('127.0.0.1','root','','test');
$mysqli->query("set names 'UTF8'");

$data = [];
$res = $mysqli->query("SELECT Name, Age, Height FROM student order by Name desc");
while ($row = $res->fetch_assoc()) {
    foreach(array_keys($row) as $key) {
        $data[$key][] = $row[$key];
    }
}

, а затем вы получаете массив с желаемой структурой, который вы можете вывести, используя код из ответа ROOT:

<table border="1">
  <?php foreach($data as $key => $val): ?>
    <tr>
      <td><?= $key ?></td>
      <?php foreach($val as $field): ?>
        <td><?= $field ?></td>
      <?php endforeach ?>
    </tr>
  <?php endforeach ?>
</table>
0 голосов
/ 30 мая 2020

Я издевался над вашими данными в обычном массиве, я использовал while l oop, чтобы создать новый Array и создать формат, который нам нужен, чтобы иметь возможность переворачивать столбцы в строки, вот что, я думаю, вы хотите :

<?php
$users  = [
  [
    'name'=> 'James',
    'height'=> 1.75,
    'age'=> 18,
  ],
  [
    'name'=> 'Bill',
    'height'=> 170,
    'age'=> 16,
  ]
];


$newArr = [];

foreach($users as $key => $val) {
  $newArr['name'][$i] = $val['name'];
  $newArr['age'][$i] = $val['age'];
  $newArr['height'][$i] = $val['height'];
  $i++;
}


?>
<table border="1">
  <?php foreach($newArr as $key => $val): ?>
    <tr>
      <td><?php echo $key; ?></td>
      <?php foreach($val as $field): ?>
        <td><?php echo $field; ?></td>
      <?php endforeach; ?>
    </tr>
  <?php endforeach ?>
</table>
0 голосов
/ 30 мая 2020

Это плохая идея! если у вас много ROW , вы сгенерируете длинную таблицу, которая не будет видна пользователю на экране.

если вы хотите это сделать, вы можете изменить структуру таблицы, но вы не будете уважать html структура таблицы.

Я дам вам

Грязный код

<table>
<tr>
<th>Name</th>
<?php foreach ($row as $value) { ?><td><?php echo$value["Name"];  ?></td>
<?php } ?>
</tr>

<tr>
<th>Age</th>
<?php foreach ($row as $value) { ?>
    <td><?php echo $value["Age"];  ?></td>
<?php } ?>
</tr>

<tr>
<th>Height</th>
<?php foreach ($row as $value) { ?>
    <td><?php echo $value["Height"];  ?></td>
<?php } ?>
</tr>
</table>

Рекомендую ИСПОЛЬЗОВАТЬ CSS вместо таблицы

...