除非通过搜索调用,否则隐藏php表

时间:2014-12-02 13:46:24

标签: php sql

我目前有一个页面,它在表格中显示来自我的数据库的数据,并且还可以使用一些关键术语进行搜索。我想要做的是隐藏表,除非它被搜索。我已经改写了我的代码,因为这是一项任务,我不希望它被抄袭为抄袭。我真的希望有人知道这样做的方法

<?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>

1 个答案:

答案 0 :(得分: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只需要包含整个代码体,它就应该做你正在寻找的东西。

也就是说,代码中的其他地方有一些小问题 - 请采取正确的方式 - 以帮助和指导......

1 - 不要在SQL中构建“like”语句,而是查看绑定变量。另外,请查看mysqli用法示例。

2 - 不要回显你的代码,而是考虑构建一个$ html字符串,然后在最后回显。

3 - 看起来您正在编写SQL select以返回同一玩家的多个实例。这表明数据模型中存在缺陷(表格毕竟称为player),或者在SELECT中 - 为什么不回到不同的行。

4 - 将SQL错误回送到控制台是一种很好的方式,可以让外部人员访问有关系统的受保护信息。请考虑记录到文件 - 至少在生产中。

5 - 我已经纠正了你的缩进。学习如何使用它,如果你正确缩进代码,它会多次拯救你的大脑。