提前致谢并抱歉,但我的英语不是很好。 我在更新组合框时遇到了问题。我可以让组合框加载来自表的数据并显示选择存储在表中的记录,但在编辑注册表时,表保存为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`)
好的,非常感谢!!
答案 0 :(得分:0)
现在切换到PDO或mysqli *函数,而不是使用不推荐使用的mysql *函数,可以省去很多麻烦。
Why you shouldn't use Mysql_* functions
错误是否可能在<?php echo $arrayLab['lab_Id']?>
&amp;周围没有双引号或单引号。我建议发布您的SQL,但启用错误报告肯定会有所帮助,以及使用PDO或mysqli,因为它们目前尚未进行积极开发。
(不能发表评论,因为我需要50个代表..)
答案 1 :(得分:0)
删除size="0"
,因为这可能会修改表格中的最终数据
答案 2 :(得分: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。
答案 3 :(得分:0)
在代码中:
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/>
在“其他”之后我放了<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/>
非常感谢!!