php-mysql组合框更新不起作用


php mysql combobox the update dont work

提前谢谢,很抱歉,但我的英语不是很好。我在更新combobox时遇到了问题。我可以让这个组合框加载表中的数据,并显示为选中了存储在表中的记录,但在编辑注册表时,表保存为0(零)。我找不到错误。

这是INSERT 的组合框代码

Laboratorio: 
<select name="lab" size="0">
    <?php
        $sql = 'SELECT * FROM laboratorios order by lab_Nombre asc';
        $res = mysql_query($sql);
        while ($array = mysql_fetch_array($res)) { ?>
            <option value="<?php echo $array['lab_Id']?>"><?php echo $array['lab_Nombre']?> </option>
    <?php } ?>
</select><br/><br/>

这是UPDATE 的组合框代码

Laboratorio: 
<select name="lab" size="0">
    <?php
        $sqlLab = 'SELECT * FROM laboratorios order by lab_Nombre asc';
        $resLab = mysql_query($sqlLab);
        while ($arrayLab = mysql_fetch_array($resLab)) 
        { ?>
            <option value=<?php 
                            if ($array['ac_Lab']==$arrayLab['lab_Id'])
                            {
                                echo $arrayLab['lab_Id']?> selected="selected"><?php echo $arrayLab['lab_Nombre']?> </option>
                      <?php } 
                            else
                            { ?>
                                <option value=<?php echo $arrayLab['lab_Id']?> ><?php echo $arrayLab['lab_Nombre']?> </option>
                      <?php } ?>
    <?php } ?>
</select><br/><br/>

要修改的表格是:

CREATE TABLE IF NOT EXISTS `laboratorios` (
  `lab_Id` smallint(3) NOT NULL AUTO_INCREMENT,
  `lab_Nombre` varchar(50) NOT NULL,
  `lab_Contacto` varchar(50) DEFAULT NULL,
  `lab_Mail` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`lab_Id`)
) ENGINE=MyISAM AUTO_INCREMENT=42

来自下表:

`ac_Id` smallint(6) NOT NULL AUTO_INCREMENT,
`ac_Desc` varchar(50) NOT NULL,
`ac_Cat` varchar(50) NOT NULL,
`ac_Lab` smallint(6) NOT NULL,
`ac_Apli` varchar(200) NOT NULL,
`ac_Prov` smallint(6) NOT NULL,
`ac_Alm` smallint(6) NOT NULL,
`ac_Vol` smallint(6) NOT NULL,
`ac_Dil` varchar(50) DEFAULT NULL,
`ac_Img` varchar(50) DEFAULT NULL,
`ac_Obs` varchar(200) DEFAULT NULL,
PRIMARY KEY (`ac_Id`)

好的,非常感谢!!

现在切换到PDO或mysqli*函数,而不是使用不推荐使用的mysql*函数,会省去很多麻烦。

PDO手动

Mysqli手动

为什么不应该使用Mysql_*函数

错误是否可能是在CCD_ 1&我建议发布您的SQL,但打开错误报告肯定会有所帮助,也可以使用PDO或mysqli,因为它们目前还没有处于开发中。(无法作为评论发布,因为我需要50个代表。)

删除size="0",因为这可能会修改表单中的最终数据

查看您正在生成的HTML:

启动<option>:

<option value=[..snip...]

进行测试

if ($array['ac_Lab']==$arrayLab['lab_Id']) {
   [..snip..]
} else {
   <option value=<?php echo $arrayLab['lab_Id']?> ><?php echo $arrayLab['lab_Nombre']?> </option>
   ^^^^^^^^^^^^^---- start ANOTHER option

对于每一个没有被"选中"的元素(通常是除一个之外的所有元素),您正在构建以下内容:

<option value=<option value=$someid>

这是完全非法的html。

在代码中:

Laboratorio: 
<select name="lab">
    <?php
        $sqlLab = 'SELECT * FROM laboratorios order by lab_Nombre asc';
        $resLab = mysql_query($sqlLab);
        while ($arrayLab = mysql_fetch_array($resLab)) 
        { ?>
            <option value=<?php 
                            if ($array['ac_Lab']==$arrayLab['lab_Id'])
                            {
                                echo $arrayLab['lab_Id']?> selected="selected"><?php echo $arrayLab['lab_Nombre']?> </option>
                      <?php } 
                            else
                            { ?>
                                <option value=<?php echo $arrayLab['lab_Id']?> ><?php echo $arrayLab['lab_Nombre']?> </option>
                      <?php } ?>
    <?php } ?>
</select><br/><br/>

在"else"之后,我放了一个<option了解更多。。。

现在的代码是:

Laboratorio: 
<select name="lab">
    <?php
        $sqlLab = 'SELECT * FROM laboratorios order by lab_Nombre asc';
        $resLab = mysql_query($sqlLab);
        while ($arrayLab = mysql_fetch_array($resLab)) 
        { ?>
            <option value=<?php 
                            if ($array['ac_Lab']==$arrayLab['lab_Id'])
                            {
                                echo $arrayLab['lab_Id']?> selected="selected"><?php echo $arrayLab['lab_Nombre']?> </option>
                      <?php } 
                            else
                            { 
                                echo $arrayLab['lab_Id']?> ><?php echo $arrayLab['lab_Nombre']?> </option>
                      <?php } ?>
    <?php } ?>
</select><br/><br/>

非常感谢!!