進階查詢??

edited 十月 2013 in PHP新手區
k大~又打擾了~1

我想做一個有細部查詢功能,是有四個項目可以查詢的(多重的符合才會echo出來),但我想了很久~實在不知應如何寫起~k大~有範例可以參考嗎???或是能指導一下嗎??謝謝~!

原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=1293

評論

  • edited 二月 2006
    1. 查詢什麼?資料庫、檔案、...?
    2. 程式碼?

    建議多花些時間看書、練習書本上的範例,想到就問反而學不到什麼東西。
  • edited 二月 2006
    george845b 寫道:
    k大~又打擾了~1

    我想做一個有細部查詢功能,是有四個項目可以查詢的(多重的符合才會echo出來),但我想了很久~實在不知應如何寫起~k大~有範例可以參考嗎???或是能指導一下嗎??謝謝~!

    K大有專業指導班, 不知您有沒有興趣呢?
    請參考下列連結:
    -= K大專業指導教學 =-
  • edited 二月 2006
    其實我還蠻想去上課的~!!(不過目前較沒有時間~~)morris~謝啦~!

    是進入mysql查資料~

    $str = "select * from $TBL_HISTORY_NAME where " 我有試過用三個or或是三個and串起來但都不是我想要的多重查法(前面要如何判斷它選擇那個查法,這段就想不出來了~)"。

    看書的話,這部份我會加強的~!我有買入門的書看,不過它沒有提到進階查詢的部份,但它有單一搜尋~!(如果有推薦的在推薦一下囉~!)
  • edited 二月 2006
    george845b 寫道:
    其實我還蠻想去上課的~!!(不過目前較沒有時間~~)morris~謝啦~!

    是進入mysql查資料~

    $str = "select * from $TBL_HISTORY_NAME where " 我有試過用三個or或是三個and串起來但都不是我想要的多重查法(前面要如何判斷它選擇那個查法,這段就想不出來了~)"。

    看書的話,這部份我會加強的~!我有買入門的書看,不過它沒有提到進階查詢的部份,但它有單一搜尋~!(如果有推薦的在推薦一下囉~!)

    這要看需求了
    打個比方
    如果要查住台北市的男性,那就是and
    如果是要查住台北市或男性,那就是or
  • edited 二月 2006
    補充一個
    like '%test%'
    找尋有包含test的資料

    如果是 like 'test%'
    則是找尋test開頭的資料

    反之 like '%test'
    則是找尋test結尾的資料
  • edited 二月 2006
    check_search.php


    ?>
    //流程控制

    switch ($action)
    {
    //搜尋二種條件
    case "two_search":
    two_search();
    require ("setup.php");
    break;
    //搜尋另外二種條件
    case "two_other_search":
    two_other_search();
    require ("setup.php");
    break;
    //搜尋四種條件
    default:
    four_search();
    require ("setup.php");
    break;
    }
    //搜尋四種條件,任一種即可
    function four_search()
    {
    global $key_word_check_id,$key_word_check_category,$key_word_check_mail,$key_word_check_passid,$PHP_SELF;

    $DB_SERVER="localhost";
    $DB_LOGIN="root";
    $DB_PASSWD="";
    $DB_NAME="history";
    $TBL_HISTORY_NAME="history_top";


    $none_data=true;
    $str = "select * from $TBL_HISTORY_NAME where id= '$key_word_check_id' or category= '$key_word_check_category' or mail= '$key_word_check_mail' or passid= '$key_word_check_passid'";

    $link=mysql_connect( $DB_SERVER,$DB_LOGIN,$DB_PASSWD );
    $list=mysql_db_query( $DB_NAME,$str,$link );

    while($row=mysql_fetch_row($list))
    {


    print_r($row);

    ?>
    <table border="1" align="center" id="table1" style="border-collapse:collapse">
    <tr bgcolor='#F22FCC'>
    <td>類別:</td>
    <td>姓名:</td>
    <td>帳號:</td>
    <td>身份証:</td>
    <td>手機:</td>
    <td>電話:</td>
    <td>世界:</td>
    <td>MAIL:</td>
    <td>住址:</td>
    <td>時間:</td>

    <?
    echo"
    <tr bgcolor='#FFFFCC'>
    <td> $row[8]</td>
    <td> $row[1]</td>
    <td><a href='history_view_content.php?serial=$row[0]'>$row[2]</a></td>
    <td> $row[3]</td>
    <td> $row[4]</td>
    <td> $row[7]</td>
    <td> $row[9]</td>
    <td> $row[5]</td>
    <td> $row[6]</td>
    <td> $row[10]</td>
    </tr>";
    $none_data=false; //如果有資料就為false

    }
    mysql_free_result($list);

    //真的沒有資料(為真)就echo
    if($none_data){
    ?>
    <font color="red"><?echo "查無資料";?></font>
    <?
    }




    ?>
    </table>
    <?
    }

    //搜尋兩種條件,需有兩種條件
    function two_search()
    {
    global $key_word_check_id_2,$key_word_check_category_2,$PHP_SELF;
    echo "abc";

    $DB_SERVER="localhost";
    $DB_LOGIN="root";
    $DB_PASSWD="";
    $DB_NAME="history";
    $TBL_HISTORY_NAME="history_top";




    $none_data=true;
    $str = "select * from $TBL_HISTORY_NAME where id= '$key_word_check_id_2' AND category= '$key_word_check_category_2'";

    $link=mysql_connect( $DB_SERVER,$DB_LOGIN,$DB_PASSWD );
    $list=mysql_db_query( $DB_NAME,$str,$link );

    while($row=mysql_fetch_row($list))
    {


    print_r($row);

    ?>
    <table border="1" align="center" id="table1" style="border-collapse:collapse">
    <tr bgcolor='#F22FCC'>
    <td>類別:</td>
    <td>姓名:</td>
    <td>帳號:</td>
    <td>身份証:</td>
    <td>手機:</td>
    <td>電話:</td>
    <td>世界:</td>
    <td>MAIL:</td>
    <td>住址:</td>
    <td>時間:</td>

    <?
    echo"
    <tr bgcolor='#FFFFCC'>
    <td> $row[8]</td>
    <td> $row[1]</td>
    <td><a href='history_view_content.php?serial=$row[0]'>$row[2]</a></td>
    <td> $row[3]</td>
    <td> $row[4]</td>
    <td> $row[7]</td>
    <td> $row[9]</td>
    <td> $row[5]</td>
    <td> $row[6]</td>
    <td> $row[10]</td>
    </tr>";
    $none_data=false; //如果有資料就為false
    }
    mysql_free_result($list);

    //真的沒有資料(為真)就echo
    if($none_data){
    ?>
    <font color="red"><?echo "查無資料";?></font>
    <?
    }




    ?>
    </table>

    <?
    }

    //搜尋另外兩種條件(項目不同),需有兩種條件
    function two_other_search()
    {
    global $key_word_check_id_3,$key_word_check_passid_2,$PHP_SELF;
    echo "abc";
    echo $key_word_check_id;

    $DB_SERVER="localhost";
    $DB_LOGIN="root";
    $DB_PASSWD="";
    $DB_NAME="history";
    $TBL_HISTORY_NAME="history_top";




    $none_data=true;
    $str = "select * from $TBL_HISTORY_NAME where id= '$key_word_check_id_3' AND passid= '$key_word_check_passid_2'";

    $link=mysql_connect( $DB_SERVER,$DB_LOGIN,$DB_PASSWD );
    $list=mysql_db_query( $DB_NAME,$str,$link );

    while($row=mysql_fetch_row($list))
    {


    print_r($row);

    ?>
    <table border="1" align="center" id="table1" style="border-collapse:collapse">
    <tr bgcolor='#F22FCC'>
    <td>類別:</td>
    <td>姓名:</td>
    <td>帳號:</td>
    <td>身份証:</td>
    <td>手機:</td>
    <td>電話:</td>
    <td>世界:</td>
    <td>MAIL:</td>
    <td>住址:</td>
    <td>時間:</td>

    <?
    echo"
    <tr bgcolor='#FFFFCC'>
    <td> $row[8]</td>
    <td> $row[1]</td>
    <td><a href='history_view_content.php?serial=$row[0]'>$row[2]</a></td>
    <td> $row[3]</td>
    <td> $row[4]</td>
    <td> $row[7]</td>
    <td> $row[9]</td>
    <td> $row[5]</td>
    <td> $row[6]</td>
    <td> $row[10]</td>
    </tr>";
    $none_data=false; //如果有資料就為false
    }
    mysql_free_result($list);

    //真的沒有資料(為真)就echo
    if($none_data){
    ?>
    <font color="red"><?echo "查無資料";?></font>
    <?
    }




    ?>
    </table>
    <?
    }

    ?>

    /****************************************************/

    input.php


    <html>

    <head>
    <meta http-equiv="Content-Language" content="zh-tw">
    <meta name="GENERATOR" content="Microsoft FrontPage 5.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <meta http-equiv="Content-Type" content="text/html; charset=big5">
    <title>進階查詢</title>
    </head>

    <body>
    <form method="POST" action="check_search.php" value="four_search" >
    <INPUT TYPE="hidden" NAME="action" VALUE="four_search">
    <center>
    <table width="742" align="center" style="border-collapse:collapse" bgcolor="#ceffe7">
    請選擇:
    <tr><td width="728" align="center">查詢帳號:<input type="text" name="key_word_check_id" size="20">查詢mail:<input type="text" name="key_word_check_mail" size="20"></td></tr>
    <tr><td width="728" align="center">查詢類別:<input type="text" name="key_word_check_category" size="20">查詢身份証:<input type="text" name="key_word_check_passid" size="20"></td></tr>
    <tr><td width="728"> </td></tr>
    <tr align="center" ><td ><input type="submit" value="查詢" ><input type="reset" value="重新設定" ></td></tr>
    </table>
    </center>
    </form>




    <form method="POST" action="check_search.php" value="two_search">
    <INPUT TYPE="hidden" NAME="action" VALUE="two_search">
    <table width="742" align="center" style="border-collapse:collapse" bgcolor="#ceffe7">
    <tr><td width="728" align="center">查詢帳號:<input type="text" name="key_word_check_id_2" size="20">查詢類別:<input type="text" name="key_word_check_category_2" size="20"></td></tr>
    <tr><td width="728"> </td></tr>
    <tr align="center" ><td ><input type="submit" value="查詢" ><input type="reset" value="重新設定" ></td></tr>
    </table>
    </form>



    <form method="POST" action="check_search.php" value="two_other_search">
    <INPUT TYPE="hidden" NAME="action" VALUE="two_other_search">
    <table width="742" align="center" style="border-collapse:collapse" bgcolor="#ceffe7">
    <tr><td width="728" align="center">查詢帳號:<input type="text" name="key_word_check_id_3" size="20">查詢身份証:<input type="text" name="key_word_check_passid_2" size="20"></td></tr>
    <tr><td width="728"> </td></tr>
    <tr align="center" ><td ><input type="submit" value="查詢" ><input type="reset" value="重新設定" ></td></tr>
    </table>





    </form>
    </body>
    </html>


    大大~~
    我昨天寫了這兩個檔案,就是我之前提到的我想要的進階查詢,我寫的這兩個檔案雖然可以達成我要的結果,但是我真正想要的是:不要用三個submit,只要使用一個submit且INPUT TYPE="TEXT"使用四個提供輸入,而設計讓它能自行比對的功能。不知道大大們是否能提示個方向呢?
  • edited 二月 2006
    不懂你的意思耶
    是要這四個textfield值去檢查同一個資料表嗎?
    只用一個submit
    看他輸入哪些就做哪些search?
    簡單的作法就檢查他輸入哪些值,就做哪些動作
    javascript跟php都很容易做
    笨一點也保險點就加個select選單,使用者選哪種檢查就做哪個動作
  • edited 二月 2006
    未來如果要附加這麼多的程式碼,建議直接將檔案壓縮後透過討論區附加檔案方式提供即可。
  • edited 二月 2006
    看了一下程式
    一個是任一符合即可
    一個是要帳號跟類別同時符合
    一個是帳號跟身分証同時符合

    3個查詢彼此間幾乎沒有相關性
    像zeppelin說的,增加一個select來決定要跑哪個查詢可能比較能符合你的需求吧
  • edited 三月 2006
    sorry~~較晚上來看了~!

    我整理一下大大們的回答,意思是如果我要只有一個sumbit的話,我只要再加一個select來判斷它要走那一個switch囉(我的搜尋程式可以用一樣的囉)~!!如果是這樣子的話,那我懂的怎麼做了,謝謝你們熱心的回答。另外zeppelin說:"看他輸入哪些就做哪些search?
    簡單的作法就檢查他輸入哪些值,就做哪些動作
    javascript跟php都很容易做"

    ps. KIANG大,之後不會把過長的程式碼放上來了,sorry~!!(因為是第一次用這樣子問的)
Sign In or Register to comment.