2

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

它工作得很好,但是如果没有找到查询的结果,那么下拉列表只会缩小并且什么也不说。

我希望它说类似:“找不到名称”。我到处寻找,但似乎找不到路。

这是我的代码:

<?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 语句,比如“如果 $myquery 没有找到任何结果,则 $nompac ="name not found"。所以我在 WHILE 语句之后写了这个:

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

但它只是忽略了代码,就好像我什么都没写一样:(

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

<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

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

4

2 回答 2

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>";       
    } 
}
于 2013-10-10T02:05:04.763 回答
0

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

只是为了让你知道,我用过:

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

这就像一个魅力!

于 2013-10-10T05:15:27.543 回答