doumao8803 2013-06-04 21:05
浏览 54

下拉菜单搜索过滤器排序两个与升序/降序SQL语句冲突的变量

I am trying to build a dropdown filter search for a database and it seems to be that it is conflicting with the logic statements for ascending/descending order I have in place.

When I tried to move the if-statements of the dropdown menu filter above the ascending/descending ordering statements, the filter does not work properly, i.e. when I try to filter for 'Analyzed' it gives me another statuses too.

On the other hand, when i tried to move the if-statements of the dropdown filter below the ordering statements, the filter search works fine but when trying to order the table I get a $sql undefined error.

    print("<form action='patients.php' method='get'>");
    // cs = case status
    print("<select name='cs'> 
                <option selected='selected' value=''>--Select Case Status--</option>
                <option value='1'>Pass</option>
                <option value='2'>Failed</option>
                <option value='3'>Pass With Error</option>
                <option value='4'>Indeterminate</option>
          </select>");
    // sf = status flagged
    print("<select name='sf'>
                <option selected='selected' value=''>--Select Flagged Status--</option>
                <option value='Analyzed'>Analyzed Case</option>
                <option value='New Case'>New Case</option>
                <option value='Updated Case'>Updated Case (New Images)</option>
                <option value='None'>No Status Flag</option>
          </select>");

    print("<input type='submit' name='search' value='Search'></form>");
    //print("<a href = 'patients.php?case=failed'>View Failed Cases</a><br><br>");



    }
    printf('<table border=1><tr><th><a href ="patients.php?pID=%s">Patient ID</a>',empty($_GET['pID']) || $_GET['pID'] == 'asc' ? 'desc' : 'asc');
    printf('</th><th><a href ="patients.php?caseStatus=%s">Case Status</a>',
       empty($_GET['caseStatus']) || $_GET['caseStatus'] == 'asc' ? 'desc' : 'asc');
    printf('</th><th>Sub Status</th><th>Number of Cases</th><th>Status Reason</th><th><a href ="patients.php?dateReviewed=%s">Date Reviewed</a>',
       empty($_GET['dateReviewed']) || $_GET['dateReviewed'] == 'asc' ? 'desc' : 'asc');
    printf('</th><th><a href ="patients.php?statusFlag=%s">Status Flag</a>',
       empty($_GET['statusFlag']) || $_GET['statusFlag'] == 'asc' ? 'desc' : 'asc');
    printf('</th></tr>');




// search filter, takes the case status (cs) and status flag (sf) and filter according to selection
        if (isset($_GET['cs']) && isset($_GET['sf']) ) {
            $cs= $_GET['cs'];
            $sf= $_GET['sf'];

            if (($sf==NULL) && ($cs!==NULL)) {
                    $sql = "SELECT patientid, sub_status_lookup.CASE_STATUS, sub_status_lookup.SUB_STATUS, count(caseid) as cases_count, cases.comments, date_mod, caseid, user_mod, status_flag  FROM cases, sub_status_lookup
                    Where cases.status = '".$cs."' 
                    Group By patientid, cases.status";      

            } else if (($sf!==NULL) && ($cs==NULL)) {
                    $sql = "SELECT patientid, sub_status_lookup.CASE_STATUS, sub_status_lookup.SUB_STATUS, count(caseid) as cases_count, cases.comments, date_mod, caseid, user_mod, status_flag  FROM cases, sub_status_lookup
                    Where cases.status_flag = '".$sf."'
                    Group By patientid, cases.status";      

            } else if (($cs==NULL)&&($sf==NULL)){

                    $sql = "SELECT patientid, sub_status_lookup.CASE_STATUS, sub_status_lookup.SUB_STATUS, count(caseid) as cases_count, cases.comments, date_mod, caseid, user_mod, status_flag  FROM cases, sub_status_lookup
                    Where cases.status = sub_status_lookup.SUB_ID
                    Group By patientid, cases.status";  
            } else {
                    $sql = "SELECT patientid, sub_status_lookup.CASE_STATUS, sub_status_lookup.SUB_STATUS, count(caseid) as cases_count, cases.comments, date_mod, caseid, user_mod, status_flag  FROM cases, sub_status_lookup
                    Where cases.status = '".$cs."' and cases.status_flag = '".$sf."'
                    Group By patientid, cases.status";      


            }

            $orderBy ="Order By patientid";
        }

else  {
        $orderBy = "Order By patientid";
        $sql = "SELECT patientid, sub_status_lookup.CASE_STATUS, sub_status_lookup.SUB_STATUS, count(caseid) as cases_count, cases.comments, date_mod, caseid, user_mod, status_flag  FROM cases, sub_status_lookup
                    Where cases.status = sub_status_lookup.SUB_ID
                    Group By patientid, cases.status ".$orderBy;

                    }

//takes the patient id, status description, count of cases then groups them by patient id ordering them by their status

if (isset($_GET['pID'])){

                    switch($_GET['pID']){

                      case "asc":
                        $orderBy = " ORDER BY patientid ASC";
                        break;

                      case "desc":
                        $orderBy = " ORDER BY patientid DESC";
                        break;

                      default:
                        $orderBy = " ORDER BY patientid ASC";
                        break;

                    $sql = "SELECT patientid, sub_status_lookup.CASE_STATUS, sub_status_lookup.SUB_STATUS, count(caseid) as cases_count, cases.comments, date_mod, caseid, user_mod, status_flag  FROM cases, sub_status_lookup
                    Where cases.status = sub_status_lookup.SUB_ID
                    Group By patientid, cases.status ".$orderBy;



                        }
    } else if (isset($_GET['caseStatus'])){                 

                    switch($_GET['caseStatus']){

                      case "asc":
                        $orderBy = " ORDER BY sub_status_lookup.CASE_STATUS ASC";
                        break;

                      case "desc":
                        $orderBy = " ORDER BY sub_status_lookup.CASE_STATUS DESC";
                        break;

                      default:
                        $orderBy = " ORDER BY sub_status_lookup.CASE_STATUS ASC";
                        break;

                    $sql = "SELECT patientid, sub_status_lookup.CASE_STATUS, sub_status_lookup.SUB_STATUS, count(caseid) as cases_count, cases.comments, date_mod, caseid, user_mod, status_flag  FROM cases, sub_status_lookup
                    Where cases.status = sub_status_lookup.SUB_ID
                    Group By patientid, cases.status ".$orderBy;



                    }

    } else if (isset($_GET['dateReviewed'])){                           

                    switch($_GET['dateReviewed']){

                      case "asc":
                        $orderBy = " ORDER BY date_mod ASC";
                        break;

                      case "desc":
                        $orderBy = " ORDER BY date_mod DESC";
                        break;

                      default:
                        $orderBy = " ORDER BY date_mod ASC";
                        break;

                    $sql = "SELECT patientid, sub_status_lookup.CASE_STATUS, sub_status_lookup.SUB_STATUS, count(caseid) as cases_count, cases.comments, date_mod, caseid, user_mod, status_flag  FROM cases, sub_status_lookup
                    Where cases.status = sub_status_lookup.SUB_ID
                    Group By patientid, cases.status ".$orderBy;




                        }


    // Updated to work, statusFlag now stored in DB as status_flag 6/4/2013 - Allen
    } else if (isset($_GET['statusFlag'])){ 

                    switch($_GET['statusFlag']){

                      case "asc":
                        $orderBy = " ORDER BY status_flag ASC";
                        break;

                      case "desc":
                        $orderBy = " ORDER BY status_flag DESC";
                        break;

                      default:
                        $orderBy = " ORDER BY status_flag ASC";
                        break;

                    $sql = "SELECT patientid, sub_status_lookup.CASE_STATUS, sub_status_lookup.SUB_STATUS, count(caseid) as cases_count, cases.comments, date_mod, caseid, user_mod, status_flag  FROM cases, sub_status_lookup
                    Where cases.status = sub_status_lookup.SUB_ID
                    Group By patientid, cases.status ".$orderBy;


                    }

    } else if (isset($_GET['lastUser'])){   

                    switch($_GET['lastUser']){

                      case "asc":
                        $orderBy = " ORDER BY user_mod ASC";
                        break;

                      case "desc":
                        $orderBy = " ORDER BY user_mod DESC";
                        break;

                      default:
                        $orderBy = " ORDER BY user_mod ASC";
                        break;

                    $sql = "SELECT patientid, sub_status_lookup.CASE_STATUS, sub_status_lookup.SUB_STATUS, count(caseid) as cases_count, cases.comments, date_mod, caseid, user_mod, status_flag  FROM cases, sub_status_lookup
                    Where cases.status = sub_status_lookup.SUB_ID
                    Group By patientid, cases.status ".$orderBy;


                    }                   

    } else  { $orderBy = "Order By patientid";
    $sql = "SELECT patientid, sub_status_lookup.CASE_STATUS, sub_status_lookup.SUB_STATUS, count(caseid) as cases_count, cases.comments, date_mod, caseid, user_mod, status_flag  FROM cases, sub_status_lookup
                    Where cases.status = sub_status_lookup.SUB_ID
                    Group By patientid, cases.status ".$orderBy;


    }   




                    //commented 5.10.2013 - allen
                    /*while (isset($_GET['sort'])) {
                        $sortOrder = ASC;
                        if ($_GET['sort'] == 'patientID') { $sql .= "Order by patientid ".$sortOrder;}
                        else if ($_GET['sort'] == 'caseStatus') { $sql .= "Order By sub_status_lookup.CASE_STATUS ".$sortOrder;}
                        else if ($_GET['sort'] == 'dateReviewed') { $sql .= "Order by date_mod ".$sortOrder; }
                        else if ($_GET['sort'] == 'statusFlag') { $sql .= "Order by date_mod ".$sortOrder; }
                    }
                    if (!isset($_GET['sort'])) { $sql .= "Order By patientid"; }*/



    $result = mysql_query($sql, $connection);
    $count = 1;
    $prvPatId = "";
    if($result !== FALSE) {
        while ($record = mysql_fetch_row($result)) {

            $patient = $record[0];
            $statusD = $record[1];
            $substatusD = $record[2];
            $caseCount = $record[3];
            $statusReason = $record[4];
            $dateReviewed = $record[5];
            $caseID = $record[6];
            $lastUser =$record[7];
            statusFlagged($patient,$caseID,$dateReviewed);
            $statusFlagged = $record[8];
            //StatusFlag should be working as of 5/30/2013. Please double check



            $patLink = "<a href='case.php?dirName=".$rootDirectory.$patient."&patient=".$patient."' >".$patient."</a>";

            if($prvPatId == $patient) {
                $patLink = "&nbsp;";
            } else {
                $count ++;
                $prvPatId = $patient;
            }
            print("<tr><td>".$patLink."</td><td>".$statusD."</td><td>".$substatusD."</td><td>".$caseCount."</td><td>".$statusReason."</td><td>".$dateReviewed."</td><td>".$statusFlagged."</td></tr>");
        }
    }


    mysql_free_result($result);
//at the end prints the total number of patients (patient ids- unique)
    print("<tr><th colspan=3>Total Patients: ".$count."</th></tr>");
    print("</table>"
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
    • ¥50 成都蓉城足球俱乐部小程序抢票
    • ¥15 yolov7训练自己的数据集
    • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
    • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
    • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)