2015-05-04 3 views
1

Итак, сейчас у меня есть база данных MySql на phpmyadmin, подключенная к моему скрипту PHP. В нем перечислены 50 разных игроков НФЛ и их статистика с прошлого года. Я хотел бы иметь возможность перечислить раскрывающийся список, где я могу сортировать игроков по любой из категорий (например, приемы, Rec Yds, TDs и т. Д.), Но я не уверен, как бы я это сделал .. ?? У меня есть оператор switch, но он, похоже, ничего не делает прямо сейчас.Сортировка с MySQL и PHP

<!DOCTYPE html> 
<html> 
<!-- Seth Rataiczak --> 
<head> 
     <title>PHP Project</title> 
     <style> 
      table,th,td { 
       border:1px solid navy; 
       } 
      body { 
      background-color:peachpuff; 
      } 
     </style> 
</head> 

<body> 

<?php 
// database connection 
    $db_hostname='localhost'; 
    $db_username='root'; 
    $db_password=''; 
    $db_database='Project'; 

    $connection = new mysqli( $db_hostname, 
           $db_username, 
           $db_password, 
           $db_database); 

//MySQL Select Statement 

    $sort = ""; 
    if(isset($_GET['sort'])) { 
     switch ($_GET['sort']) { 
      case 0: 
       $sort = ' ORDER BY Team DESC'; 
       break; 
      case 1: 
       $sort = ' ORDER BY Pos DESC'; 
       break; 
      case 2: 
       $sort = ' ORDER BY Rec DESC'; 
       break; 
      case 3: 
       $sort = ' ORDER BY Yds DESC'; 
       break; 
      case 4: 
       $sort = ' ORDER BY Avg DESC'; 
       break; 
      case 5: 
       $sort = ' ORDER BY Yds/G DESC'; 
       break; 
      case 6: 
       $sort = ' ORDER BY TD DESC'; 
       break; 
     } 
    }  

     $sql = "SELECT * FROM NFL_2014_Receiving WHERE Field=1" . $sort; 
     $result = $connection->query($sql); 
     if (!$result) die ($connection->error); 
     $n = $result->num_rows; 

     $nfl = array(); 

// echos the table headers 
     echo "<table> 
      <tr><th>ID</th><th>Player</th><th>Team</th> 
      <th>Position</th><th>Receptions</th> 
      <th>Receiving Yards</th><th>Avg Yds/Catch</th> 
      <th>Avg Yds/Game</th><th>Touchdowns</th></tr>"; 

// echos the table data 
     while ($row = $result->fetch_array(MYSQLI_ASSOC)){ 
      $nfl[$row['iD']] = $row['Player']; 
      if(!isset($_POST['hide']) || $_POST['hide'] != $row['iD']){ 
       echo "<tr><td width=20>" . $row['iD'] . "</td><td width=150>" . $row['Player'] . "</td><td width=40>" . 
         $row['Team'] . "</td><td width=30>" . $row['Pos'] . "</td><td width=30>" . 
         $row['Rec'] . "</td><td width=40>" . $row['Yds'] . "</td><td width=30>" . 
         $row['Avg'] . "</td><td width=40>" . $row['Yds/G'] . "</td><td width=20>" . 
         $row['TD'] . "</td></tr>"; 
      } 
     } 
     echo "</table><br>"; 

//dropdown box 
     echo "<form method='post' action='index.php'><select name='hide'>"; 
     foreach($nfl as $key=>$value){ 
      echo "<option value='".$key."'>".$value."</option>"; 
     } 
// submit button 
     echo "<input type='submit' value='Submit'>"; 
     echo "</select></form>"; 

?> 

</body> 
</html> 
+0

Вы уверены, что '$ sort' становится установлен? –

+0

@JayBlanchard нет. Я не уверен. Я как бы застрял на этом этапе в своем коде – Rataiczak24

ответ

2

Вы устанавливаете действие метода POST и выполняете поиск GET для значения.

Чтобы было ясно: Вы можете изменить метод формы, чтобы получить <form method='get' action='index.php'> или изменить ваш PHP значение $_GET['sort'] для $_POST['sort']

я м вполне уверен, что это ваша проблема, но вы можете повторить ваш переменный $ SQL, чтобы увидеть, что ваши запрос делает;)

+0

, поэтому вы говорите, что я должен его изменить, поэтому я ищу значение POST вместо значения GET? – Rataiczak24

+0

Я обновил свой ответ;) – codegaze

1
  • входной элемент находится внутри тега select. должно быть после выбора, а не внутри.
  • Метод формы должен быть равен принимаемому параметру, в этом случае должен быть GET.
  • имя избранных должно быть «своего рода» вместо «шкурой»
+0

гораздо лучше ответ! Я даже не заметил! – codegaze

+0

@DanteJavier Я включил его, поэтому входное представление находится вне тега select. Я также изменил его, чтобы все было GET вместо POST. Однако, если я изменю его на «sort» вместо «hide», тогда он больше не скрывает игрока, когда он выбран, и это то, что мне нужно. Мне нужно получить оба, где я могу выбрать игрока и скрыть его, когда он будет выбран, а также будет иметь возможность выбрать из раскрывающегося списка, как я хочу сортировать таблицу. – Rataiczak24

+0

затем измените $ _GET ['sort'] на $ _GET ['hide'] –

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