“如何修复”;而";循环和php来构建HTML表,该表只在HTML表中显示一个结果,其他所有结果都不显示HTML表

“如何修复”;而";循环和php来构建HTML表,该表只在HTML表中显示一个结果,其他所有结果都不显示HTML表,php,html,mysql,Php,Html,Mysql,我使用“while”循环浏览我的PDO数据库结果,并且只要结果存在,我就使用PHP构建HTML表。当查询返回数据时,PHP代码将只在HTML表中放置一个结果,而在表格式之外的所有结果都将被放置。我的代码中缺少了什么 我已经将我的表编码移动到while循环的内部和外部。我尝试在while循环中嵌入一个foreach循环,但它只返回11个结果,仍然只有一个HTML表格式的结果 <?php public static function find_members() { /* -----

我使用“while”循环浏览我的PDO数据库结果,并且只要结果存在,我就使用PHP构建HTML表。当查询返回数据时,PHP代码将只在HTML表中放置一个结果,而在表格式之外的所有结果都将被放置。我的代码中缺少了什么

我已经将我的表编码移动到while循环的内部和外部。我尝试在while循环中嵌入一个foreach循环,但它只返回11个结果,仍然只有一个HTML表格式的结果

<?php 

public static function find_members() {

  /* -------------BEGIN PDO-----------*/
  if (!extension_loaded ('PDO' )) {
      echo 'PDO is NOT loaded!'."\n";
      if (!extension_loaded('pdo_mysql')){
          echo 'PDO mysql driver is NOT loaded.'."\n";
      }
  }
  try {
            // calling stored procedure command
          $sql = 'CALL `Members`()'; 
          //$sql = "SELECT * FROM members";

          // prepare for execution of the stored procedure
          $stmt = self::$database->prepare($sql);

        // execute the stored procedure
          $stmt->execute();

        if ($stmt->rowCount() > 0) {

      echo     "<table class='membertable'>";
      echo "<thead>" . "header for table" ."</thead>";

            while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

              $mejpeg = $row['photojpeg'];
              $email = $row['me_email'];
              $name = $row['me_name'];


              echo "<tbody>";
              echo "<tr>";
              echo "<td>
              {$name}<br />
               {$email }<br />
              </td>";
              echo "<td>". '<img src="data:image/jpeg;base64, ' .base64_encode($mejpeg). ' " height="120" width="" />'."</td>";
              echo "</tboby>";
              echo "</tr>";
              echo "<tfoot>";
                echo "<tr>";
                  echo "<td>"."</td>";
                echo "</tr>";
              echo "</tfoot>";
              echo "</table>";

         }} else {
            echo "0 results";
              }

      } catch (PDOException $e) {
          die("Error occurred:" . $e->getMessage());
      }
      return null;

}
?>

在结果网页上调用:

<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>

我希望php代码为每个结果构建表。但是,实际结果是只有第一条记录使用表标记格式化,而其他结果没有表标记

我的最终解决方案

PHP代码:

<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>

然后我的网页HTML/PHP用于主DIV search.PHP


成员
然后我通过CSS管理网页的输出

@charset“utf-8”;
/*CSS文档*/
* {
保证金:0;
填充:0;
}
/*这已经在网页上了,并且没有从php中得到响应。下面的所有内容都在打开和关闭标记之间调用*/
.成员{
显示:网格;
网格模板列:自动;
栅极间隙:20px 50px;
网格模板区域:
“头”
“内容”;
}
.头{
网格区域:头部;
显示:网格;
边缘顶部:20px;
文本对齐:居中;
}
.内容{
网格区域:内容;
显示:网格;
网格模板列:自动;
左边距:10px;
右边距:10px;
网格列开始:1;
网格柱端:2;
网格行间距:10px;
栅柱间隙:10px;
}
#信息{
轮廓:立体;
}
.textwrap{
浮动:左;
保证金:1px;
位置:相对位置;
宽度:自动;
高度:160px;
背景位置:50%50%;
背景重复:无重复;
背景尺寸:封面;
}
.info{
网格区域:信息;
}
.照片{
网格区域:照片;
}
.隐藏{
显示:无;
}

最终输出循环浏览结果,并在带有样式的网页上显示结果。这比使用表更简单、更灵活。

试试这个,这是从函数返回数据的正确方法

