我只是在学习PHP,我想创建一个表来显示我提交给我的数据库的回显数据,我遇到的问题是,默认情况下,当您看到水平默认表这是我的脚本时,这个表是水平显示的。
<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,但是我根本无法得到结果,而且表的形状与我想要的相去甚远,这是我的页面的完整脚本。
发布于 2020-05-30 13:38:01
就像其他人说的,你应该把你的水平数组转换成一个垂直数组。
当然,转换任何查询结果应该是一个通用函数,而不是硬编码行标题。其思想是获取每一行的数组键,并将它们用作新数组的键,然后将每个对应的值添加到新的数组项中。
下面是在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>发布于 2020-05-30 10:10:33
我将您的数据模拟为普通数组,我使用一个want循环来创建一个新的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>发布于 2020-05-30 10:06:25
这不是个好主意!如果您有大量的行,您将生成一个长表,对于屏幕上的用户来说是不可见的。
如果您想这样做,毕竟您可以更改表结构,但您将不尊重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代替表
https://stackoverflow.com/questions/62100230
复制相似问题