Hallo,
Da steht ich schon wieder an..
Es gibt eine DB-Tabelle mit Spalte "Name" und Spalte "Text1". Jetzt habe ich eine einfaches Input-Feld mit welchem in der DB gesucht werden kann. Gibt Jemand jedoch ein Wort ein, welches nicht im Name oder Text vorkommt so findet es nicht. Logisch 
Meine Idee: Mit jQuery Autocomplete laufend Name oder Wörter aus dem Text1 einblenden, in welchen der Suchbegriff vorkommt.
Wenn ich nur im Feld "Name" suche ist das auch keine Sache, dann gebe ich einfach den ganzen Namen aus.
Das Problem: Eine SQL Abfrage, welche im Name und im Text1 sucht. Findet es im Text1 den Suchbegriff, dann mit PHP nur die Wörter vom Text1 ausgeben in welchen der Suchbegriff vorkommt.
SQL für Test:
Abfrage
In der VAR $row->text1 ist der ganze Text. Wie bekomme ich nur die Wörter in denen auch der Suchstring passt?
Gibt Jemand "Banan" ein so sollte es diese Wörter ausspucken:
Banane, Bananen, Bananengewächse
Für alle AW's dankbar!
Da steht ich schon wieder an..


Meine Idee: Mit jQuery Autocomplete laufend Name oder Wörter aus dem Text1 einblenden, in welchen der Suchbegriff vorkommt.
Wenn ich nur im Feld "Name" suche ist das auch keine Sache, dann gebe ich einfach den ganzen Namen aus.
Das Problem: Eine SQL Abfrage, welche im Name und im Text1 sucht. Findet es im Text1 den Suchbegriff, dann mit PHP nur die Wörter vom Text1 ausgeben in welchen der Suchbegriff vorkommt.
SQL für Test:
Code:
--
-- Tabellenstruktur für Tabelle `dbsuche`
--
CREATE TABLE IF NOT EXISTS `dbsuche` (
`id` int(11) NOT NULL auto_increment,
`name` text NOT NULL,
`text1` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- Daten für Tabelle `dbsuche`
--
INSERT INTO `dbsuche` (`id`, `name`, `text1`) VALUES
(1, 'Äpfel', 'Die Äpfel (Malus) bilden eine Pflanzengattung der Kernobstgewächse (Pyrinae) au'),
(2, 'Birnen', 'Die Birnen (Pyrus) bilden eine Pflanzengattung, die zu den Kernobstgewächsen'),
(3, 'Banane', 'Banane steht für: Bananen (Musa), eine Gattung in der Familie der Bananengewächse');
Abfrage
PHP:
$woerter = array();
$sql = "SELECT
name, text1,
IF( name REGEXP '$search', 3, 0 ) AS inName,
IF( text1 REGEXP '$search', 1, 0 ) AS inText1
FROM
dbsuche
WHERE
name REGEXP '$search'
OR
text1 REGEXP '$search'
ORDER BY
(inName + inText1)
DESC
LIMIT 10";
$query = $this->db->query($sql);
foreach ($query->result() as $row){
//Wenn im Namen gefunden
if($row->inName >= 3){
$woerter[] = $row->name;
}
//Wenn im Text gefunden
if($row->inText1 >= 1){
//Wie bekomme ich nur die Wörter in denen der Suchbegriff ist?
$row->text1;
}
}
In der VAR $row->text1 ist der ganze Text. Wie bekomme ich nur die Wörter in denen auch der Suchstring passt?

Gibt Jemand "Banan" ein so sollte es diese Wörter ausspucken:
Banane, Bananen, Bananengewächse
Für alle AW's dankbar!
Zuletzt bearbeitet: