查找未找到时使用mysql的下拉列表

时间:2013-10-10 01:52:39

标签: mysql html.dropdownlistfor

我使用从{mysql数据库填充的<select>构建了一个简单的输入下拉列表。

它运行正常,但是如果找不到查询的结果,则下拉列表会缩小并且不会说任何内容。

我希望它能说:“找不到名字”。我到处搜索,但似乎找不到路。

这是我的代码:

<?php
   if ( $myquery = $mysqli->prepare("SELECT name, idname FROM db WHERE 
name LIKE '%".$name."%'") ) { 
      $myquery->execute();
      $myquery->store_result();
      $myquery->bind_result( $nompac, $idpac ) ;
}

<form name="form1" method="post" action="example.php">
   <table >
      <tr>
        <td>Name: </td>
        <td>
           <select name="chosen_name">
           <?php
              while ( $myquery->fetch() ) {
                  echo "<strong><option value=".$idpac.">".$nompac."</option></strong>";       
              } 
           ?>
           </select>
        </td>
        <td><input type="submit" name="Submit" value="Go" class="button"/></td>
     </tr>
  </table>
</form>

我想添加一个IF语句,说“if $ myquery没有找到任何结果,然后$ nompac =”找不到名字。“所以我在WHILE语句之后写了这个:

 if ( $nompac = "" ) { 
    $nompac = "Name not found";
    $idpac = "0";
 }

但它只是忽略了代码,好像我没有写任何东西:(

好的,我按照忧郁先生的建议添加了代码。现在看起来像这样:

<form name="form1" method="post" action="example.php">
   <table >
      <tr>
        <td>Name: </td>
        <td>
           <select name="chosen_name">
           <?php
           if ( empty( $myquery ) ) {
           echo "<strong><option value=''>Name not found</option></strong>";
             } else { 
              while ( $myquery->fetch() ) {
                  echo "<strong><option value=".$idpac.">".$nompac."</option></strong>";       
             } 
             }

           ?>
           </select>
        </td>
        <td><input type="submit" name="Submit" value="Go" class="button"/></td>
     </tr>
  </table>
</form>

但如果查询找不到名称,仍然无效。我究竟做错了什么? :-s

我添加了!空而不是空,我很高兴它似乎工作但事实证明即使查询创建了正确的名称,它每次都回显“名称未找到”,所以回到正方形一:(

2 个答案:

答案 0 :(得分:1)

在开始while循环之前,您需要一种方法来判断$myquery是否为空。这样的事情可以解决问题:

if ( empty( $myquery ) ) {
    echo "<strong><option value=''>Name not found</option></strong>";
} else {
    while ( $myquery->fetch() ) {
        echo "<strong><option value='".$idpac."'>".$nompac."</option></strong>";       
    } 
}

答案 1 :(得分:0)

由于我在这里没有进一步的答案,我不得不在另一个论坛上提问,他们提出了解决方案!

只是让你知道,我用过:

if ( $myquery->num_rows==0 ) {

这就像一个魅力!