0

我有一个带有选择下拉列表的 HTML 表单。我想从我的 MySQL 数据库中填充下拉列表。HTML 表单已经有一些 java 脚本来处理日期选择器,以及表单中某个字段的当前日期。

我可以手动对表单进行编码以供选择,但希望它来自 MySQL。我正在使用的 php 我放入了它自己的文件 name.php 以确保它正常工作。我在 php 中添加了一些 echo 语句来构建表单和选择,然后填充选择并关闭它。这作为一个独立的 php 工作得很好。

当我在选择定义下的表单中附加 php 时,它根本不会填充选择,它是空白/空的。如果我以选择选项的格式添加一些回显语句以输出信息,则第一个回显永远不会显示,并且随后的回显会显示,但任何变量都会显示为变量名称。

<form id="form1" name="form1" method="post" action="/db_log.php">
Field:<select name="id">

<?php

    require_once dirname(__FILE__) . '/db_connect.php';
$db = new DB_CONNECT();

$query="SELECT id, name FROM file order by name";
$result=mysql_query($query);

while ($row = mysql_fetch_array($result)) {
  $id = $row['id'];
  $name =$row['name'];
  echo "<option value=\"$id\"> $name </option>";
  }
?>

</select><br />
</form>

以上是一个空的选择下拉菜单。但这作为 PHP 文件非常有用。

<?php
echo "<form id=\"form1\" name=\"form1\" method=\"post\" action=\"/db_log.php\">";
    echo "Select:<select name=\"id\">";
    require_once dirname(__FILE__) . '/db_connect.php';
$db = new DB_CONNECT();

$result=mysql_query("SELECT id, name FROM file order by name");

while ($row = mysql_fetch_array($result)) {
  $id = $row['id'];
  $name =$row['name'];
  echo "<option value=\"$id\"> $name </option>";
  }

    echo "</select><br />";
    echo "</form>";
?>

如果我在 HTML 表单中添加一个回声,例如在任何其他回声之前添加一个测试回声,它将被忽略。

<form id="form1" name="form1" method="post" action="/db_log.php">
Field:<select name="id">

<?php
  echo "<option value=\"1\"> Test-name </option>";

    require_once dirname(__FILE__) . '/db_connect.php';
$db = new DB_CONNECT();

$query="SELECT id, name FROM file order by name";
$result=mysql_query($query);

while ($row = mysql_fetch_array($result)) {
  $id = $row['id'];
  $name =$row['name'];
  echo "<option value=\"$id\"> $name </option>";
  }
?>

</select><br />
</form>

唯一显示的是选择 $name 的选项

4

2 回答 2

0

A 有一个从我的 mysql 数据库提供的组合框。

我是这样的:

 <tr>
                    <td>Emergency service</td>
                    <td><?php 
                            $nombreEmergencia;
                            $idEmergencia;
                            $sql4 = "SELECT  `idEmergencias`, `nombre` FROM  `emergencias` WHERE 1";
                            $iterador = $conn->consulta($sql4);

                            echo '<select name="idEmergencia" id="idEmergencia" style="width:228px">
                            <option value="-1" selected>(please select:)</option>';
                            while($iterador->hayElemento()){
                                    $nombreEmergencia = $iterador->getElemento("nombre");
                                    $idEmergencia = $iterador->getElemento("idEmergencias");
                                    echo '<option value="'.$idEmergencia.'">'.utf8_encode($nombreEmergencia).'</option>';
                            }
                            echo '</select>'; ?></td>
                  </tr>

正如您所看到的,您必须使用带有函数的“迭代器”变量来检查数据库中的更多元素并带来它们。

该辅助功能如下所示:

<?php
class Iterador{
    private $ultimoDato;
    private $id;

    public function __construct($id){
        $this->id = $id;
    }

    public function hayElemento(){
        $dato = mysql_fetch_array($this->id);
        $this->ultimoDato = $dato;
        return !empty($dato);
    }

    public function getElemento($columnas){
        return $this->ultimoDato[$columnas];
    }

    public function inicializar(){
        $dato = mysql_fetch_array($this->id);
        $this->ultimoDato = $dato;
    }

    public function hay(){
        return !empty($this->ultimoDato);
    }

    public function siguiente(){
        $dato=mysql_fetch_array($this->id);
        $this->ultimoDato=$dato;
    }


}
?>

希望这可以帮助!!

于 2012-09-24T15:13:18.057 回答
0

基于这个问题和之前的问题以及你得到的评论,我猜你正在尝试从.html文件中运行 php。您需要将代码(包括 html)保存在.php文件中才能正常工作。

于 2012-09-24T15:25:57.827 回答