zoekpagina in boolean mode

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wim de Ridder

Wim de Ridder

02/06/2013 12:34:14
Quote Anchor link
Ik ben al lange tijd bezig om van een mysql database d.m.v. een PHP-webpagina booleaanse zoekresultaten te genereren.

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.
De query heb ik gegenereerd in PHPadmin door bij query de query in te typen en vervolgens na het uitvoeren van de query op 'create PHP code' te clicken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?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.
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.