online-markus
Mitglied
Hi,
ich bin mit meiner neuen Seite fast fertig,jetzt fehlt nur noch die Such-Funktion.
Ich will eine Suche durch eine DB mit Downloads machen.
Erstmal die Struktur der Datenbank:
Bei der Suche sollen die Felder Name und Beschreibung durchsucht werden.
Meine erste Version, die ich mal gemacht habe war folgende:
Das hat auch eingentlich funktioniert, jedoch ist die Suche keineswegs optimal:
1. Wenn man nach zwei Wörtern such, wird nur ein Ergebnis gefunden, wenn die Wörter auch in dieser Reihenfolge vorkommen.
2. Die Suche gehen, wenn ALLE Suchbegriffe enthalten sind, und egal wo, also wenn zb. ein Begriff im Feld `Name` enthalten ist und der andrere in `Beschreibung`.
Ich hab dann das Script mal umgeschrieben, um das 1. Problem zu lösen:
Da kommt dann so was raus:
Das ist aber keinesweg Optimal, ich wollte es ja erstens mit AND machen, dass alle vorkommen müsen und 2. darf ja ein Wort in der einen und ein anderes in einer anderen Spalte sein.
Ich hab so das Gefühl, dass ich nicht weit weg bin, von der Lösung...
Wer kann mir helfen und nen Tipp geben?
Danke im Voraus, Markus
ich bin mit meiner neuen Seite fast fertig,jetzt fehlt nur noch die Such-Funktion.
Ich will eine Suche durch eine DB mit Downloads machen.
Erstmal die Struktur der Datenbank:
Code:
CREATE TABLE `dl` (
`Id` int(20) NOT NULL auto_increment,
`Name` varchar(255) NOT NULL default '',
`Beschreibung` text NOT NULL,
`Datei` varchar(255) NOT NULL default '',
`Users` text NOT NULL,
`Cat` varchar(20) NOT NULL default '',
`Anzahl` int(20) NOT NULL default '0',
PRIMARY KEY (`Id`)
) TYPE=MyISAM;
Bei der Suche sollen die Felder Name und Beschreibung durchsucht werden.
Meine erste Version, die ich mal gemacht habe war folgende:
PHP:
$suche = ereg_replace(" ","%",$suche);
$result_dl = mysql_query("SELECT * FROM $table_dl WHERE `Name` LIKE '%$suche%' OR `Beschreibung` LIKE '%$suche%') OR die(mysql_error());
Das hat auch eingentlich funktioniert, jedoch ist die Suche keineswegs optimal:
1. Wenn man nach zwei Wörtern such, wird nur ein Ergebnis gefunden, wenn die Wörter auch in dieser Reihenfolge vorkommen.
2. Die Suche gehen, wenn ALLE Suchbegriffe enthalten sind, und egal wo, also wenn zb. ein Begriff im Feld `Name` enthalten ist und der andrere in `Beschreibung`.
Ich hab dann das Script mal umgeschrieben, um das 1. Problem zu lösen:
PHP:
$such_array = explode(" ",$suche);
$anzahl = count($such_array);
$dl = "SELECT * FROM dl WHERE ";
for($i=0; $i<=$anzahl-1; $i++)
{
$dl .= "`Name` LIKE '%$such_array[$i]%' OR ";
$dl .= "`Beschreibung` LIKE '%$such_array[$i]%' OR";
}
$dl = substr($dl, 0, -3);
Da kommt dann so was raus:
Code:
SELECT * FROM dl WHERE `Name` LIKE '%wort_1%' OR `Beschreibung` LIKE '%wort_1%' OR`Name` LIKE '%wort_2%' OR `Beschreibung` LIKE '%wort_2%'
Das ist aber keinesweg Optimal, ich wollte es ja erstens mit AND machen, dass alle vorkommen müsen und 2. darf ja ein Wort in der einen und ein anderes in einer anderen Spalte sein.
Ich hab so das Gefühl, dass ich nicht weit weg bin, von der Lösung...
Wer kann mir helfen und nen Tipp geben?
Danke im Voraus, Markus
Zuletzt bearbeitet: