从下拉列表中进行 php 和 sql 查询

标签 php mysql

我在 php 中有 6 个下拉菜单。用户可以选择一个或全部下拉列表,并且根据用户选择,我需要运行 mysql 查询。我的问题是,如果我使用 AND,用户必须从所有选项中选择一个选项。如果我使用 OR 结果会非常非常奇怪。我需要一个组合值选择的解决方案,以及当我单击表格打开包含结果的链接时。我现在有这个:

        <select name="categorie" class="form-control m-bot15"> 
        <option value= option 1> Option 1 </option> 
        <option value= option 2> Option 2 </option>
    </select>

    <select name="employeename" class="form-control m-bot15"> 
        <option value= option 1> Option 1 </option> 
        <option value= option 2> Option 2 </option>
    </select>

    etc....

    <?php  
    if(isset($_GET['from'])){ $from = $_GET['from']; }
    if(isset($_GET['to'])){ $to = $_GET['to']; }
    $agenti = $_GET['agenti'];
    $task = $_GET['task'];
    $categorie = $_GET['categorie'];
    $clienti = $_GET['clienti'];
    $raw_results = mysql_query("SELECT distinct ch.employeename, ch.customername, ch.QuestionnaireName, ch.parentgroupname, 
                                ch.groupname, vd.visitdate, vd.customerowner from chestionare ch
                                inner join visitdetails vd on vd.visitid =  ch.visitid
                                WHERE vd.visitdate >= '".$_GET['from']."' AND vd.visitdate <= '".$_GET['to']."' OR 
                                 ch.employeename= '$agenti' OR ch.questionnairename= '$task' OR ch.parentgroupname= '$categorie' OR vd.customerowner= '$clienti'
                                    ") 
                                or die(mysql_error());

    if(mysql_num_rows($raw_results) > 0){ 
        while($results = mysql_fetch_array($raw_results)){ 
    ?>

            <tr>
                <td><?php echo '<a href="g_angajat.php?name='.$agenti.'&from='.$from.'&to='.$to.'&clienti='.$clienti.'&task='.$task.'&categorie='.$categorie.'">' ?>    <?php echo $results['employeename']; ?></a></td>
                .... table for each dropdown
            </tr>


      <?php  } }?>

有人可以帮助我吗?谢谢

最佳答案

这样解决:

 $employeename= $_GET['employeename'];

 <select name="employeename">
 <option value="%">All Employees</option>
 <option value="John"John</option>
 </select>
 ...... x 6 times with different name for each select

现在在mysql中:

 SELECT distinct ch.employeename, ch.customername, ch.QuestionnaireName,   ch.parentgroupname, 
 ch.groupname, vd.visitdate, vd.customerowner from chestionare ch
 inner join visitdetails vd on vd.visitid =  ch.visitid
  WHERE vd.visitdate >= '".$_GET['from']."' AND vd.visitdate <= '".$_GET['to']."' AND
  ch.employeename like '$employeename' AND ch.questionnairename like '$task' AND ch.parentgroupname like '$parentgroupname' AND vd.customerowner like '$customers'

结果: 如果您从员工下拉列表中选择 JOHN,它将仅返回员工 JOHN 的结果。如果从同一下拉列表中选择“所有员工”,它将返回所有员工的结果。对于所有其他下拉菜单都使用相同的技术,并且组合起来效果很好。

:)) 就这么简单。

关于从下拉列表中进行 php 和 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22845909/

相关文章:

mysql - 将 .txt 转换为 .sql - 包含国家、州、城市、.. 名称列表

mysql - mysql中的计算字段?

MySQL : Select all row of table depends on foreign key?

php - 选择没有值的所有行

php - 如何使用 preg_replace 获取替换文本?

php - 如何根据键数组从数据库中检索数据,每个键都有值?

python - Django 网站上的 500 服务器错误 - ImportError : No module named django. core.wsgi

php - 在 SELECT 语句中插入变量

PHP : add a html tag around specifc words

php - Uncaught Error : Call to undefined function mysql_connect() - WordPress Setup