Boolean zoekresultaten

Status
Niet open voor verdere reacties.

swimnos

Gebruiker
Lid geworden
28 jan 2013
Berichten
5
Ik ben al lange tijd bezig om van een mysql database d.m.v. een webpagina booleaanse zoekresultaten te krijgen.

Inmiddels ben ik al heel eind gekomen maar nu zit ik vast.
Het leerproces heb ik stap voor stap gedaan, vandaar dat er in onderstaande code enkele controle regels zitten.
Het probleem waar ik nu tegen aanloop is de MYSQL Query en dan vooral bij de MATCH AGAINST functie.
Zoals je in de code kunt zien heb ik hier een vaste waarde ingegeven bij AGAINST. Dit werkt perfect.

PHP:
<?php
// not set? 
if(!isset($_POST['omschrijving2'])) exit('nothing posted'); 

// get posted values 
$keywords  = $_POST['omschrijving2']; 
$qualifier = $_POST['qualifier']; 



//do the search and search using all the terms if 'all' 
if  ($qualifier == "all") 
   {
  $words=explode(" ",$keywords); 
     
    //add + operator to each keyord 
    $keywords = ''; 
    foreach($words as $word) { 
        $keywords .= "+".$word." "; 
    } 
     
    echo $keywords;        // '+vleugel +staart ' 
    $keywords = rtrim($keywords); // remove last space 
    echo '<br>'.$keywords; // '+vleugel +staart'
  echo "is de keyword waarde";
  }
else
  {
  echo "geen waarde in keywoord";
  }


mysql_connect("localhost","xxx","xxx","xxx");
mysql_select_db('museum'); 
$query = mysql_query("SELECT omschrijving FROM `rapporten` WHERE MATCH (`rapnaam` , `omschrijving`)\n"
    . "AGAINST (\"+vleugel +model\" IN BOOLEAN MODE) ");
  

if(!$query) {

echo mysql_error()."<br>$query<br>";
}
else
  {

while($row = mysql_fetch_array($query)){
	echo "<br />";
	echo $row['omschrijving'];
	echo "<br />";


  }
}
?>

Het probleem is dat wanneer ik de vaste waarde in de query vervang voor de dynamische waarde "AGAINST ('$keywords' IN BOOLEAN MODE) dan wordt er geen waarde ontvangen.
Als ik de waarde verander naar "AGAINST (".$keywords." IN BOOLEAN MODE) "); Dan krijg ik deze foutmelding; Unknown column 'vleugel' in 'where clause'
Als derde variatie heb ik deze geprobeerd; "AGAINST (.$keywords. IN BOOLEAN MODE) "); met als resultaat een error melding; You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '+vleugel +staart. IN BOOLEAN MODE)' at line 2
Voor alle testjes heb ik de waarde vleugel staart in het formulier ingevuld.

Iemand een idee hoe dit op te lossen. Ik weet niet of dit belangrijk is maar ik gebruik dreamweaver en mysql versie 5.5.24 voor dit project.
B.v.d.

Mod-edit: Gelieve de PHP-tag in plaats van TABLE te gebruiken ;)
 
Laatst bewerkt door een moderator:
Waarom gebruik je geen LIKE?

PHP:
$query = mysql_query("SELECT omschrijving FROM rapporten WHERE rapnaam LIKE '%".mysql_real_escape_string($keyword)."%' OR omschrijving LIKE '%".mysql_real_escape_string($keywords)."%'");
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan