2012-01-15 3 views
0

のための作業を行います。一部の製品では動作しますが、他の製品では動作しません。私はそれがなぜその理由であるか把握することができません。PHP Searchfunctionは、一部の製品のためにしませんが、私はPHP/MySQLでsearchfunctionを作成しようとしている他の人

私はこのテーブルから、フィールドの製品ナーム」と「メルク」を使用しています:http://piclair.com/data/4192d.jpg

searchfunctionはSEARCHQUERYの「コイーバ」や「パンチ」などのワークを行います。しかし、それは 'sigarillos'や 'aansteker'のような検索クエリのためには機能しません。また、製品が見つからない場合は、エラーメッセージは表示されず、理由もわかりません。

  <?php 

     $invoer = $_POST['zoekwoord']; 

     ?>   

     <a href="index.php">Home</a>/<a href="zoekresultaten.php" class ="selected"><?php echo $invoer; ?></a> 

    <?php 
    //verbind met database 
     include("login/con1.inc"); 


    $page=$_GET["page"]; //Get the page number to show 
    If($page == "") 
    { 
     $page=1; //If no page number is set, the default page to 1 
    } 

    //eerst wordt de query opgehaald om te bepalen hoeveel pagina's nodig zullen zijn. 
    $sql = "SELECT '".$invoer."' 
      FROM product      
      ORDER BY productnaam"; // dit is dus de query om de producten op te halen 

    $query = mysql_query($sql) or die (mysql_error()."<br>in file ".__FILE__." on line ".__LINE__); // als de query niet uitgevoerd wordt geeft die een foutmelding met bestandsnaam en regelnummer 
    $num = mysql_num_rows($query); // Het aantal producten 

    $Limit = 6; //Number of results per page 
    $NumberOfPages = ceil($Num/$Limit); 

    $sql = mysql_query("SELECT * FROM product WHERE merk='".$invoer."' AND Categorie_Nummer = 1 ORDER BY productnaam LIMIT " . ($page-1)*$Limit . ",$Limit") or die(mysql_error()); 



    if(empty($num)) { 
         echo "<p>Er zijn geen producten gevonden.</p>\n"; 
      } else { 
         // Laat de producten zien 
         while($product = mysql_fetch_object($sql)) {        
         ?> 

         <table border="5" class="productlist" width="400px"> 
blablablabla 

うーん:ここ

は、コードの関連する部分です。エラーメッセージを作成しようとしているうちに、私は検索機能自体を壊しました。再び 'aansteker'などでは機能しません。また、エラーメッセージはまだ機能しません。

ここで私が今持っているコードです:

<div id="contentbox"> 
     <?php 

     $invoer = mysql_real_escape_string($invoer); 
     $invoer = $_POST['zoekwoord']; 

     ?>   

     <a href="index.php">Home</a>/<a href="zoekresultaten.php" class ="selected"><?php echo $invoer; ?></a> 

    <?php 
    //verbind met database 
     include("login/con1.inc"); 


    $page=$_GET["page"]; //Get the page number to show 
    If($page == "") 
    { 
     $page=1; //If no page number is set, the default page to 1 
    } 

    //eerst wordt de query opgehaald om te bepalen hoeveel pagina's nodig zullen zijn. 
    $sql = "SELECT productnaam LIKE '".$invoer."' OR merk LIKE '".$invoer."' 
      FROM product      
      ORDER BY productnaam"; // dit is dus de query om de producten op te halen 

    $query = mysql_query($sql) or die (mysql_error()."<br>in file ".__FILE__." on line ".__LINE__); // als de query niet uitgevoerd wordt geeft die een foutmelding met bestandsnaam en regelnummer 
    $num = mysql_num_rows($query); // Het aantal producten 

    $Limit = 6; //Number of results per page 
    $NumberOfPages = ceil($Num/$Limit); 

    $sql = mysql_query("SELECT * FROM product WHERE productnaam LIKE '%$invoer%' OR merk='".$invoer."' AND Categorie_Nummer = 1 ORDER BY productnaam LIMIT " . ($page-1)*$Limit . ",$Limit") or die(mysql_error()); 
$num = mysql_num_rows($sql); 

答えて

2

あなたのテーブルには、(つまり、完全なテーブルの場合)merk = 'sigarillos' OR mark = 'aansteker'はそうクエリは、これらの検索のための行を返すことはありませんレコードがありません。おそらく `productnaam 'も検索するつもりです。

また、SQLインジェクションに対して$invoerをフィルタリングするmysql_real_escape_string()を使用することを忘れないでください:

$invoer = mysql_real_escape_string($invoer); 

同様productnaamを検索するには、以下のいずれかにあなたのクエリを変更します。あなたのエラーメッセージが表示取得するには、むしろそれ以前より、上記のクエリ後mysql_num_rows()を使用しています。

$sql = mysql_query("SELECT * FROM product WHERE productnaam LIKE '%$invoer%' OR merk='".$invoer."' AND Categorie_Nummer = 1 ORDER BY productnaam LIMIT " . ($page-1)*$Limit . ",$Limit") or die(mysql_error()); 
$num = mysql_num_rows($sql); 
+0

うん。それは、 'merk'と 'productnaam'の両方ではなく、 'merk'だけを検索するようです。 どうすれば変更できますか?私は*テーブルを検索します。したがって、 'productnaam'は検索に含まれるべきです... – Forza

+0

@Forza上記の 'LIKE'節を参照してください。 –

+0

Ok、cool;)それは動作します。存在しないものを検索すると、エラーメッセージのみが表示されます。あなたはそれについて何か手がかりはありますか? – Forza