2013-03-04 87 views
0

我在PHP页面上有一个HTML5表单。一些表单元素包含用于填充下拉菜单和选项的PHP代码。不同的选项放在每个菜单中,但它们都由相同的PHP代码填充(称为query.php)。返回包含PHP代码的HTML元素名称的函数

我想将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“表”是从HTML未来的变量。下面是HTML的例子行:

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

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

回答

2

我建议创建一个函数来做到这一点:

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

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

in que ry.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完成的话,那将是可能的。

+0

谢谢,我只是学习PHP,并不知道如何制作功能。是否有任何理由在单独的PHP文件中使用此函数,而不仅仅是使用表单的页面?表单页面也是.php – Matt 2013-03-04 14:26:43

+0

我编辑了代码,以反映我的问题有效。 '$ string + =“

+0

我的例子在不同的文件中有函数,因此包含在html部分之上。 – Manuel 2013-03-04 15:30:25

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> 
0

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

(顺便说一句$this IST只为工作对象和访问对象的属性语法将$this->name在PHP中,没有$this.name,但这里没有对象,那是相当无关。)