2015-05-04 106 views
1

所以現在我的phpmyadmin上有我的MySql數據庫連接到我的PHP腳本。它列出了去年50個不同的NFL球員和他們的統計數據。我希望能夠列出一個下拉框,以便我可以根據任何類別對球員進行排序(即接待,記錄YDS,TD等),但我不知道該怎麼做。我在那裏有一個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
  • 輸入提交在選擇標記內。必須在選擇之後,而不是在裏面。
  • 表單的方法必須等於接收的參數,在這種情況下必須是GET。
  • 選擇的名稱必須是「排序」而不是「隱藏」
+0

好得多的答案!我甚至沒有注意到! – codegaze

+0

@DanteJavier我把它切換了,所以輸入提交在選擇標籤之外。我也改變了它,所以一切都是GET而不是POST。但是,如果我將其更改爲「排序」而不是「隱藏」,那麼選中時就不會隱藏玩家,這是我需要的。我需要在選擇一個球員並在選中時隱藏他的位置,同時也可以從下拉框中選擇我想要如何排序表格。 – Rataiczak24

+0

然後將$ _GET ['sort']更改爲$ _GET ['hide'] –