在PHP中将MySQL输出显示为行而不是列

时间:2019-06-04 14:56:54

标签: php mysql arrays pivot transpose

大家下午好:)

我想在PHP页面上以行而不是列的形式显示MySQL输出,以便于移动查看和滚动(以便用户可以向下滚动数据而不是跨数据)。

我已经阅读了有关数据透视和转置的信息,但是不确定什么是转换网页上返回数据输出的最合适方法。请问您最好使用什么?看起来用PHP而不是MySQL更加容易?

我使用的是标准发布表格,连接PDO,isset,thead,php echo td和th等。

我当前的代码:

    <!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />

    <title></title>

    <link rel="stylesheet" href="css/style.css" />
  </head>

<body>

<h1>Find people</h1>

    <form method="post">
        <label for="people">Enter person</label>
        <input type="text" id="people" name="people">
        <input type="submit" name="submit" value="View Results">

    </form>

<?php

//error_reporting(-1);
//ini_set('display_errors', 'On');

if (isset($_POST['submit'])) {
  try {
    require "./config.php";
    require "./common.php";

    $connection = new PDO($dsn, $username, $password, $options);

    $sql = "SELECT *
    FROM Basics
    WHERE UniqueID = :people";

    $people = $_POST['people'];

    $statement = $connection->prepare($sql);
    $statement->bindParam(':people', $people, PDO::PARAM_STR);
    $statement->execute();

    $result = $statement->fetchAll();
  } catch(PDOException $error) {
    echo $sql . "<br>" . $error->getMessage();
  }
}
?>


<?php
if (isset($_POST['submit'])) {
  if ($result && $statement->rowCount() > 0) { ?>
    <h2>Results</h2>

    <table>
<?php echo '<table border="1">';?>
      <thead>
<tr>
  <th>Field 1</th>
  <th>Field 2</th>
  <th>Field 3</th>
</tr>
      </thead>
      <tbody>
  <?php foreach ($result as $row) { ?>
      <tr>
<td><?php echo escape($row["Field 1"]); ?></td>
<td><?php echo escape($row["Field 2"]); ?></td>
<td><?php echo escape($row["Field 3"]); ?></td>


      </tr>
    <?php } ?>
      </tbody>
  </table>
  <?php } else { ?>
     <br>No results found for <?php echo escape($_POST['people']); ?>, as the data has likely not been added yet.
  <?php }
} ?>

<!--
<?php if (isset($_POST['submit']) && $statement) { ?>
  <?php echo escape($_POST['people']); ?> successfully found.
<?php } ?>
-->

  </body>
</html>

我当前的输出:

enter image description here

当前示例输出:

enter image description here

我想要的输出示例:

enter image description here

类似于我发现的这个示例(可以在表中,也可以不在下面):

enter image description here

更新编辑:

好像我只需要使用ul和li!

<ul>
<li><b>Name:</b> <?php echo escape($row["Name"]); ?></li>
</ul>

2 个答案:

答案 0 :(得分:0)

我将使用array_walk()遍历行,并在该循环内,启动tr-tag,遍历当前行的值,将其输出为td-elements,退出td循环,输出结束tr标签并退出tr循环。不是那种花哨的解决方案,而是简单的。

答案 1 :(得分:0)

好像我只需要使用ul和li!

<ul>
<li><b>Name:</b> <?php echo escape($row["Name"]); ?></li>
</ul>