用于创建HTML表的PHP循环

时间:2017-12-10 11:50:21

标签: php loops

我有一个从MySQL查询中填充的数组:

if ($result) {
    $foundResult = true;
    foreach ($result as $row) {
        array_push($searchResultAccount,$row->Account);
        array_push($searchResultUsername,$row->Username);
        array_push($searchResultPassword,$row->Password);
        array_push($searchResultCreated,$row->Created);
        array_push($searchResultStrength,$row->Strength);
    }
} else {
    array_push($error,"No results found");
}

在我的页面中,我想创建一个表,并使用数组中的结果填充引导表。但是,表中的每个单元格都会打印该给定字段的所有结果集。我怀疑我的循环逻辑有问题。我尝试从foreach改为for循环,但仍然没有运气:

<tbody>
  <?php for ($x = 0; $x < sizeof($result); $x++) { ?>
    <tr>
      <td><?php for ($i = 0; $i < sizeof($searchResultAccount); $i++){echo($searchResultAccount[$i]);}?></td>
      <td><?php for ($i = 0; $i < sizeof($searchResultUsername); $i++){echo($searchResultUsername[$i]);}?></td>
      <td><?php for ($i = 0; $i < sizeof($searchResultPassword); $i++){echo($searchResultPassword[$i]);}?></td>
      <td><?php for ($i = 0; $i < sizeof($searchResultCreated); $i++){echo($searchResultCreated[$i]);}?></td>
      <td><p>ExpiresHere</p></td>
      <td><?php for ($i = 0; $i < sizeof($searchResultStrength); $i++){echo($searchResultStrength[$i]);}?></td>
    </tr>
  <?php } ?>
</tbody>

结果如下所示:

enter image description here

我在阵列中有2个结果,正如您所看到的,它们在每个单元格中一起打印。关于我哪里出错的任何想法?

编辑:完整的PHP代码,如下面的查询字符串:

$sql = "SELECT * FROM Accounts WHERE User_ID = :userid AND Account = :account";
    $stmt = $pdo->prepare($sql);

    $stmt->bindValue(':userid',$userid);
    $stmt->bindValue(':account',$account);
    $stmt->execute();
    $result = $stmt->fetchAll(PDO::FETCH_CLASS);

    if($result) {
        $foundResult = true;
        foreach($result as $row) {
            array_push($searchResultAccount,$row->Account);
            array_push($searchResultUsername,$row->Username);
            array_push($searchResultPassword,$row->Password);
            array_push($searchResultCreated,$row->Created);
            array_push($searchResultStrength,$row->Strength);
        }
    } else {
        array_push($error,"No results found");
    }

4 个答案:

答案 0 :(得分:2)

像这样工作:

steps == 0.5

使用此方法可以为每个结果行创建表行

答案 1 :(得分:1)

您必须删除td元素内的for循环

foreach($result as $row) {
        <tr>
           <td><?php echo $row->Account;?></td>
           <td><?php echo $row->Username;?></td>
           <td><?php echo $row->Password;?></td>
           <td><?php echo $row->Created;?></td>
           <td><?php echo $row->Strength;?></td>
        </tr>
}

答案 2 :(得分:1)

问题出现的原因是这样的行。

for($i = 0; $i < sizeof($searchResultAccount); $i++){echo($searchResultAccount[$i]);}

我猜测&#34;发生问题的原因是这是您要打印的行的长度,而不是您希望在表格上打印的数据的数量。

尝试更改以下行:

<?php for($i = 0; $i < sizeof($searchResultAccount); $i++){echo($searchResultAccount[$i]);}?>

<td><?php echo($searchResultAccount[$x]) ; } ?></td>

答案 3 :(得分:0)

现在,您正在循环每个tablerow(tr)中的每个结果。使用此代码,您只关注属于tr。

的结果
<tbody>
  <?php for($x = 0; $x < sizeof($result); $x++) { ?>
    <tr>
      <td><?php echo($searchResultAccount[$x]);?></td>
      <td><?php echo($searchResultUsername[$x]);?></td>
      <td><?php echo($searchResultPassword[$x]);?></td>
      <td><?php echo($searchResultCreated[$x]);?></td>
      <td><p>ExpiresHere</p></td>
      <td><?php echo($searchResultStrength[$x]);?></td>
    </tr>
  <?php } ?>
</tbody>