suche nach wildcards

analogbernd

Mitglied
hi, ich habe in meiner db ein paar adressen und solch kram. bisher habe ich mir immer alles mit phpmyadmin rausgesucht, ist auch nicht sonderlich viel und spektakuläres zeug ;)

so langsam wird es mir trotzdem zu umständlich. bin leider auch nicht so der php profi. ich dachte mir nun, ich mach mir mal ein kleines abfragescript mit welchem ich die daten mir sortiert anzeige, je nach eingabe. die db hat felder wie name, vorname, ort und plz, nun möchte ich eingeben können zb nur die plz, oder plz und str usw.
meine eingabe habe ich fertig. aber die abfrage funktioniert nicht. habe mal bissel mit like und solche kram rumprobiert, aber komme nicht zur lösung.

außerdem rätsle ich noch, wie es möglich ist, die ergebnisse auf eine anzahl pro seite zu beschränken. denn so 200 datensätze auf einer seite finde ich ist wohl etwas unübersichtlich.

würde mich freuen wenn ihr hier etwas resonanz zeigt und vielleicht den ein oder anderen tipp und link zum thema habt.

danke
 
Okay, ich versuch mal ein bißchen Hilfestellung:
WHERE:
Mit WHERE kannst du schonmal deine Abfrage beschränken.. Du gibst einer oder mehrere Spalten vor ein Kriterium/einen Suchbegriff enthalten zu müssen.

Beispiel:
Alle Zeilen mit der Postleitzahl: 76307
SELECT * FROM tabelle WHERE plz = 76307;

Alle Zeilen mit Wohnort: Karlsbad
SELECT * FROM tabelle WHERE ort = 'Karlsbad';

Um nun alle mit der Postleitzahl 76307 und dem Vornamen Hans zu suchen kannst du deine WHERE Klausel auch erweitern:
SELECT * FROM tabelle WHERE plz = 76307 AND vorname = 'Hans';*

* Man beachte unter anderem:
Wenn du nach Zeichenfolgen/Namen/Texten in VARCHAR/TEXT etc. suchst musst/solltest du den Suchbegriff in Hochkommas setzen.
Bei Zahlenfeldern (INTEGER etc.) solltest du sie lieber weglassen damit du keine verfälschten Ergebnisse oder sogar gar keine Ergebnisse bekommst.

Willst du nun z.B. einen Postleitzahlenbereich der mit 76 beginnt, dann könnte deine Abfrage so aussehen:
SELECT * FROM tabelle WHERE plz LIKE '76%';

Vergnügen wir uns nun mit dem beschränken der Abfragen:
Damit nicht alle Datensätze auf einmal erfasst werden kann man die Abfrage auch auf eine bestimmte Anzahl Datensätze beschränken. Nehmen wir an du willst 10 Datensätze pro Seite:

SELECT * FROM tabelle LIMIT 0, 10;

Das LIMIT 0, 10 sagt MySQL das du nur 10 Datensätze, angefangen bei 0 haben willst. Du kannst für die 0 auch einen anderen Wert einsetzen um bei einem anderen Datensatz zu beginnen.
Um das ganze auf einern PHP Seite mit Blätterfunktion zu machen kuckst du am besten in unser Programmierung-Tutorials-Forum, da gibt es ein schönes.

So, das sollte mal ein kleiner Überblick sein. Du kannst auch die Abfragen mal von phpMyAdmin benutzen, sie variieren, etc. um zu sehen was passiert wann, wie macht man es vielleicht anderst usw.

Weiteres Infos findest du unter:
http://www.mysql.com/doc/en/SELECT.html
http://www.mysql.com/doc/en/String_comparison_functions.html

Hoffe ein wenig geholfen zu haben ;)
 
Zuletzt bearbeitet:
Hallo!

Also wenn Du von der Optik her keine genauen Vorstellungen hast, dann würde
ich das an deiner Stelle durch den DBDesigner jagen. Da kannst du Dir
automatisch ein Webfront erzeugen lassen.

Hier mal der Link:
http://www.fabforce.net/dbdesigner4/

Ist damit eine Sache von 2 Minuten und wenn man das Programm erst von Grund
auf begreifen muß, sinds 10 Minuten.

mfg Hoizwurm
 
wenn es mit der connection klappen würde, wäre es sicherlich kein ding. meine db ist im netz, vielleicht will er deswegen nicht. oder provider lässt es nicht zu. ma guggn.

aber noch ne andere frage zu dem beitrag oben


PHP:
SELECT * FROM tabelle WHERE plz = 76307 AND vorname = 'Hans';

ich weiß doch jetzt nicht, ob ich bei der suche auch nach beiden dingen suche. d.h. ich habe es jetzt mal ähnlich probiert, jedoch ab der 3. oder 4. eingebauten option wird das suchergebniss nicht mehr das, welches es sein sollte.

PHP:
SELECT * FROM tabelle WHERE plz LIKE '%$plz%' AND name LIKE '$nname' AND vorname LIKE '$vnanme' AND benutzer LIKE '%$usr_name%' LIMIT 0,10

wenn ich nur nach dem benutzer suche finde ich ihn nicht, obwohl er in der db steht ( varchar ) suche ich nach nichts ;) also gebe keine variable vor, bekomme ich alle außer die einen benutzernamen haben (hä wieso?) suche ich mit nname und vname sehe ich im ergebniss auch die, die in der gleichen plz wohnen. usw.....

danke
 
Zurück