php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.05.2011, 13:51  
Neuer Benutzer
 
Registriert seit: 01.03.2011
Beiträge: 24
PHP-Kenntnisse:
Anfänger
Mandible befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] MYSQL Volltextsuche mit erweiterten Funktionen?

Hallo,
ich suche jetzt schon seit fast zwei Tagen nach einer Möglichkeit, für meine (funktionierende) Volltextsuche erweiterte Funktionen hinzuzufügen, wurde aber nicht fündig.

Ich habs mir so vorgestellt, dass über mehrere Suchfelder Suchbegriffe gefiltert werden können. Wenn es also in jeweils fünf Einträgen in meiner DB das Wort Alpha (Spalte1) gibt und in dreien davon das Wort Beta (Spalte2), dann soll bei der Suche nach den Begriffen Alpha und Beta, eben diese drei Einträge als Ergebnisse auftauchen.

Ich habe hier mal was probiert:
PHP-Code:
<?php 

$seite 
$_GET["seite"];  //Abfrage auf welcher Seite man ist 

//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1 
if(!isset($seite)) 
   { 
   
$seite 1
   } 

// Verbindung zur Datenbank herstellen 
$link = require("dbconnect.php"); 

$suchwort1 mysql_real_escape_string($_GET['suche1']); 
$suchwort2 mysql_real_escape_string($_GET['suche2']); 
$suchwort3 mysql_real_escape_string($_GET['suche3']); 

//Einträge pro Seite: Hier xx pro Seite 
$eintraege_pro_seite 50   

//Ausrechen welche Spalte man zuerst ausgeben muss: 

$start =  $seite $eintraege_pro_seite $eintraege_pro_seite


$abfrage "SELECT * FROM tabelle WHERE MATCH (spalte1) AGAINST ('%$suchwort1' IN BOOLEAN MODE) AND MATCH (spalte2) AGAINST ('%suchwort2' IN BOOLEAN MODE) 
AND MATCH (spalte3) AGAINST ('%$suchwort3' IN BOOLEAN MODE)  LIMIT $start, $eintraege_pro_seite"



$ergebnis=mysql_query($abfrage) ; 
echo 
mysql_error(); 

    echo 
"<p><h3>Suchergebnisse</h3></p>"
    while(
$row mysql_fetch_object($ergebnis)) 


    { 
    echo 
"<fieldset>"
    echo 
"<p><b>abc:</b></td><td>".htmlspecialchars ($row->spalte1)." </p>";   // Hier die Ausgabe der Einträge 
    
echo "<p><b>abc:</b></td><td>".htmlspecialchars ($row->spalte2)." </p>"
    echo 
"<p><b>abc:</b></td><td>".htmlspecialchars ($row->spalte3)." </p>"
    echo 
"</fieldset>"
    } 

$result mysql_query("SELECT * FROM tabelle WHERE MATCH (spalte1) AGAINST ('%$suchwort1' IN BOOLEAN MODE) AND MATCH (spalte2) AGAINST ('%suchwort2' IN BOOLEAN MODE) AND MATCH (spalte3) AGAINST ('%$suchwort3' IN BOOLEAN MODE)"); 

$menge mysql_num_rows($result); 

//Errechnen wieviele Seiten es geben wird 
$wieviel_seiten $menge $eintraege_pro_seite

//Ausgabe der Seitenlinks: 
echo "<div align=\"center\">"
echo 
"<b>Seite:</b> "

//Ausgabe der Links zu den Seiten 
for($a=0$a $wieviel_seiten$a++) 
   { 
   
$b $a 1

   
//Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben 
   
if($seite == $b
      { 
      echo 
"  <b>$b</b> "
      } 

   
//Aus dieser Seite ist der User nicht, also einen Link ausgeben 
   
else 
      { 
      echo 
"<a href=\suchen.php?suche=".$_GET['suche']."&seite=$b\">$b</a> "
      } 

 } 
echo 
"</div>"
echo 
"<p></p>"     
echo 
"<fieldset></fieldset>"    

$menge2 mysql_num_rows $result ); 
echo 
'<b>' $menge2 ' Ergebnisse gefunden</b><br>'


?>
HTML-Code:
<form id="suche" name="suche" action="suchen.php" method="GET" enctype="text/html" onsubmit="return ">

                        <p></p>
                        <p>Suche nach abc </p>
                        <input type="text" name="suche1" value=""  size="15" maxlength="20" />


                        <p></p>
                        <p>Suche nach abc</p>
                        <input type="text" name="suche2" value=""  size="15" maxlength="20" />


                        <p></p>
                        <p>Suche nach abc</p>
                        <input type="text" name="suche3" value=""  size="15" maxlength="20" />

                        <input type="submit" name="" value="Los" />
                        </form> 
Allerdings bekomme ich so keine Ergebnisse.

