2017-10-14 9 views
0

まず、この質問が繰り返されるように見える場合や、私がデューデリジェンスを行っていないと感じた場合は、お詫び申し上げます。私は通常、以前にインターネットを精査していますが、私は尋ねる必要があるかのように感じます。検索機能の横に1ページのURLを使用する

基本的に、私は地元の都市のいくつかのアトラクションをリストアップした1ページの動的ウェブサイトを構築しています。その部分は大丈夫です - 私はMySQLを使用してデータベースを作成しました。私は1つのデータベースと、それぞれが異なるID名を持つ4つの異なるテーブルを持っています。

私の問題は、ユーザーが入力したもの、つまりアトラクションの名前に限定されており、実際に動的URLにリンクするのに苦労しています(最初のテーブルのループクエリを除いて)

以下のコードは、これを行う理由を説明しています。私は外部のリンクなどであるかどうかに関わらず、誰かが私に答えにつながる可能性があることを神様に願っています。私は最も感謝し、永遠に負債になります。彼らは結果がONLYバック私が代わりに?category&fdID=".$results['foodID'];セットを持っているという事実による食品N飲み物のページへリンクしていたら

<?php 
error_reporting(0); 
?> 



<?php 



      mysqli_connect("localhost", "root", "", "everydayleeds") or die(mysqli_error()); 
      mysqli_select_db($con, "everydayleeds") or die(mysqli_error()); /* everydayleeds is the name of database we've created */ 


      $query = $_GET['query']; // 'query' is the variable name given to the $_GET action, which will take whatever is typed into the search box, indicating this via the URL paramater' 

      $min_length = 3; // You can set minimum length of the query if you want 


      if(strlen($query) >= $min_length){ // If query length is more or equal minimum length then 

       $query = htmlspecialchars($query); // This changes characters used in HTML to their equivalents, for example: < to &gt; 

       $query = mysqli_real_escape_string($con, $query); // Makes sure nobody uses SQL injection 


       $raw_results = mysqli_query ($con, "SELECT foodndrink.Name AS fdName, nightlife.Name AS nightName, culture.Name AS cultName, placestostay.Name AS pName, foodndrink.fdID AS foodID, nightlife.nightID AS nID, cultID AS cID, placesID AS pID FROM foodndrink, nightlife, culture, placestostay 


        WHERE (foodndrink.Name LIKE '%".$query."%') OR (nightlife.Name LIKE '%".$query."%') OR (culture.Name LIKE '%".$query."%') OR (placestostay.Name LIKE '%".$query."%') ") OR die (mysqli_error($con)); 


       if(mysqli_num_rows($raw_results) > 0){ // If one or more rows are returned do following 

        while($results = mysqli_fetch_assoc($raw_results)){ // $results = mysql_fetch_assoc($raw_results) puts data from database into array, while it's valid it does the loop    
         echo "Yes, we have a".$_GET['query']."<a href=attractions.php?category&fdID=".$results['foodID']; 

break; 

        } 

       } 

       else{ // if there is no matching rows do following 
        echo "<p>Nope, Leeds probably doesn't have a </p>".$_GET['query']; 
       } 

      } 
      else{ // if query length is less than minimum 
       echo "Minimum length is ".$min_length; 
      } 




?> 

ので、リンクとは、ユーザーがクリックすることができます。

私はルーピング、ジョイントを試みましたが、私は円で回っているようです。私は私の問題は、私は4つの異なるIDを持つ4つの異なるテーブルを持っているという事実であると信じています。

アドバイスをいただければ幸いです。

ありがとうございます。

+0

のようなものを作ることができますか?コードプレビューはすべてのコードを捕まえていないようですが、代わりにHTMLプレビューを使用しました。 – Bilaal

答えて

0

"Union all"メソッドを使用すると、静的なテキストを各テーブルの結果に追加できます。サンプルはin hereです。その後

、[はい、あなたがコードを見ることができないという点

echo "<a href=attractions.php?category&".$results['tableName']."&ID=".$results['foodID']; 
+0

今日、私はUNIONに出くわしました。私の答えはその中にあるかもしれません。私は一見、ありがとう! – Bilaal

関連する問題