AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [MySQL] Suche; 1 Begriff eingeben, nach mehreren suchen
Thema durchsuchen
Ansicht
Themen-Optionen

[MySQL] Suche; 1 Begriff eingeben, nach mehreren suchen

Offene Frage von "Chrissi91"
Ein Thema von Chrissi91 · begonnen am 11. Feb 2008 · letzter Beitrag vom 12. Feb 2008
Antwort Antwort
Chrissi91

Registriert seit: 28. Jul 2005
849 Beiträge
 
#1

[MySQL] Suche; 1 Begriff eingeben, nach mehreren suchen

  Alt 11. Feb 2008, 20:36
Hi,

ich habe eine kleine Suchfunktion im Onlineshop eingebaut:

Code:
$qry = mysql_query("SELECT * FROM shop_artikel WHERE michel LIKE '%".$_POST['form']."%'");
Jetzt ist der Shop ausschließlich für Briefmarken gedacht. Der User kann eingeben "Herz" oder "Hz" bzw. "Block" oder "Bl". Ich möchte gerne, dass wenn eines von beiden Möglichkeiten eingegeben wird, also Herz oder Hz nach beidem gesucht wird und doppeltes nicht doppelt aufgeführt wird?

Gibts da zufällig sone coole Funktion, oder muss ich das selbst einbauen mit 2 Querys. Das eine führe ich aus, das 2. ersetze ich mit den entsprechenden anderen Begriffen, führe es auch aus, tu die in ein Array wo ich doppelte einträge kicke?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: [MySQL] Suche; 1 Begriff eingeben, nach mehreren suchen

  Alt 11. Feb 2008, 21:04
Für ähnliche Begriff würde mir noch SoundEx einfallen. Ob das jedoch solche Fälle abdeckt glaube ich nicht.
Da wäre eher Programmlogik nötig die bei einem Suchbegriff alle anderen als "... or like ..." ergänzt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Techcrawler
Techcrawler

Registriert seit: 14. Sep 2006
Ort: Neukirchen-Vluyn
40 Beiträge
 
Delphi 2006 Architect
 
#3

Re: [MySQL] Suche; 1 Begriff eingeben, nach mehreren suchen

  Alt 11. Feb 2008, 21:24
Versuchs mal mit
SELECT DISTINCT ...
siehe: http://dev.mysql.com/doc/refman/5.1/de/select.html
Sascha
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: [MySQL] Suche; 1 Begriff eingeben, nach mehreren suchen

  Alt 12. Feb 2008, 07:09
Hallo Christopher,

soweit ich dein Problem verstehe, geht es darum Synonyme in eine Suche einzubeziehen. MySQL unterstützt einen Full-Text Index, was die Suche gegenüber LIKE drastisch beschleunigen kann. Außerdem vereinfacht die Suche mit MATCH ... AGAINST auch dein Problem enorm. Du führst einfach eine Synonym-Tabelle - das muss nicht in der Datenbank sein, eine Textdatei mit dem Zeilenformat "Wort=Synonym1,Synonym2" wäre ausreichend. Hast du die Suchworte erhalten, so ergänzt du sie um die Synonyme und baust die Full-Text Query. So musst du nicht mehrere Queries absetzen.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von yankee
yankee

Registriert seit: 10. Mär 2004
1.134 Beiträge
 
Lazarus
 
#5

Re: [MySQL] Suche; 1 Begriff eingeben, nach mehreren suchen

  Alt 12. Feb 2008, 20:14
Um Marabus Kommentar noch zu erweitern:
SELECT MATCH(spalte) AGAINST ('wort1 wort2 ...') AS relevanz FROM ... ORDER BY relevanz DESC
Damit kannst du einen Volltext query ausführen. Natürlich nur, wenn du vorher auch einen Volltextindext gesetzt hast.
Ein Anfrage WHERE spalte='%wort%' ist so ziemlich DIE langsamste Aktion, die es in MySQL nur gibt *gg*. Oder um es mal mit anderen Worten zu formulieren: "Es führt zum Ziel, fragt sich nur wann" .

Und lass dich bitte noch kurz vor mysql-injections warnen:
Wenn $_POST['form'] =="'", also wenn da ein Apotrophe drinsteht, hast du ein Problem. Eventuell klappt sogar
$_POST['form'] ="'; TRUNCATE TABLE shop_artikel; SELECT '";
Und du hast keine Artikel mehr ^^. Also immer schön mysql_real_escape() vorher auf deine Variabeln anwenden.
Letzter Tipp: Drogen. Machen zwar nicht glücklich, geben einem aber wenigstens das Gefühl glücklich zu sein.

Have a lot of fun!
  Mit Zitat antworten Zitat
Antwort Antwort


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz