php
  • mysql
  • combobox
  • 2015-12-09 52 views 0 likes 
    0

    在此先感谢和抱歉,但我的英语不是很好。 我在更新组合框时遇到问题。我可以让组合框从表格中载入数据并显示选定的表格中存储的记录,但是在编辑注册表时,表格将保存为0(零)。我找不到错误。php mysql combobox更新不工作

    这里的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/> 
    

    这里的组合框代码的组合框的更新

    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

    mysql_函数已被弃用。使用别的东西。另外,打开错误报告,你会发现'$ array'在你的“更新”循环中是未定义的。您没有展示足够的代码来提供任何有关如何解决问题的建议。 –

    +0

    非常感谢您的回答。没有错误,只是不进行修改,并将值作为0离开字段。我使用mysql_functions,因为这是我现在知道的。如有必要,我可以将整个代码放在一起...谢谢 – MaxHD

    +0

    没有错误,因为错误报告未打开。打开它或查看你的日志,你会看到错误。 –

    回答

    0

    您现在可以通过切换到PDO或mysqli *函数而不是使用不推荐使用的mysql *函数来节省大量头痛。

    PDO Manual

    Mysqli Manual

    Why you shouldn't use Mysql_* functions

    是否有可能错误是在没有围绕​​&我建议来发表您的SQL双或单引号,但有错误报告转身on一定会有所帮助,以及使用PDO或mysqli,因为它们目前并未处于积极的发展阶段。 (无法发布的评论,因为我需要50代表..)

    0

    取出size="0",因为这可能会改变你的最终数据表单中的

    +0

    我删除它,那不是问题。谢谢 – MaxHD

    +0

    你可以尝试在你的表单后收到的数组的print_r?并在这里发布?请 –

    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。

    +0

    非常感谢!这是个问题! – MaxHD

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

    非常感谢!

    相关问题