2012-02-08 20 views
-3

MySQLデータベースから特定の日付のデータを読み出そうとしました。 私が欲しかったのは、入力した特定の日付内にデータベースからすべてのデータを取得するPHPでしたが、スクリプトはちょうど最初の行のデータを取得して残りの部分を残してしまったようです。PHP MySQLのデータ出力

これを達成するためのコードを教えてください。

<?php 
    if(isset($_REQUEST['query'])) 
    { 
     $searchQuery = $_POST['data-search']; 

     //connceting to db 
     $con = mysql_connect($_SERVER['SERVER_NAME'],'root',''); 
     if(!$con) 
     { 
      die("Error connecting: ".mysql_error()); 
      exit; 
     } 
     //selecting db 
     $dbSelect = mysql_select_db("directory",$con); 
     $query = "SELECT * FROM websites WHERE Date LIKE '$searchQuery'"; 
     //executing query 
     $result = mysql_query($query,$con); 
     if(!$result) 
     { 
      die("Could not connect: ".mysql_error()); 
     } 
     while($row = mysql_fetch_array($result)) 
     { 
      $searchOutput = "<html><body><table border=1><tr><td>Website Title</td><td>Website URL</td><td>About Website Content</td></tr> 
           <tr><td>".$row['Title']."</td><td>".$row['URL']."</td><td>".$row['Content']."</td></tr></table>"; 
     } 
     $searchSuccess = "<p>Your Search was successful</p</body></html>"; 
     mysql_close($con); 
     echo $searchOutput; 
     echo $searchSuccess; 

    } 
    else{ 
     echo "Invalid"; 
    } 

?> 
+4

検索したすべての行で$ searchOutput文字列が上書きされています。また、テーブル、行、セルのhtmlマークアップを学ぶ努力をしてください....マークアップ自体は完全に矛盾しています –

+0

そして、あなたは新しいHTMLドキュメント/ボディを各行ごとに開始しています。ブラウザからブラウザへの偽のレンダリング – hakre

+0

どうすれば問題を解決できますか? – Josiah

答えて

1

スクリプトでは、ループを通過するたびに$searchOutputを置き換えます。

変更:へ

while($row = mysql_fetch_array($result)) 
    { 
     $searchOutput = "<html><body><table border=1><tr><td>Website Title</td><td>Website URL</td><td>About Website Content</td></tr> 
          <tr><td>".$row['Title']."</td><td>".$row['URL']."</td><td>".$row['Content']."</td></tr></table>"; 
    } 

$searchOutput = "<html><body><table border=1><tr><td>Website Title</td><td>Website URL</td><td>About Website Content</td></tr>"; 

while($row = mysql_fetch_array($result)) 
    { 
     $searchOutput .= "<tr><td>".$row['Title']."</td><td>".$row['URL']."</td><td>".$row['Content']."</td></tr>"; 
    } 

$searchOutput .= "</table>"; 

すべてのテンプレート/書式設定のものは、データベース・ロジックのものから分離されるようにところで、あなたのコードをリファクタリングを検討してください。それは、長期的に読んで維持することをより容易にするでしょう。

+0

この作品をありがとうございました。 – Josiah

0

あなたは例えば、日付として日付列を扱う必要があります。:

$query = "SELECT * FROM websites WHERE Date between '$startDate' and '$endDate'"; 

あなたが代わりにSQLインジェクションを避けるために、文字列連結を使用してのParamterizedクエリを使用する必要があります。私は、MySQLのドキュメントにはいくつかの例があると確信しています。