PHP块解析与HTML

时间:2017-06-07 19:55:54

标签: php html

我有一些工作正常的代码。我想将一个重复的部分抽象成一个函数,所以我这样做了,但现在我有两个问题。第一个是当我将函数courseSet的定义放在文件中而不是调用时,我得到以下错误:

  

致命错误:调用未定义的函数courseSet()

我认为定义一个函数的位置并不重要,因为整个PHP文件在它运行之前被解析了?在未能使其工作之后,我决定放弃并将函数移动到调用之上的同一个PHP块中。现在,我得到了一个不同的错误。在我的代码顶部,我定义了数据库变量$db。在我的函数中,在函数中调用该变量之前,我有一行global $db;。基于我对PHP作用域的理解,我应该能够执行下一行($db->setQuery(...);,但是我得到了另一个错误:

  

致命错误:在null

上调用成员函数setQuery()

我的代码的相关部分:

<?php
$db = JFactory::getDBO(); //Get Database Object
?>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
    <fieldset>
        <legend>Dettagli</legend>
        <p>
            Nome e Cognome:<br>
            <input type="text" name="nome">
        </p>
        <p>
            Organizzazione:<br>
            <input type="text" name="organizzazione">
        </p>
        <p>
            Numero di partecipanti:<br>
            <input type="number" name="num_part" min="1">
        </p>
    </fieldset>

    <?php
        courseSet("IG");
        courseSet("IS");
        courseSet("PG");
        courseSet("BI");
        courseSet("IT");
    ?>

    <input type="submit" value="Submit">
</form>

<?php
    function fullCatName($categoria) {
        $categoria_name = "";

        switch ($categoria) {
            case "IG" :
                $categoria_name = "Informatica Generale";
                break;
            case "IS" :
                $categoria_name = "Informatica Specializzata";
                break;
            case "PG" :
                $categoria_name = "Progettazione Gestione";
                break;
            case "BI" :
                $categoria_name = "Business Intelligence";
                break;
            case "IT" :
                $categoria_name = "Impiantistica: Normativa e Nuove Tecnologie";
        }

        return $categoria_name;
    }

    function courseSet($categoria) {
        $cat_name = fullCatName($categoria);

        echo "<fieldset><legend>Corsi: ".$cat_name."</legend>";

        global $db;
        $db->setQuery("SELECT DISTINCT titolo FROM Corsi WHERE `categoria` = '$categoria'");
        $result = $db->loadColumn();
        foreach($result as $key => $value){
            echo "<input type='checkbox' name='corso[]' value='".$result[$key]."''>".$result[$key]."<br>";
        }

        echo "<br></fieldset>";
    }
?>

请让我知道我做错了什么!感谢。

0 个答案:

没有答案