zoekpagina in boolean mode
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)
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
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 />";
}
}
?>
// 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.