2017-08-19 27 views
0

誰かが助けてくれることを願っています。PHP MYSQL - 検索結果の検索と並べ替え

私はPHPスクリプトを使用してMySQLデータベースから引き出された競馬のヒントを記載するサイトを作成中です。データベース(ID、RaceDate、Location、RaceTime、Horse)を作成し、RaceDate列を照会して現在の日付と一致する行のみを表示するスクリプトをいくつか作成しました。以下を参照してください:

<?php 
    $db_host = 'xxxxx'; // Server Name 
    $db_user = 'xxxxx'; // Username 
    $db_pass = 'xxxxx'; // Password 
    $db_name = 'xxxxx'; // Database Name 

    $conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name); 
     if (!$conn) { 
      die ('Failed to connect to MySQL: ' . mysqli_connect_error()); 
     } 

    $sql = 'SELECT * FROM Horses WHERE Date(RaceDate) = Date(NOW())'; 
    $result = $conn->query($sql); 

?> 

は、私は、素敵なテーブルでフォーマットされた画面へのデータ、だエコー私のページのさらに下のphpの別のビットを持っています。

<?php 
    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      echo '<tr> 
       <td>'.$row['Location'].'</td> 
       <td>'.$row['RaceTime'].'</td> 
       <td>'.$row['Horse'].'</td> 
      </tr>'; 
     } 
    } else { 
     echo '0 results'; 
    } 
     $conn->close(); 
?> 

これはすべて素晴らしい作品ですが、大きなリストにすべてを吐き出しています。私が本当にしたいのは、レースの場所に応じて結果を分割することです。

たとえば、5レース@ location1,5 @ location2および5 @ location3があります。 15人のレースを1つずつリストアップするのではなく、3つのグループ/テーブルに分割したいと思います。クエリデータの[場所]列を検索し、表示されている競馬場を特定し、そのデータを画面に表示する方法はありますか?

e.g IF Location = Wolverhampton 
     THEN echo to table 1 
    ELSE IF Location = Ayr 
     THEN echo to table 2 
    ELSE IF Location = Llos Fas 
     THEN echo to table 3 
    (etc, if more Locations exist) 

答えて

0

私のコメントは複雑なものですが、これは簡単な方法です。

while($row = $result->fetch_assoc()) { 
    if($row['Location'] === 'location1') 
    { 
     echo '<tr> 
      <td>'.$row['Location'].'</td> 
      <td>'.$row['RaceTime'].'</td> 
      <td>'.$row['Horse'].'</td> 
     </tr>'; 
    }else if($row['Location'] === 'location2') 
    { 
     echo '<tr> 
      <td>'.$row['Location'].'</td> 
      <td>'.$row['RaceTime'].'</td> 
      <td>'.$row['Horse'].'</td> 
     </tr>'; 
    }else if($row['Location'] === 'location3') 
    { 
     echo '<tr> 
      <td>'.$row['Location'].'</td> 
      <td>'.$row['RaceTime'].'</td> 
      <td>'.$row['Horse'].'</td> 
     </tr>'; 
    } 
    // And so on.... 
} 
+0

ありがとうございますが、これはうまくいかないようです。 if/else ifループごとに、エントリの前に 'Location'が追加されます。次のようなものがあります。 LOCATION1位置1午後01時30 Horse1 LOCATION1位置1 14:00 Horse2 LOCATION1位置1午後02時30 Horse3 LOCATION2 LOCATION2 15:30 Horse4 など 私はその、まだすべてのエントリの前に場所を追加し、場所$行を取り出した場合でも。あなたのコードは助けになりました - 私は私がこれよりも解決に近づいているように感じます。 – theukcrazyhorse

+0

今すぐ試してみて、私は別の方法で答えを書いてから、それをもっと簡単にするように考えましたが、いくつかの行を削除するのを忘れました。 – FilipRistic

+0

ありがとうございます。私はこれが多かれ少なかれ私がそれを必要とすると思う。 :) – theukcrazyhorse

関連する問題