如何以html格式填充下拉菜单

时间:2014-01-15 15:16:35

标签: php html mysql

我正在尝试填充html表单中的下拉字段,但该字段不显示任何值,只显示空白字段。

我正在尝试以下代码:

<select name="Select" class="textfields" id="prods">
    <option id="0">--Producto--</option>

<?php
require("conectdb.php");
$allproducts = mysql_query("SELECT * FROM Productos");
while ($viewallproducts = mysql_fetch_array($allproducts)){
?>
    <option id="<?php echo $viewallproducts["ID"];?>"><?php echo $viewallproducts["CODIGO"];?></option>

<?php } ?>

</select>

我更改了引号并且; ...但是仍然没有,这是与数据库连接的代码(conectdb.php):

 <?php
$con=mysqli_connect("localhost","xxxxxx","xxxxxx","xxxxxx");

// Check connection
if (mysqli_connect_errno())
  echo "Failed to connect to MySQL: " . mysqli_connect_errno();

mysqli_close($con);
?> 

这似乎是数据库连接的问题,我现在尝试以下代码来看看会发生什么:

    <?php
 $username = "xxxxx";
$password = "xxxxx";
$hostname = "xxxx"; 

$dbhandle = mysql_connect($hostname, $username, $password)
  or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";


    $allproducts = mysql_query("SELECT * FROM PRODUCTOS");
    while ($viewallproducts = mysql_fetch_array($allproducts)){
        echo ($viewallproducts);
    }
        ?>

但是,在这个php上,我收到以下错误:

  

警告:mysql:fetch_array()期望参数1是资源。

我也试过mysql_fetch_row()并给我同样的错误。

4 个答案:

答案 0 :(得分:1)

1)你在require行中有错误(把文件名放在引号内)
2)你没有把值属性放在选项中。

试试这个:

 <select name="Select" class="textfields" id="prods">
        <option id="0" value="o">--Producto--</option>

        <?php
        require("conectdb.php");
    $allproducts = mysql_query("SELECT * FROM Productos");
    while ($viewallproducts = mysql_fetch_array($allproducts)){
        ?>
        <option id="<?php echo $viewallproducts['ID'];?>" value="<?php echo $viewallproducts['ID'];?>"><?php echo $viewallproducts['DESCRIPCION'];?></option>

    <?php } ?>

    </select>

答案 1 :(得分:0)

对您的代码进行一些编辑:

<select name="Select" class="textfields" id="prods">
<option id="0">--Producto--</option>

<?
require("conectdb.php");
$allproducts = mysql_query("SELECT * FROM Productos")
or die(mysql_error());
while ($viewallproducts = mysql_fetch_assoc($allproducts)){
?>
    <option id="<?=$viewallproducts['ID'];?>" value="<?=$viewallproducts['ID'];?>">
    <?=$viewallproducts['DESCRIPTION'];?></option>

<?php } ?>

</select>

您应该使用mysql_fetch_assoc代替mysql_fetch_array。您还应该检查sql查询是否先成功。

答案 2 :(得分:0)

我认为你犯了一个错误,因为你认为html中的ID是数据库中的ID。您需要为选项

使用“value”属性

偶然这一行

<option id="<?php echo $viewallproducts['ID'];?>"><?php echo $viewallproducts['DESCRIPCION'];?></option>

<option value="<?php echo $viewallproducts['ID'];?>"><?php echo $viewallproducts['DESCRIPCION'];?></option>

你也忘了:

  1. 在''
  2. 中要求参数
  3. ;在要求
  4. 之后
  5. 获取行的函数应该是'mysql_fetch_row'而不是'mysql_fetch_array'
  6. 我还建议您使用更好的数据库引擎,例如 PDO MySQLi ,因为 MySQL _ * 功能已被删除。

    代码格式:

    <select name="Select" class="textfields" id="prods">
    <option value="0">--Producto--</option>
    <?php
        require('conectdb.php'); // be sure that file exist you forgot about '' and ;
        $allproducts = mysql_query("SELECT * FROM `Productos`");
        while ($viewallproducts = mysql_fetch_row($allproducts))
         echo '<option value="'.$viewallproducts['ID'].'">'.$viewallproducts['DESCRIPCION'].'</option>';
    ?>
    </select>
    

答案 3 :(得分:0)

你忘了把分号放在行

之后
require(conectdb.php)

你应该加一个引号

require("conectdb.php");

也许是那个