在函数内部使变量可用。(PHP)

时间:2014-01-05 00:59:09

标签: php function variables

我正在建立一个应用程序来跟踪我们处理的客户的某些信息,如名称/日期/小时工作/电话号码等。此信息存储在数据库中。因为我们有不同的部门,如SEO / WEB /销售等,以及这些团队中的不同人,应用程序提供了不同的方式来根据按下的过滤器按钮过滤信息。

当有人按下“过滤器按钮”时,在此示例中,让我们按下“按部门查看”按钮,将它们带到实际的硬编码页面。 举个例子:

viewSeoAccs.php

viewWebAccs.php

ViewSalesAccs.php

在这些页面中,我有查询根据按下的过滤器提取信息,但html是相同的。现在问题来了。

我有许多不同的页面(基于过滤器),每次有对html进行编辑时,我都必须进入每个PHP页面来实现更改。

我想要做的是创建一个为我吐出html的函数。我已经走了一半,我知道问题,似乎无法找到解决方案。

这是一些代码。

在我的functions.php文件中,我有一个名为“htmlBlockTEST”的函数,它有这段代码。

   EXAMPLE: (code chopped for easy reading)
    <?php
        function htmlBlockTEST(){

                echo '' ?>


    <h2 class="accName fl"><?php echo $row['company_name']; ?></h2>
    <div class="<?php echo $row['acc_risk']; ?>"> Risk Level. </div>


    //ALOT MORE CODE goes here lol.

    <?php
        }
    ?>

这是在标题中并通过“include_once('functions.php')购买。 在此之下,我有特定的变量来提取查询数据。 (以下示例)

$pullAllAccounts = "SELECT * FROM tlm_accounts ORDER BY company_name ASC;";
$pullAllAccountsDoIt = mysqli_query($c2d, $pullAllAccounts) or die ("could not pull WEB team data" . mysqli_error($c2d));
?>

现在我遍历数据库并显示如下信息:

<?php

while($row = mysqli_fetch_array($pullAllAccountsDoIt)){
$compName = $row['company_name'];


?>


<?php htmlBlockTEST(); ?>

<?php 

    }

?>

在上面的代码中,函数调用“htmlBlockTEST”就是问题所在。由于保存查询的变量在函数之外,我假设它们没有被传递给函数。我不想把它们放在函数中,因为HTML在所有页面中都是相同的,但不是所有数据。

我需要保存例如$row['company_name']的变量在函数内部也可用,这样它就不会抛出“未定义的变量”错误。

我怎样才能实现这一目标?在while循环中(或其他方式)使这些变量在函数???

中可用的最佳方法是什么

PS,我已经google并发现了诸如$ GLOBALS ['x']之类的东西,但是从我读过的内容来看,它并不是最好的方式或更简单的方式,总体而言我甚至对如何使用它感到困惑。

非常感谢任何帮助。 谢谢你提前。

1 个答案:

答案 0 :(得分:2)

选项1:

while($row = mysqli_fetch_array($pullAllAccountsDoIt)){
    htmlBlockTEST($row);
}

选项2:

global $row;
while($row = mysqli_fetch_array($pullAllAccountsDoIt)){
    $compName = $row['company_name'];
    htmlBlockTEST();
}

//and in your htmlBlockTEST() function just right this:
function htmlBlockTEST(){
    global $row; ?>
    <h2 class="accName fl"><?php echo $row['company_name']; ?></h2>
    <div class="<?php echo $row['acc_risk']; ?>"> Risk Level. </div>

    <?php
    //ALOT MORE CODE goes here lol.
}
?>

当然,你还有更多选择。