2014-12-02 65 views
-4

我目前有一個頁面,它在表格中顯示來自我的數據庫的數據,還可以使用一些關鍵術語進行搜索。我想要做的是讓表格被隱藏,除非它正在被搜索。我已經修改了我的代碼,因爲這是一項任務,我不希望它被剽竊。我真的希望有人知道的方式來做到這一點隱藏php表格,除非通過搜索調用

<?php 
    include_once('connection.php'); 

    $SQL = "SELECT * FROM `players`"; 

    if (isset($_POST['search'])) { 
    $search_word = mysql_real_escape_string($_POST['search_bar']); 
    $SQL .= " WHERE player_id LIKE '%{$search_word}%'"; 
    $SQL .= " or player_name LIKE '%{$search_word}%'"; 
    } 

    $SQL .= 'group by player_id, player_name order by player_id ASC'; 

    if(!($SQLRes = mysql_query($SQL))){ 
    echo 'Retrieval of data from Database Failed - #'.mysql_errno().': '.mysql_error(); 
    }else{ 
    if(mysql_num_rows($SQLRes)==0){ 
     echo '<tr><td colspan="1">No results </td></tr>'; 
    }else{ 
     $current_player_id = false; 
     while($row = mysql_fetch_assoc($SQLRes)){ 
     if ($row['player_id'] !=$current_player_id) { 
      if ($current_player_id !== false) 
      echo '</table>'; 
      echo ' 
       <h4>'.$row['player_id'].'</h4> 

       <table style = "width: 100%" class="listing" cellpadding="0" cellspacing="0"> 
        <tr> 
        <th style="width: 50%">Player Name</th> 
        </tr>'; 

      $current_player_id = $row['player_id']; 
     } 
     echo '<tr> 
       <td>'.$row['player_name'].'</td> 
       <td><a href =delete.php?del='.$row['player_id'].'><strong>DELETE<strong/></a></td> 
      </tr> '; 
     } 
    } 
    echo '</table>'; 

?> 
</table> 
+0

儘量不要使用MySQL,它在PHP中被棄用,並且會在更高版本中被刪除。改用MySQLi。 – cybermonkey 2014-12-02 13:57:11

+0

我會研究它。我只是一個初學者,所以希望它與MySQL沒有多大區別,所以我可以輕鬆地拿起它 – Rose 2014-12-02 14:07:00

回答

1

在你的if語句打開開始:

if (isset($_POST['search'])) { 
    $search_word = mysql_real_escape_string($_POST['search_bar']); 
    $SQL .= " WHERE player_id LIKE '%{$search_word}%'"; 
    $SQL .= " or player_name LIKE '%{$search_word}%'"; 
} 

它看起來對我來說,在檢查的$_POST變量告訴你如果你有搜索。

if只需要包裝整個代碼體,它應該做你正在尋找的東西。

這就是說,有幾個niggles在你的代碼的其他地方 - 請把這些正確的方式 - 在努力幫助和指導......

1 - 而不是建立自己的「喜歡」的陳述中你SQL,看看綁定變量。另外,請看mysqli使用示例。

2 - 不要在您的代碼中回顯,請考慮建立一個$ html字符串,然後在最後回顯。

3 - 它看起來像你正在編寫你的SQL select來返回同一個播放器的多個實例。這表明數據模型中存在一個缺陷(該表最終被稱爲player),或者在SELECT中 - 爲什麼不取回不同的行。

4 - 將SQL錯誤反饋回控制檯是讓外部人員訪問有關係統的受保護信息的好方法。考慮記錄到文件 - 至少在生產中。

5 - 我已更正了您的縮進。學習如何使用它,如果你正確地縮進代碼,它會多次挽救你的大腦。

+1

非常感謝你Rob,我覺得很愚蠢。我只是一個開始,我仍然在學習基礎知識,所以請忍受我的愚蠢問題。 – Rose 2014-12-02 14:05:22

+1

@Rose在這裏沒有這樣一個愚蠢的問題,只要它不能被回答(只要你符合堆棧溢出的規則,你就是這樣)。 – cybermonkey 2014-12-02 14:08:42

+0

同意你100%there @cybermonkey。不要擔心玫瑰。 – 2014-12-02 14:10:35