0

我在 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
}
?>

我希望 'table'$query成为来自 HTML 的变量。这是 HTML 的示例行:

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

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

4

3 回答 3

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 中完成的,那将是可能的。

于 2013-03-04T14:00:22.787 回答
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>
于 2013-03-04T13:59:04.717 回答
0

您无法在 PHP 中访问 html-tags,您必须在调用query.php. 有关如何使用该文件中的代码的更好解决方案,请查看其他答案。

(顺便说一句。$thisist 仅用于处理对象,访问对象属性的语法将$this->name在 PHP 中,不是$this.name,但由于这里没有对象,因此完全无关;)

于 2013-03-04T14:02:50.817 回答