首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PHP垂直转表

问如何使用PHP垂直转表
EN

Stack Overflow用户
提问于 2020-05-30 09:04:33
回答 3查看 679关注 0票数 3

我只是在学习PHP,我想创建一个表来显示我提交给我的数据库的回显数据,我遇到的问题是,默认情况下,当您看到水平默认表这是我的脚本时,这个表是水平显示的。

​

代码语言:javascript
复制
<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,但是我根本无法得到结果,而且表的形状与我想要的相去甚远,这是我的页面的完整脚本。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-30 13:38:01

就像其他人说的,你应该把你的水平数组转换成一个垂直数组。

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

下面是在mysqli中所做的工作:

代码语言:javascript
复制
<?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的答案中的代码输出该数组:

代码语言:javascript
复制
<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>
票数 3
EN

Stack Overflow用户

发布于 2020-05-30 10:10:33

我将您的数据模拟为普通数组,我使用一个want循环来创建一个新的Array,并创建我们需要将列翻转成行的格式,下面是我认为您想要的:

代码语言:javascript
复制
<?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>
票数 1
EN

Stack Overflow用户

发布于 2020-05-30 10:06:25

这不是个好主意!如果您有大量的行,您将生成一个长表,对于屏幕上的用户来说是不可见的。

如果您想这样做,毕竟您可以更改表结构,但您将不尊重html表结构。

我会给你一个

脏码

代码语言:javascript
复制
<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代替表

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62100230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档