eigener Suchalgorithmus
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfrage
ausgeben
aussage
code
datenbank
datum
ergebnis
falle
index
inhalt
spalten
statement
string
suchbegriff
suche
tip
url
verbindung
video
wert typ
-
Hallo,
Ich weiß einfach nich wie man einen eigenen Suchalgorithmus schreibt
der aus einer MySQL Datenbank die daten ausliest und dann nach einem suchfeld wieder ausgibt. (so ähnlich wie bei youtube)
wenn mir das einer erklären könnte wäre das echt super.
ich verlange ja nicht ein code.
und nein ich möchte kein Google als Suchmaschine für die Seite einbinden.(geht auch nicht mit einer Datenbank)
Danke schonmal.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi
Bei Youtube kannst du, wenn du ein Video hochlädst, Tags angeben. Diese sehen vielleicht so aus:
weisheit, alltag, nütlich, Winter, kalt, warm haben
Wenn du nun was suchst , werden nach Videos gesucht mit einem Tagwort, welches du eingegeben hast.
hoffe das konnte dir helfen.
Beitrag zuletzt geändert: 24.1.2013 9:56:34 von gamedevelop -
kein Code? gut^^
1. Suchbegriff vom User eingeben lassen
2. DB connect
3. Suchbegriff in der Tabelle suchen (in Tags, Name, Titel etc.)
4. Ergebnisse in ein Objekt oder Array übergeben und zur Ausgabe bereit machen
5. in View übergeben und dort ausgeben
Tipp 1: ich empfehle die suche immer über die DB laufen zulassen da die sich nun mal besser mit ihren Daten auskennt und schneller ist
Tipp 2: in den Spalten wo Du in der DB suchst sollte ein Index definiert sein (zB. Fulltext oder wie das heißt)
viel Glück und Spaß beim Programmieren ;)
-
djlbeater schrieb:
Hallo,
Ich weiß einfach nich wie man einen eigenen Suchalgorithmus schreibt
der aus einer MySQL Datenbank die daten ausliest und dann nach einem suchfeld wieder ausgibt. (so ähnlich wie bei youtube)
wenn mir das einer erklären könnte wäre das echt super.
ich verlange ja nicht ein code.
Diese Aussagen passen nicht zusammen.
Eine reine Beschreibung wie du vorgehen könntest wird dir nichts bringen.
Oder erwartest du einen Link auf ein fertiges Script, welches deinen Wünschen entspricht?
mfg,
timebandit
Beitrag zuletzt geändert: 31.1.2013 9:10:54 von timebandit -
Ein Suchalgorithmus ist dazu überhaupt nicht notwendig, da MySQL für dich die Arbeit erledigen wird:
wenn du jetzt ein Suchfeld hast, in dem du beispielsweise nach Stichworten in der Beschreibung suchen willst, dann musst du ja lediglich ein korrektes SQL-Statement zusammenbasteln, und das Ergebnis mit PHP wie gewohnt ausgeben, z.B.
SELECT * from tablename WHERE description LIKE %$searchstring%
Du kannst das Statement natürlich beliebig erweitern, dass z.B. nur die ersten 10 Ergebnisse ausgegeben werden oder Ähnliches.
Solange du aber keine genaueren Angaben machst, wie die Datenbank strukturiert ist, kann man die Aussagen dazu nicht präzisieren.
Du solltest dich also vornehmlich mit SQL beschäftigen und nicht mit Suchalgorithmen, da das der falsche Ansatz ist -
jetzt schreib ich hier doch mal nen code hin, damit du weißt mit welchen funktionen du dich genau auseinandersetzen solltest...
<!DOCTYPE html> <html lang="de"> <head> <meta charset="utf-8"> <title>Suche</title> </head> <body> <form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> <input type="text" name="suche"> <input type="submit" value="Suche starten"> </form> <?php if(isset($_POST["suche"]) and $_POST["suche"]!="") { // Benötigte Angaben zu deiner Datenbank // ------------------------------------- $myDatenbankserver = ""; $myDatenbankusername = ""; $myDatenbankpasswort = ""; $myDatenbankname = ""; // Verbindung zum Datenbankserver aufbauen // --------------------------------------- $dbLink = mysql_connect($myDatenbankserver, $myDatenbankusername, $myDatenbankpasswort); if(!$dbLink) { die("Verbindung zum Datenbankserver schlug fehl: ".mysql_error()); } // Datenbank auswählen // ------------------- if(!mysql_select_db($myDatenbankname, $dbLink)) { die("Kann Datenbank nicht auswählen: " . mysql_error()); } // Anfrage zusammenbauen - auf Sicherheit gegen Injection-Angriff achten // --------------------------------------------------------------------- $dbStatement = sprintf("SELECT inhalt FROM eintraege WHERE inhalt LIKE '%%%s%%'", mysql_real_escape_string($_POST["suche"])); // Anfrage an Datenbank senden // --------------------------- $dbResult = mysql_query($dbStatement, $dbLink); if(!$dbResult) { die("Ungültige Datenbank-Anfrage: ".mysql_error()); } // Ergebnis abholen und ausgeben // ----------------------------- echo "<h1>Es wurden ".mysql_num_rows($dbResult)." Ergebnisse gefunden</h1>"; while($dbZeile=mysql_fetch_assoc($dbResult)) { echo "<p>".$dbZeile["inhalt"]."</p>"; } } ?> </body> </html>
-
Hallo hcms,
Zeile 13 deines Codes ist nicht ganz richtig.
if(isset($_POST["suche"]) and $_POST["suche"]!="") { if(isset($_POST["suche"]) and $_POST["suche"]!=="") { // besser
mfg,
timebandit
Beitrag zuletzt geändert: 31.1.2013 11:06:47 von timebandit -
Hallo timebandit,
wieso sollte die überprüfung auf wert&typ in diesem falle besser sein ?
ich will doch nur mit dem wert weiterarbeiten wenn er als string nicht leer ist, also bietet es sich doch an zu prüfen ob der wert auch nach einer eventuellen automatischen typenkonvertierung zu string leer wäre.
der unterschied in deiner version führt doch höchstens dazu das ich eventuell doch einen leeren string zur weiterverarbeitung bekomme.
oder verstehe ich da etwas falsch ? -
MySQL hat eine fertige Suchfunktion bereits eingebaut. Dazu musst du nur einen Fulltext-Index setzen und kannst dann mit MATCH (spalten) AGAINST ('Suchwort') suchen. Zu empfehlen ist hier der BOOLEAN MODE.
Eine Suche mit LIKE funktioniert zwar grundsätzlich auch, ist aber bei größeren Datenmengen viel langsamer und du kannst nicht nach mehreren Wörtern suchen.
http://dev.mysql.com/doc/refman/5.1/de/fulltext-search.html -
Hallo hcms
hcms schrieb:
wieso sollte die überprüfung auf wert&typ in diesem falle besser sein ?
?
In diesem Fall ist das tatsächlich keine Verbesserung.
Im allgemeinen halte ich aber eine Überprüfung auf Wert und Typ für sinnvoll, deshalb mein "kleiner Eingriff" in deine Antwort.
Gerade Anfänger machen bei den Vergleichsoperatoren Fehler und wundern sich dann, dass die
DB-Abfrage andere Ergebnisse erzeugt als gewünscht.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage