2015-04-01 14 views
0

如何修改我的$select函數以允許客戶在搜索文本中鍵入並單擊「搜索」時使用數據庫進行搜索?我還希望能夠輸入表單域,並且PHP會自動用表單數據動態更新頁面,並能夠定義要在數據庫中搜索的域!

這讓我查看我的客戶表:

$select = $db->query("SELECT * FROM customers ORDER BY id DESC"); 
<?php 
     if (!$select->num_rows) { 
      echo '<p>', 'No records', '</p>'; 
     }else{ 
     ?> 
      <table border="1" width="100%"> 
      <thead> 
       <tr> 
        <th>First Name</th> 
        <th>Last Name</th> 
       </tr> 
      </thead> 
      <tbody> 
      <?php 
       while ($row = $select->fetch_object()) { 
      ?> 
       <tr> 
        <td><?php echo $row->FName;?></td> 
        <td><?php echo $row->LName;?></td> 
+2

'獎勵積分':你將如何給我們這些? :P – 2015-04-01 17:53:27

+0

一旦我獲得了足夠的「聲譽」,我將回到有幫助的人的答案,並upvote :) – Steven 2015-04-02 13:25:59

回答

0

首先,你可以嘗試把你的開放<?php而不是以前後的第一行代碼... :-)

然後你只需修改代碼以從你的HTML表單中的值 - 我會假設你的搜索詞被命名爲q有點像這樣:

Search: <input type="text" name="q" /> <input type="submit" name="search" /> 

然後你的PHP腳本做的搜索將查詢更改爲類似這樣:

$select = $db->query("SELECT * FROM customers WHERE FName LIKE '%$_REQUEST[q]%' OR LName LIKE '%$_REQUEST[q]%' ORDER BY id DESC"); 

如果你輸入了「山姆」,將最終有一個查詢,看起來像這樣:

$select = $db->query("SELECT * FROM customers WHERE FName LIKE '%Sam%' OR LName LIKE '%Sam%' ORDER BY id DESC"); 

請注意,我只是通過構建查詢向您展示最簡單的版本。事實上,你永遠不應該用用戶提供的數據來做到這一點。相反,你應該準備,然後綁定,然後執行你的陳述。在答案的最後,這不僅僅是填充 - 這真的很重要。但是當你正在測試時,你可能想看看它是如何工作的,就像上面形成一個字符串一樣。

要回答您的「獎勵點數」 - 您可以通過簡單地在與顯示結果的PHP腳本相同的頁面上包含搜索表單來更新當前頁面。然後,如果按下提交按鈕,則只處理您的PHP代碼。你的整個腳本(在一個非常簡單的形式)可能是這樣的:

Search: <input type="text" name="q" /> <input type="submit" name="search" /> 
<?php 
if (isset($_REQUEST['search'])) { 
    # do your query 
    # loop through the results, printing them off in appropriate HTML 
} 

要回答你的「花紅」點,你可能會建立一個下拉(HTML格式「選擇」),其中值的選項是實際的字段名稱,並且顯示是一種人類可讀的形式。如果你選擇了名稱「FIELD_NAME」那麼你會修改您的查詢是這樣的:

$select = $db->query("SELECT * FROM customers WHERE $_REQUEST[field_name] LIKE '%$_REQUEST[q]%' ORDER BY id DESC"); 

請注意,你不能準備/綁定到列名,所以你只需要非常小心,以驗證字段非常精確(可能檢查它存在於可接受值列表中)。

+0

我應該提到的一件事,我已經有當前表正在同一頁面上查看。我怎樣才能將該表格刷新出來,或者用搜索語句隨時更改它? – Steven 2015-04-02 14:15:55

+0

每次按下「提交」頁面都會從頭開始重新加載。這就是HTML表單的工作原理。如果您在數據庫中填充臨時表,那麼您需要考慮如何刷新它,但由於您只是使用正常的SELECT查詢,因此應該沒有任何問題。 – 2015-04-02 14:31:17

+0

我有當前選擇子句檢查空行,如果行不是空的,它返回與HTML代碼通過「其他」查看錶。如何在搜索時在「其他」中添加「其他」?例如:如果(行空)回顯沒有記錄,否則(打印表數據),否則(查看搜索表單數據,並接受點擊提交刷新數據) – Steven 2015-04-02 15:21:43