【问题标题】:How to turn a table vertical using PHP如何使用 PHP 将表格垂直翻转
【发布时间】:2020-09-17 20:46:21
【问题描述】:

我刚刚学习 PHP,我想创建一个表格来显示我提交到我的数据库的回显数据,我的问题是表格默认水平显示,如您所见 Horizontal default table 这是我的脚本

<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>

但我希望它像 VERTICAL RESULT I WANT 那样垂直回显,我试图在我的 PHP 代码中更改 echo 中的 html,但我根本无法得到结果,而且表格的形状与我想要,这是my page的完整脚本。

【问题讨论】:

标签: php mysql mysqli html-table


【解决方案1】:

就像其他人所说的那样,您应该将水平数组转换为垂直数组。

当然,它应该是一个通用函数来转换任何查询结果,而不是硬编码行标题。这个想法是获取每一行的数组键并将它们用作新数组的键,然后将每个对应的值添加到新的数组项中。

这是在 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>

【讨论】:

  • 感谢您的大力帮助。我想使用html手动命名每个表到代码的第二部分table name
【解决方案2】:

我将你的数据模拟成普通数组,我使用了一个 while 循环来创建一个新的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>

【讨论】:

  • 仅供参考,foreach 被认为比四个独立的运算符更方便:计数、计数器、while 和增量
  • @YourCommonSense,我同意,感谢您指出这一点。自从我在 php 中做任何事情以来已经 5 年了,几乎忘记了它:P
【解决方案3】:

这不是一个好主意!如果您有很多 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 代替表格

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-25
    • 2015-05-17
    相关资源
    最近更新 更多