返回包含PHP代码的HTML元素名称的函数

时间:2013-03-04 13:53:02

标签: php html html5 forms

我在PHP页面上有一个HTML5表单。某些表单元素包含PHP代码,例如使用选项填充下拉菜单。每个菜单中都有不同的选项,但它们都由相同的PHP代码填充(称为query.php)。

我想将HTML元素的名称传递给query.php以确定要执行的查询。 query.php通常编码:

<?php
$connection = pg_connect(...);
$query = "SELECT name FROM table ORDER BY name ASC;";
$results = pg_query($connection, $query);
$rows = pg_num_rows($results);

for ($i=0; $i < $rows; $i++) {
    ?>
    <option><?php echo pg_fetch_result($results, $i, 0); ?></option>
    <?php
}
?>

我希望$query中的'table'是来自HTML的变量。以下是HTML的示例行:

<p>Select a City: <select name="city"><?php include("query.php"); ?></select>

我一直在尝试使用HTTP GET方法将{query.php'替换为query.php?table=$this.name。我知道我应该能够在query.php中使用$_GET['table']并获取传递的值,但我不知道获取HTML元素名称的函数。在HTML标记中使用什么函数时,将返回HTML元素的名称?例如,如果我在上面的HTML中使用query.php?table=$this.name,则query.php中的$_GET['table']应返回“city”。只有$ this.name才是正确的功能。

3 个答案:

答案 0 :(得分:2)

我建议创建一个函数来执行此操作:

<?php include("query.php"); ?>

<p>Select a City: <select name="city"><?php echo queryFunction("city"); ?></select></p>

在query.php中:

<?php
function queryFunction($table) {
    $connection = pg_connect(...);
    $query = "SELECT name FROM $table ORDER BY name ASC;";
    $results = pg_query($connection, $query);
    $rows = pg_num_rows($results);
    $string = "";    

    for ($i=0; $i < $rows; $i++) {
        $string = $string . "<option>" . pg_fetch_result($results, $i, 0) . "</option>";
    }

    return $string;
}
?>

我很确定除非您自己提供,否则无法获取选择框的名称。如果这是用JavaScript完成的,那就可能了。

答案 1 :(得分:1)

通常的做法是:

在query.php中:

<?php
function generateTags() // you can put arguments here
{ 
    $connection = pg_connect(...);
    $query = "SELECT name FROM table ORDER BY name ASC;";
    $results = pg_query($connection, $query);
    $rows = pg_num_rows($results);

    for ($i=0; $i < $rows; $i++) {
            echo "<option>".pg_fetch_result($results, $i, 0)."</option>";
        }
}
?>

然后在php html中:

<?php include("query.php"); ?><!-- do this just once at the beginning -->

<p>Select a City: <select name="city"><?php generateTags(/* here could be your arguments */); ?></select>

答案 2 :(得分:0)

您无法在PHP中访问html标签,您必须在调用query.php时手动编写表名。有关更好的解决方案,如何使用该文件中的代码,请查看其他答案。

(btw。$this仅用于处理对象,访问对象属性的语法在PHP中为$this->name,而不是$this.name,但由于此处没有对象,因此是无关紧要的;)