Suche ich nur nach einem Begriff, funktionierts einwandfrei. Hat da vllt jemand eine Idee? Zum dem Thema hab ich bei Google und in anderen einschlägigen Foren nichts finden können.

Es handelt sich hier um einen Beitrag, den ich am 23.05. schon hier (http://www.traum-projekt.com/forum/1...unktionen.html) verfasst habe, allerdings konnte mir dort wohl niemand weiterhelfen. (Thema Crossposting).

Danke schonmal.

Geändert von Mandible (30.05.2011 um 15:39 Uhr).
Mandible ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.05.2011, 14:00  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Code:
WHERE MATCH (spalte1) AGAINST ('%$suchwort1' IN BOOLEAN MODE) 
  AND MATCH (spalte2) AGAINST ('%suchwort2' IN BOOLEAN MODE) 
  AND MATCH (spalte3) AGAINST ('%$suchwort3' IN BOOLEAN MODE)
Du erzielst nur Treffer, wenn alle Bedingungen erfüllt sind (d.h. sowohl spalte1 muss suchwort1 enthalten, als auch spalte2 suchwort2 und spalt3 suchwort3)

Zusätzlich: '%$suchwort1'
Damit findest du nur Spalteninhalte, die mit dem Suchwort enden. Besser '%$wort%' (Prozentzeichen vorne und hinten) verwenden, das findet auch Suchwörter in der Mitte oder am Anfang der Spalte.

'%suchwort2'
Hier fehlt das Dollarzeichen für die PHP Variable. Akutell wird nach "suchwort2" am Ende der Spalte gesucht...
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 30.05.2011, 15:58  
Neuer Benutzer
 
Registriert seit: 01.03.2011
Beiträge: 24
PHP-Kenntnisse:
Anfänger
Mandible befindet sich auf einem aufstrebenden Ast
Standard

Ok, danke. Der einzige alternative Operator, der mir in dioesem Fall noch bekannt ist, wäre 'OR'. Hier werden die Einträge allerdings einfach zusammengezählt.
Mandible ist offline   Mit Zitat antworten
Alt 31.05.2011, 22:27  
Neuer Benutzer
 
Registriert seit: 28.01.2011
Beiträge: 23
PHP-Kenntnisse:
Anfänger
raiguen ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das hier könnte Dir helfen bzw Deinem Wunsch näher kommen:
Code:
WHERE (spalte1) LIKE('%$suchwort1%') +
  (spalte2) LIKE('%$suchwort2%') +
  (spalte3) LIKE('%$suchwort3%') >=2
Mindestens zwei Bedingungen müssen erfüllt sein, damit der entsprechende Datensatz angezeigt wird.
raiguen ist offline   Mit Zitat antworten
Alt 01.06.2011, 17:43  
Neuer Benutzer
 
Registriert seit: 01.03.2011
Beiträge: 24
PHP-Kenntnisse:
Anfänger
Mandible befindet sich auf einem aufstrebenden Ast
Standard

WHERE (spalte1 LIKE '%$suchwort1%')AND
(spalte2 LIKE '%$suchwort2%') AND
(spalte3 LIKE '%$suchwort3%')";

So hats geklappt.
Danke.
Mandible ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Erkenntnisse aus der MySQL -> Oracle migration Donald Datenbanken 9 13.04.2010 14:24
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
MySQL Volltextsuche bringt 0 Ergebnisse bench78 PHP Tipps 2010 17 08.02.2010 10:26
MySQL Verbindung zu fremden Server Xanatus Datenbanken 5 27.05.2009 14:13
[Erledigt] Kann keine Umlaute im mysql client eingeben Oger Datenbanken 9 02.04.2009 11:54
MySQL Konsole und Umlaute unter Windows [LÖSUNG] f4ckm5 Datenbanken 8 30.03.2009 22:10
Ideen für Tageszeitung mit XML, MySQL, PHP gesucht webazubi PHP-Fortgeschrittene 7 06.07.2006 12:25
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MySQL 3.23.x Volltextsuche mit Boolean codix Datenbanken 0 29.07.2005 14:42
MYSQL läuft nur wenn /tmp auf 777 Datenbanken 5 06.07.2005 08:38
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql volltextsuche, mysql_query where match besten treffer, mysql volltextsuche mit, mysql match 50%, php volltextsuche, volltextsuch mit link zu resultaten php, mysql volltext suche, php fulltext suche mysql, mysql in boolean mode and, mysql match umlaute, mysql volltextsuche mehrere suchbegriffe, php volltextsuche mysql 50% boolean mode, php volltextsuche mysql, mysql where match(, mysql php match in boolean mode, mysql suche where spalte1 & spalte2 like, datenbank match google suche, mysql match variablen, php fulltext boolean, datenbank suche like google

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:48 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum