【问题标题】:Not reading last option value未读取最后一个选项值
【发布时间】:2016-04-10 11:30:12
【问题描述】:

所以我有这个测试代码到一个主要项目。这段代码完美地连接到数据库,几乎完成了我设定的一切。但是,当我从下拉列表中选择最后一个值时,它不会无缘无故地给我它的价值。 这是我想要的示例。

这里是一个“错误”的例子。

这是完整的代码(连接除外)。

<?php
include_once('ligacao.php');
//Check connection
if (!$link) {
    die("Connection failed: " . mysqli_connect_error());
}


if (!empty($_GET['id'])) {
    $pesq = $_GET['id'];
    $atual = $_GET['atual'];

    //Distrito e concelho
    $sql = ("SELECT distrito,concelho FROM concelhos WHERE codg_cc = '$pesq'");
    $result = mysql_query($sql, $link);

    while ($row = mysql_fetch_assoc($result)) {
        $dist = $row['distrito'];
        $conc = $row['concelho'];
    }

    //echo ($atual);
    if (isset($atual) and strlen($atual) > 0) {
        $sql3 = ("SELECT DISTINCT new_name_freg,cod_freg_new FROM freguesias WHERE cod_freg_new = '$atual'");
        $result3 = mysql_query($sql3, $link);

        $sql2 = ("SELECT old_name_freg,cod_freg_old FROM freguesias WHERE cod_freg_new = '$atual'");
        $result2 = mysql_query($sql2, $link);
    } else {
        $sql3 = ("SELECT DISTINCT new_name_freg,cod_freg_new FROM freguesias WHERE codg_cc = '$pesq' ORDER BY new_name_freg");
        $result3 = mysql_query($sql3, $link);
    }

    mysql_free_result($result);
}

/* $atual=$_GET['atual']; // This line is added to take care if your global variable is off
  if(isset($atual) and strlen($atual) > 0){
  //echo ('hello');
  $sql2=("SELECT old_name_freg,cod_freg_old FROM freguesias WHERE cod_freg_new = '$atual'");
  $result2 = mysql_query($sql2, $link);
  } */

/*
  } // else{$quer="SELECT DISTINCT subcategory,subcat_id FROM subcategory order by subcategory"; }
  ////////// end of query for second subcategory drop down list box ///////////////////////////
 */

mysqli_close($ligar);
?>

<html>
    <head>
        <script type="text/javascript">

            /*function reload(form)
             {
             val=$pesq;
             self.location='Formulario2.php?id=' + val ;
             } */

            function reload3(form)
            {
                var concelho = '<?= $pesq ?>'; //passa a variavel de php para o javascript
//alert(concelho);
//alert(element.defaultValue);
//alert(self.location);
                val2 = (form.value);
                self.location = 'Formulario2.php?id=' + concelho + '&atual=' + val2;

            }

        </script>
    </head> 
    <body onload=enable_text(false);>
        <div >
            <table>
                <form name=f1 action="" >       
                    <td>
                    <tr>
                        <td>ID:</td> <td><input type="number" name="id" value="<?php echo $pesq; ?>"></td>
                        <td><input type="submit" value="Obter informações"></td>
                    </tr>
                    </td>
                </form> 
            </table>        
            <form name=f2 action="" >
                <table> 
                    <tr>
                        <td>Distrito:</td><td ><input type="text" name="distrito" maxlength="25" value="<?php echo $dist; ?>"></td>        
                        <td>Concelho:</td> <td><input type="text" name="concelho" maxlength="25" value="<?php echo $conc; ?>"></td><br>
                    </tr>
                    <tr>
                        <td>Freguesias:</td>
                        <td>Designação atual :</td> <td><select name="atual" onchange="reload3(this)"><option value=''>Selecione uma freguesia</option>                     
                                <?php
                                while ($row3 = mysql_fetch_assoc($result3)) {
                                    echo "<option size=30 selected value=" . $row3["cod_freg_new"] . ">" . $row3["new_name_freg"] . "</option>";
                                }
                                mysql_free_result($result3);
                                ?>
                            </select></td>                      

                        <td>Designação antiga :</td> <td><select name="antiga" onchange="reload3(this"><option value=''>Select One</option>
<?php
while ($row2 = mysql_fetch_assoc($result2)) {
    echo "<option size=30 value=" . $row2["cod_freg_old"] . ">" . $row2["old_name_freg"] . "</option>";
}
mysql_free_result($result2);
?>
                            </select></td>
                        </form>



                    </tr>
                    <tr>    
                        <td>Número da mesa:</td> <td><input type="number" name="mesa" min="1" max="15"></td><br>
                    <td>Localização da mesa:</td> <td><input type="text" name="local" maxlength="40"></td><br>
                    </tr>
                    <td>Todos os eleitores desta frequesia: <input type="checkbox" name=todos onclick="enable_text(this.checked)" ></td>
                    </tr>
                    <tr>
                        <td>Nº de eleitor inicial do caderno </td><td><input type=text name=intini1 maxlength=5></td><td><input type=number name=intini2 maxlength=5></td>
                        <td>Nº de eleitor final do caderno </td><td><input type=text name=intfim1 maxlength=5></td><td><input type=number name=intfim2 maxlength=5></td>
                    </tr>

                    <tr><br>    
                    <td>Nota:</td> <td><input type="text" name="nota" maxlength="40"></td><br>
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>

