2014-12-02 2 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

+0

Я посмотрю. Я просто начинающий, поэтому надеюсь, что он не сильно отличается от MySQL, поэтому я могу легко его поднять. – Rose

ответ

1

В начале вы открываете с если заявление:

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, посмотрите на переменные связывания. Кроме того, взгляните на примеры использования mysqli.

2 - Вместо того, чтобы повторять ваш код, подумайте о создании строки $ html вверх, а затем эхом в конце.

3 - Похоже, вы кодируете свой SQL-выбор, чтобы возвращать несколько экземпляров одного и того же игрока. Это указывает на недостаток в datamodel (таблица называется player в конце концов), или в SELECT - почему бы не получить четкие строки.

4 - Повторение ошибок SQL на консоли - отличный способ предоставить внешним людям доступ к защищенной информации о вашей системе. Вместо этого рассмотрите запись в файл - по крайней мере, на производстве.

5 - Я исправил ваш отступ. Узнайте, как его использовать, он будет экономить ваш мозг много раз, если вы правильно отпечатаете код.

+1

Большое вам спасибо. Роб, мне так глупо. Я просто стартер, и я все еще изучаю основы, поэтому, пожалуйста, несите мои глупые вопросы. – Rose

+1

@Rose Здесь нет такого понятия, как глупый вопрос, если на него нельзя ответить (пока вы находитесь в правилах переполнения стека, которые вы есть). – cybermonkey

+0

Согласны с вами на 100% там @cybermonkey. Не волнуйся об этом. –

Смежные вопросы