【问题标题】:Using value in drop down menu to search sql database使用下拉菜单中的值搜索 sql 数据库
【发布时间】:2013-01-24 23:23:35
【问题描述】:

我是 php 新手,想咨询一下这段代码。我有一个下拉菜单和一个按钮。 我想在 sql 数据库中搜索我在那些下拉菜单中选择的内容.. 使用下拉菜单在 sql 数据库中搜索项的 sql 语法是什么。 默认情况下,我写 --> SELECT * FROM helpline

应该是 --> SELECT * FROM helpline WHERE MISC = %**item in drop down menu**%.

这是我的数据库 = 帮助台

Table = helpline

NAME  |    DATE    |  MISC  |
John  | 02/01/2011 | Item 1 |
Mark  | 03/01/2011 | Item 2 |

这是我的代码

<form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
<label for="namelist"></label>
<select name="namelist" id="namelist">
<option selected="selected" disabled="disabled">PLEASE CHOOSE ONE ITEM:-</option>
<option>Item 1</option>
<option>Item 2</option>
</select>
<input type="submit" name="show" id="show" value="Submit" />
<?php
mysql_select_db("helpdesk",mysql_connect("localhost","root",""))or die (mysql_error());
$query = "SELECT * FROM helpline"; */ This line should select what I choose in drop down menu  /*
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)){
?>
<table border="0" cellpadding="6" cellspacing="6" class="curve">
<thead>
<tr>
<th> <div align="right"><span class="font">NAME</span></div></th>
<th> <div align="right"><span class="font">DATE</span></div></th>
</tr>
</thead>
<tbody>   
<tr>
<th><div align="left"><span class="font"><?php echo $row['name']; ?></span></div></th>
<td><div align="left"><span class="font"><?php echo $row['date']; ?></strong></span></div></td>   
</tr>
</tbody>
&nbsp;
<?php
}
?>
</table>
</form>

所以,当我单击按钮时,它应该根据我在下拉菜单中选择的内容显示 sql 数据库中的所有项目..

【问题讨论】:

  • 请。停止。使用。 mysql_。功能。
  • 我猜你想在不重新加载页面的情况下加载数据,合适的方法是使用 ajax,我建议使用框架,因为单独使用 ajax 可能会很棘手陌生的眼睛。一个好的开始是使用 jQuery

标签: php sql drop-down-menu search-engine


【解决方案1】:

您可以通过 PHP's Online Manual 中所述的 php $_POST[] 关联数组访问您发布的表单数据。您可以从中选择 namelist 并将值传递给您的 SQL。


$query = "SELECT * FROM helpline";
if(isset($_POST['namelist'])){
   $dropdown_val = $_POST['namelist'];
   $query .= " WHERE MISC = '$dropdown_val'"; 
}

但是你真的应该为此使用 ajax,jQuery 将是一个很棒的 JavaScript 框架来帮助你完成这个。此外,从 PHP 5.5.0 起,mysql_* 函数已被弃用,未来将被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。

【讨论】:

    【解决方案2】:

    不刷新页面也可以这样

    <script>
        $(document).ready(function(){
            $("#namelist").change(function(){
                var data = $(this).val();
                $.ajax({
                    type:'POST',
                    data:'search_value='+data,
                    url:'search_process.php',
                    success:function(data){
                        $("#result").html(data);
                    }               
                });         
            }); 
    
        });
    
    
    </script>
    

    HTML 部分

    <select name="namelist" id="namelist">
    <option selected="selected" disabled="disabled">PLEASE CHOOSE ONE ITEM:-</option>
    <option>Item 1</option>
    <option>Item 2</option>
    </select>
    <input type="button" name="show" id="show" value="Submit" />
    
    <div id="result"></div>
    

    search_process.php 页面

    <?php
    
     // DATABASE CONNECTIVITY
    
     if(isset($_POST['search_value'])) {
        $val = $_POST['search_value'];
    
    
        $query = mysql_query("SELECT * FROM helpline WHERE MISC LIKE %$val%");
    
        // NOW RUN YOUR QUERY
    
        $result = '<table border="0" cellpadding="6" cellspacing="6" class="curve">';
        $result .= '<thead>';
        $result .= '<tr>';
        $result .= '<th> <div align="right"><span class="font">NAME</span></div></th>';
        $result .= '<th> <div align="right"><span class="font">DATE</span></div></th>';
        $result .= '</tr>';
        $result .= '</thead>';
    while($row = mysql_fetch_array($query)){
    
        $result .= '<tr>';
        $result .= '<th><div align="left"><span class="font">'.$row['name'].'</span></div></th>';
        $result .= '<td><div align="left"><span class="font">'.$row['date'].'</strong></span></div></td>'; 
        $result .= '</tr>';
    
    }
        $result .= '</table>';
        echo $result;
     }
    ?>
    

    希望这能给你一个想法

    【讨论】:

      【解决方案3】:

      您的选择选项没有 value 属性

      your dropdown
      <select name="namelist" id="namelist">
      <option selected="selected" disabled="disabled">PLEASE CHOOSE ONE ITEM:-</option>
      <option>Item 1</option>
      <option>Item 2</option>
      </select>
      
      change it :
      <select name="namelist" id="namelist">
      <option selected="selected" disabled="disabled" value="">PLEASE CHOOSE ONE ITEM:-</option>
      <option value="Item 1">Item 1</option>
      <option value="Item 2">Item 2</option>
      </select>
      

      提交后从 $_post["namelist"] 获取值

      【讨论】:

        猜你喜欢
        • 2013-06-02
        • 2014-04-25
        • 1970-01-01
        • 1970-01-01
        • 2018-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多