如果您对代码有任何疑问,或者需要我澄清我的问题,请不要害羞地告诉我。

P.S:我知道我应该使用 mysqli 而不是 myslq_ 并且还准备好声明,但我试图专注于真正的问题而不是安全性。如果我的英语不好,请原谅我。

这里是请求的html源代码。

<form name="f2" action="">
   <br>
   <br>
   <br>
   <br>
   <br>
   <table>
      <tbody>
         <tr>
            <td>Distrito:</td>
            <td><input type="text" name="distrito" maxlength="25" value="Faro"></td>
            <td>Concelho:</td>
            <td><input type="text" name="concelho" maxlength="25" value="Albufeira"></td>
         </tr>
         <tr>
            <td>Freguesias:</td>
            <td>Designação atual :</td>
            <td><select name="atual" onchange="reload3(this)">
                  <option value="">Selecione uma freguesia</option>
                  <option size="30" selected="" value="080106">Albufeira e Olhos de Ãgua</option>
                  <option size="30" selected="" value="080104">Ferreiras</option>
                  <option size="30" selected="" value="080102">Guia</option>
                  <option size="30" selected="" value="080103">Paderne</option>
               </select></td>
            <td>Designação antiga :</td>
            <td><select name="antiga" onchange="reload3(this">
                  <option value="">Select One</option>
               </select></td>
         </tr>
         <tr>
            <td>Número da mesa:</td>
            <td><input type="number" name="mesa" min="1" max="15"></td>
            <td>Localização da mesa:</td>
            <td><input type="text" name="local" maxlength="40"></td>
         </tr>
         <tr>
            <td>Todos os eleitores desta frequesia:
               <input type="checkbox" name="todos" onclick="enable_text(this.checked)"></td>
         </tr>
         <tr>
            <td>Nº de eleitor inicial do caderno </td>
            <td><input type="text" name="intini1" maxlength="5"></td>
            <td><input type="number" name="intini2" maxlength="5"></td>
            <td>Nº de eleitor final do caderno </td>
            <td><input type="text" name="intfim1" maxlength="5"></td>
            <td><input type="number" name="intfim2" maxlength="5"></td>
         </tr>
         <tr>
            <td>Nota:</td>
            <td><input type="text" name="nota" maxlength="40"></td>
         </tr>
      </tbody>
   </table>
</form>

这是所要求的 javascript 代码。

function reload3(form)
{
var concelho = '<?= $pesq ?>'; //passa a variavel de php para o javascript
//alert(concelho);
//alert(element.defaultValue);
//alert(self.location);
val2=(form.value);
self.location='Formulario2.php?id=' + concelho + '&atual=' + val2;

}

更新: 我工作的人使用 JQuery 找到了一个更好的解决方案,从而解决了这个问题。感谢所有帮助过的人。

【问题讨论】:

  • 请显示生成的html,可能该值格式错误,例如其中包含引号或其他内容
  • 尝试在选项中的值周围添加引号。
  • 图片有助于解释问题,但请您按要求添加 html 源代码 - 例如右键单击 > 在浏览器中查看源代码并粘贴表单 html
  • @jcubic 谢谢你的帮助。我已经添加了引号,但这不是解决方案。
  • @Steve 谢谢你的帮助。我在答案中添加了源代码。很抱歉没听懂你说的。

标签: javascript php html mysql


【解决方案1】:

您的代码中有 2 个错误,第一个是您缺少右括号,这意味着您在执行时会收到一个 javascript 错误:

onchange="reload3(this"

改成

onchange="reload3(this)"

接下来,您有 2 个名为 f1 和 f2 的表单,提交按钮在表单 f1 中,其中包含 1 个名为 id 的输入。所以当你按下提交按钮时,你只会得到它的 id。

f2 中没有提交按钮,因此您永远不会提交表单,只有在您修复了我上面提到的错误后,onchange() 调用才会使用 id 和 atual 进行位置更改。但是如果你有一个提交按钮,你会丢失 id,因为 id 是 f1 格式的。

记住一个提交按钮,提交带有输入/选择元素的表单。不是其他形式的元素。

最后,您所有的表单操作都是空的并且默认为 get,但将它们留空是一种不好的做法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    相关资源
    最近更新 更多