<?php
public static function find_members()
{
    /* -------------BEGIN PDO-----------*/
    if (!extension_loaded('PDO')) {
        echo 'PDO is NOT loaded!' . "\n";
        if (!extension_loaded('pdo_mysql')) {
            echo 'PDO mysql driver is NOT loaded.' . "\n";
        }
    }

    try {

        // calling stored procedure command

        $sql = 'CALL `Members`()';

        // $sql = "SELECT * FROM members";
        // prepare for execution of the stored procedure

        $stmt = self::$database->prepare($sql);

        // execute the stored procedure

        $stmt->execute();
        if ($stmt->rowCount() > 0) {
            $returnDataOutter[] = "<table class='membertable'>";
            $returnDataOutter[] = "<thead>" . "header for table" . "</thead>";
            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                $mejpeg = $row['photojpeg'];
                $email = $row['me_email'];
                $name = $row['me_name'];
                $returnData = "<tbody>";
                $returnData.= "<tr>";
                $returnData.= "<td>
              {$name}<br />
               {$email}<br />
              </td>";
                $returnData .= "<td>" . '<img src="data:image/jpeg;base64, ' . base64_encode($mejpeg) . ' " height="120" width="" />' . "</td>";
                $returnData .= "</tr>";
                $returnData .= "</tboby>";
                $returnData .= "<tfoot>";
                $returnData .= "<tr>";
                $returnData .= "<td>" . "</td>";
                $returnData .= "</tr>";
                $returnData .= "</tfoot>";
                $returnData .= "</table>";

                $returnDataOutter[] = returnData;
            }
        } else {
            $returnDataOutter[] = "0 results";
        }

        return $returnDataOutter;
    }

    catch(PDOException $e) {
        die("Error occurred:" . $e->getMessage());
    }

    return [];
}

?>

在结果网页上调用:

<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>

试试这个,这是从函数返回数据的正确方法

<?php
public static function find_members()
{
    /* -------------BEGIN PDO-----------*/
    if (!extension_loaded('PDO')) {
        echo 'PDO is NOT loaded!' . "\n";
        if (!extension_loaded('pdo_mysql')) {
            echo 'PDO mysql driver is NOT loaded.' . "\n";
        }
    }

    try {

        // calling stored procedure command

        $sql = 'CALL `Members`()';

        // $sql = "SELECT * FROM members";
        // prepare for execution of the stored procedure

        $stmt = self::$database->prepare($sql);

        // execute the stored procedure

        $stmt->execute();
        if ($stmt->rowCount() > 0) {
            $returnDataOutter[] = "<table class='membertable'>";
            $returnDataOutter[] = "<thead>" . "header for table" . "</thead>";
            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                $mejpeg = $row['photojpeg'];
                $email = $row['me_email'];
                $name = $row['me_name'];
                $returnData = "<tbody>";
                $returnData.= "<tr>";
                $returnData.= "<td>
              {$name}<br />
               {$email}<br />
              </td>";
                $returnData .= "<td>" . '<img src="data:image/jpeg;base64, ' . base64_encode($mejpeg) . ' " height="120" width="" />' . "</td>";
                $returnData .= "</tr>";
                $returnData .= "</tboby>";
                $returnData .= "<tfoot>";
                $returnData .= "<tr>";
                $returnData .= "<td>" . "</td>";
                $returnData .= "</tr>";
                $returnData .= "</tfoot>";
                $returnData .= "</table>";

                $returnDataOutter[] = returnData;
            }
        } else {
            $returnDataOutter[] = "0 results";
        }

        return $returnDataOutter;
    }

    catch(PDOException $e) {
        die("Error occurred:" . $e->getMessage());
    }

    return [];
}

?>

在结果网页上调用:

<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>
<?php $mbs = array(memberPage::find_members()); foreach($mbs as $mb) { echo $mb;} ?>

未经测试,但我过去是这样做的

    <?php 
    public static function find_members() {
      /* -------------BEGIN PDO-----------*/
      if (!extension_loaded ('PDO' )) {
          echo 'PDO is NOT loaded!'."\n";
          if (!extension_loaded('pdo_mysql')){
              echo 'PDO mysql driver is NOT loaded.'."\n";
          }
      }
      try {
        // calling stored procedure command
        $sql = 'CALL `Members`()'; 
        // prepare for execution of the stored procedure
        $stmt = self::$database->prepare($sql);
        // execute the stored procedure
        $stmt->execute();

        if ($stmt && $stmt->rowCount() > 0) {
            echo '<table class="membertable">';
            echo '<thead><tr><th>Name/Email</th><th>Photo</th></tr></thead>';
            echo '<tbody>';

            while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                $mejpeg = '<img src=data:image/jpeg;base64, ' . base64_encode($row['photojpeg']) . ' height="120" width="80" />';
                $email = $row['me_email'];
                $name = $row['me_name'];

                echo '<tr>';
                echo '<td>'.$name.'<br />'.$email.'<br /></td>';
                echo '<td>'.$mejpeg.'</td>';
                echo '</tr>';
            }

            echo '</tbody>';
            echo '<tfoot>';
            echo '<tr>';
            echo '<td>something 1</td>';
            echo '<td>something 2</td>';
            echo '</tr>';
            echo '</tfoot>';
            echo '</table>';
        } else {
            echo '<div>0 results</div>';
        }

      } catch (PDOException $e) {
          die('Error occurred: ' . $e->getMessage());
      }
    }


未经测试,但我过去是这样做的

    <?php 
    public static function find_members() {
      /* -------------BEGIN PDO-----------*/
      if (!extension_loaded ('PDO' )) {
          echo 'PDO is NOT loaded!'."\n";
          if (!extension_loaded('pdo_mysql')){
              echo 'PDO mysql driver is NOT loaded.'."\n";
          }
      }
      try {
        // calling stored procedure command
        $sql = 'CALL `Members`()'; 
        // prepare for execution of the stored procedure
        $stmt = self::$database->prepare($sql);
        // execute the stored procedure
        $stmt->execute();

        if ($stmt && $stmt->rowCount() > 0) {
            echo '<table class="membertable">';
            echo '<thead><tr><th>Name/Email</th><th>Photo</th></tr></thead>';
            echo '<tbody>';

            while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                $mejpeg = '<img src=data:image/jpeg;base64, ' . base64_encode($row['photojpeg']) . ' height="120" width="80" />';
                $email = $row['me_email'];
                $name = $row['me_name'];

                echo '<tr>';
                echo '<td>'.$name.'<br />'.$email.'<br /></td>';
                echo '<td>'.$mejpeg.'</td>';
                echo '</tr>';
            }

            echo '</tbody>';
            echo '<tfoot>';
            echo '<tr>';
            echo '<td>something 1</td>';
            echo '<td>something 2</td>';
            echo '</tr>';
            echo '</tfoot>';
            echo '</table>';
        } else {
            echo '<div>0 results</div>';
        }

      } catch (PDOException $e) {
          die('Error occurred: ' . $e->getMessage());
      }
    }



您正在关闭循环中的表。如果您希望所有内容以行的形式显示,您应该在循环内放置
标记,在循环外放置
打开和关闭标记。您还应该将
标记嵌套在一起。@tshimkus感谢您的反馈。你的推荐很有帮助。当你撞到墙的时候,能有第二双眼睛真是太好了。谢谢你的回复。我已经用我的解决方案更新了代码。您正在关闭循环中的表。如果您希望所有内容以行的形式显示,您应该在循环内放置
标记,在循环外放置
打开和关闭标记。您还应该将
标记嵌套在一起。@tshimkus感谢您的反馈。你的推荐很有帮助。当你撞到墙的时候,能有第二双眼睛真是太好了。谢谢你的回复。我已经用我的解决方案更新了代码。这是我的答案。这解决了我的问题。我唯一要解决的问题是让他们并排而不是上下排成一排。谢谢你的帮助。@WesHenderson不知道你说的“…并排排…”是什么意思。你能分享一个屏幕截图吗?评论框不允许我添加屏幕截图。如果将其视为一个网格,则第1列第1行第1单元格将包含第一条记录,因为代码会在上面回响。然后第1列第2行第1单元回显第二条记录。我希望列1、2、3—第1行—单元格1、2、3显示前三条记录,然后开始新行。这将持续到循环结束,然后停止。这有意义吗?~~~------------------------------------------------------------------------------------------------------------------校长1 |校长2 |校长3 |-----------------------------------------------------------------------------------------------姓名1 |name2 | name3 | | email1pic1 | email2pic2 | email3pic3 |--------------------------------------------------------------------------------------------~~~像这样吗?对不起,我不知道如何使用或```或~~~获得良好的格式。这就是我的答案。这解决了我的问题。我唯一要解决的问题是让他们并排而不是上下排成一排。谢谢你的帮助。@WesHenderson不知道你说的“…并排排…”是什么意思。你能分享一个屏幕截图吗?评论框不允许我添加屏幕截图。如果将其视为一个网格,则第1列第1行第1单元格将包含第一条记录,因为代码会在上面回响。然后第1列第2行第1单元回显第二条记录。我希望列1、2、3—第1行—单元格1、2、3显示前三条记录,然后开始新行。这将持续到循环结束,然后停止。这有意义吗?~~~-----------------------------------------------------