Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何向后传递值或随后检索?_Php_Html_Mysql - Fatal编程技术网

Php 如何向后传递值或随后检索?

Php 如何向后传递值或随后检索?,php,html,mysql,Php,Html,Mysql,我只想显示行数。我已经读到,只选择数据来计算行数是不好的做法。然而,我遇到的问题是,我想在其中显示计数的HTML元素先于实际计数 有人知道我如何将计数向后传递或在计数完成后检索吗? <div> ... <div id="count-container"> <?php echo $count; ?> </div> ... </div> ... <div id="data-container"> &l

我只想显示行数。我已经读到,只选择数据来计算行数是不好的做法。然而,我遇到的问题是,我想在其中显示计数的HTML元素先于实际计数

有人知道我如何将计数向后传递或在计数完成后检索吗?

<div>
  ...
  <div id="count-container">
    <?php echo $count; ?>
  </div>
  ...
</div>
...
<div id="data-container">
  <?php
    include "inc/connect.php";
    $stri  = "SELECT a, b, c, d... FROM table";
    $stat  = $conn->prepare($stri);
    $count = 0;
    if ($stat->execute()) {
      while ($row = $stat->fetch(PDO::FETCH_ASSOC)) {
        $count += 1;
        echo '<div class="row">';
        foreach ($row as $key=>$value) {
          echo '<div class="' .$key. ' data">';
          if (empty($value)) echo "---";
          else echo $value;
          echo "</div>";
        }
        echo "</div>";
      }
    }
    $conn = null;
  ?>
</div>

...
...
...
这可能吗?


您可以将输出存储在变量中,然后打印。这样,在渲染之前就有了逻辑

<?php
    include "inc/connect.php";

    $output = '';
    $stri  = "SELECT a, b, c, d... FROM table";
    $stat  = $conn->prepare($stri);
    $count = 0;
    if ($stat->execute()) {
        while ($row = $stat->fetch(PDO::FETCH_ASSOC)) {
            $count += 1;
            $output .= '<div class="row">';
            foreach ($row as $key=>$value) {
                $output .= '<div class="' .$key. ' data">';
                if (empty($value)) $output .="---";
                else echo $value;
                $output .= "</div>";
            }
            $output .= "</div>";
        }
    }
    $conn = null;
?>

<div>
    ...
    <div id="count-container">
        <?php echo $count; ?>
    </div>
    ...
</div>
...
<div id="data-container">
    <?php echo $output; ?>
</div>

...
...
...

有趣!连接HTML不会在某种程度上弄乱或弄乱它的格式?它将输出HTML而不会断行。如果你想把它印得漂亮的话。您可以添加一些
PHP\u EOL
。($output+=“”.PHP_EOL;)您的意思是连接字符串的
=
<代码>+=会把一切都粉碎成数字。@Anthony做新人没什么错<代码>+=对于习惯于JavaScript或其他语言的人来说是非常令人困惑的,因为这些语言会将两个字符串加在一起。就脚本语言而言,PHP异常古怪,它深受Perl的影响,Perl基本上是
sed
awk
,这两种工具比Perl和PHP更古老、更低级。@tadman你一针见血。因为
+=
是JS语法,所以我可能没有注意到。研究一下MVC,看看他们为什么这么做。通常,在使用HTML之前执行所有业务逻辑是一个好主意。任何随机选择的框架都会向您展示更好的方法。无政府主义的PHP代码是由CSS、HTML、JavaScript、SQL、PHP以及有时随机混合的其他垃圾组成的混乱混合物。一个框架将其划分为不同的关注点,从而使其更易于使用。模型处理SQL。视图处理HTML。基于路由的控制器接口模型和视图。它们还生成函数来封装功能,而不是有条件地将所有内容隐藏在
if
语句后面。无论从堆栈开始,您都会学到很多编程方面的知识,所以不要认为如果您使用框架,您就不会学到。如果您能学到更多的东西,那么您将有更好的示例和更多的代码来检查它们是如何实现的。看看各种各样的,并找到一个适合你的风格和需要。它们有各种各样的形式,从瘦的到非常全面的。@tadman我以前已经无数次听说过拉威尔。你似乎见多识广,所以我接受你的建议,再看一眼!你可能会发现拉威尔有点让人窒息,因为它特别要求你做事,或者你可能会发现不管在什么情况下,它都会支持你,这很好。PHP有大量支持良好的框架可供选择,所以不要认为这是Laravel还是core PHP之间的决定。您的问题域可能更适合另一个问题域。这是一个非常主观的决定,就像选一辆车一样。无论你决定做什么,都要从内到外学习,不要停止提问。这就是你不断提高的方式。