PHP: Suchfunktion

Fragen zum Thema HTML, JavaScript, PHP
Antworten
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

PHP: Suchfunktion

Beitrag von naums » Mo Sep 13, 2010 10:24 am

Wer schonmal www.oettinger-games.net.tf näher angeschaut hat, wird bemerkt haben, dass die Suchfunktion dort das letzte ist. z.Z. findet die nur was wenn... $eingegeben=$spielname sonst nich. Natürlich macht es mehr Sinn wenn man nicht nur nach ganzen titeln suchen kann, sondern vllt. sollte ich die eingaben an bestimmten stellen mit explode zerhacken und kucken welcher Titel dem entspricht. Was weiß ich.... Das wenn z.B. jemand "top Gun" sucht, und ich hab 'Top Gun' und "Top Gun 2' in meiner Spielliste, dann wird zuerst der Suchstring "top gun" nach '"' durchsucht, um zu kucken, ob der Suchende vllt. doch nach dem exakten ausdruck sucht. Will er hier nicht, also wird der String am " " geteilt, und nach beide teilstrings mit allen Titeln in der DB mittels explode verglichen. Wenn jeweils ein Array von 2 oder mehr Elementen rauskommt, dann hat der Titel den Suchstring in sich. Dann nurnoch ausgeben und fertig :D

1. Würde das theoretisch funktionieren?
2. Macht PHP Unterschiede in Groß- und Kleinschreibung, bei strings?
3. Gibt es vllt. eine vorteilhaftere Funktion/Prozedur/Methode in PHP?
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP: Suchfunktion

Beitrag von Xin » Mo Sep 13, 2010 11:01 am

naums hat geschrieben:Das wenn z.B. jemand "top Gun" sucht, und ich hab 'Top Gun' und "Top Gun 2' in meiner Spielliste, dann wird zuerst der Suchstring "top gun" nach '"' durchsucht, um zu kucken, ob der Suchende vllt. doch nach dem exakten ausdruck sucht. Will er hier nicht, also wird der String am " " geteilt, und nach beide teilstrings mit allen Titeln in der DB mittels explode verglichen. Wenn jeweils ein Array von 2 oder mehr Elementen rauskommt, dann hat der Titel den Suchstring in sich. Dann nurnoch ausgeben und fertig :D

1. Würde das theoretisch funktionieren?
Ja.

Üblicherweise suchen Suchmaschinen aber nicht nach Strings, weil das zu lange dauert, sondern nach IDs. Bei einer kleinen Website kannst Du das aber durchaus so handhaben, wie Du es beschrieben hast.
naums hat geschrieben:2. Macht PHP Unterschiede in Groß- und Kleinschreibung, bei strings?
Auf Wunsch ja. Du wirst allerdings vermutlich eher die Datenbank suchen lassen. SQL sucht glaube ich ohne Unterscheidung, aber ich bin sicher, dass sich das auch einstellen lässt.
naums hat geschrieben:3. Gibt es vllt. eine vorteilhaftere Funktion/Prozedur/Methode in PHP?
Wie gesagt: Ich sehe hier die Lösung eher in SQL.

=> SELECT * FROM table WHERE name like "%$SUCHBEGRIFF%" OR description like "%$SUCHBEGRIFF%"
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP: Suchfunktion

Beitrag von naums » Mo Sep 13, 2010 11:50 am

SELECT * FROM table WHERE name like "%$SUCHBEGRIFF%"

wobei name hier eine spalte sein soll, nor? ^^ ich hätte eher alles erstmal ausgelesen und dann mittels explode gekuckt, aber das dauert im gegensatz zu der SQL Variante wirklich schweine lange.
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP: Suchfunktion

Beitrag von Xin » Mo Sep 13, 2010 12:17 pm

naums hat geschrieben:SELECT * FROM table WHERE name like "%$SUCHBEGRIFF%"

wobei name hier eine spalte sein soll, nor? ^^
Yepp.
naums hat geschrieben:ich hätte eher alles erstmal ausgelesen und dann mittels explode gekuckt, aber das dauert im gegensatz zu der SQL Variante wirklich schweine lange.
PHP wird interpretiert, das dauert länger als optimierte Routinen von SQL. Außerdem müssen alle Daten erstmal kopiert werden, um sie auszusortieren. Mit SQL werden nur die Daten kopiert, die Dich interessieren.

Allgemein ist die Sache noch effizienter, wenn Du nur kopierst, was Dich interessiert, z.B.
SELECT id, name, description FROM table WHERE name LIKE "%$SUCHBEGRIFF%" OR description LIKE "%$SUCHBEGRIFF%"
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP: Suchfunktion

Beitrag von naums » Mo Sep 13, 2010 3:06 pm

den Teil nach dem OR kann ich aber auch weglassen???

und was passiert eigentlich, wenn in einer Tabelle nichts drin steht, und ich trotzdem einen abfrage->fetch_assoc() ausführen lasse? Lässt sich der Fehler mit if ($res=$abfrage->fetch_assoc()) verhindern?

Code: Alles auswählen

$db=new mysqli("localhost", "user", "pswd", "db");
$abfrage=$db->query($query, MYSQLI_STORE_RESULT);
if ($res=$abfrage->fetch_assoc())
{

}
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP: Suchfunktion

Beitrag von Xin » Mo Sep 13, 2010 3:38 pm

naums hat geschrieben:den Teil nach dem OR kann ich aber auch weglassen???
Natürlich, die Frage ist halt, über welche Einträge der Datenbank Du suchen möchtest.
naums hat geschrieben:und was passiert eigentlich, wenn in einer Tabelle nichts drin steht, und ich trotzdem einen abfrage->fetch_assoc() ausführen lasse? Lässt sich der Fehler mit if ($res=$abfrage->fetch_assoc()) verhindern?
Kenne ich den internen Aufbau Deiner Datenbank-Klasse? ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Dominik
Beiträge: 381
Registriert: Mo Jul 07, 2008 9:39 pm

Re: PHP: Suchfunktion

Beitrag von Dominik » Di Sep 14, 2010 3:29 pm

mysqli ist doch öffentlich zugänglich ^^
Rechtschreibefehler sind gewollt und dienen der Unterhaltung

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP: Suchfunktion

Beitrag von Xin » Di Sep 14, 2010 4:03 pm

Dominik hat geschrieben:mysqli ist doch öffentlich zugänglich ^^
Mein Gedächtnis befindet sich auch unter external-brain.com, trotzdem weißt Du nicht alles auswendig, was drin steht, oder? ^^
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP: Suchfunktion

Beitrag von naums » Mi Sep 15, 2010 8:36 pm

am besten ich probiers einfach mal selbst aus :)
.globl truth
truth:
mov r0, #42
mov pc, lr

Antworten