php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.11.2011, 14:20  
Neuer Benutzer
 
Registriert seit: 13.11.2011
Beiträge: 16
PHP-Kenntnisse:
Anfänger
k1anguste befindet sich auf einem aufstrebenden Ast
Standard Formular mit SQL DB abgleichen

Hallo Zusammen,

als PHP Neuling möchte ich hier gerne eine Frage stellen.
Vielleicht wurde das Thema schon behandelt, dann wäre ein Link nett. Ich konnte selbst erstmal nichts finden...

Und zwar:

Ich habe eine SQL DB mit 5 Spalten und jede Menge Zeilen (ca. 2,8 Mio.)

Land Region Ort Lat Lon
Afghanistan Badakhshan Ab Band Matkat 382.889 708.286
Afghanistan Badakhshan Ab Cenar 368.825 701.606
Afghanistan Badakhshan Ab Chenar 368.825 701.606
Afghanistan Badakhshan Ab Darrah 381.014 704.669

Nun möchte ich ein Formular basteln, welches die Eingabe mit der Datenbank (z.B. Spalte Ort) abgleicht und bei einem Treffer eine Aktion ausführt (z.B. eine URL öffnen). Wird der Eintrag nicht gefunden oder gibt es den Eintrag mehrmals, soll eine Liste mit (sagen wir) 10 Vorschlägen (als Link) ausgegeben werden, die dem eingegebenen Wert ähnlich sind.

Bsp:
Eingabe: Ab BandMakat (ohne Leerzeichen)
Ausgabe: Meinten Sie
1. Ab Band Makat, Afghanistan
2. Ab Band Makat, Indien
2. Abu Dhabi, Dubai
usw.

Da ich zwar keine tieferen PHP Kenntnisse habe, mir aber meine Lösung gut erarbeiten kann, wenn ich weiss wonach ich suchen muss, bitte ich um den ein oder anderen Hinweis, welche Themen, Befehle, Funktionen ich mir ansehen sollte.

Beispielscripte wären natürlich auch hilfreich.

Danke für eure Hilfe

André
k1anguste ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.11.2011, 17:23  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Zur Suche könnte die Volltextsuche geeignet sein: http://dev.mysql.com/doc/refman/5.1/...xt-search.html
Und was Deine Tabelle angeht: da ist vielleicht ein bisserl Normalisierung nützlich. Den Landnamen und die Region immer und immer zu wiederholen, scheint mir nicht gut.
achtelpetit ist offline   Mit Zitat antworten
Alt 13.11.2011, 20:31  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 1.140
PHP-Kenntnisse:
Anfänger
hausl wird schon bald berühmt werdenhausl wird schon bald berühmt werden
Standard

Ev. hilft dir sowas:

SOUNDEX(), ... SOUNDS LIKE ...
http://dev.mysql.com/doc/refman/5.1/...functions.html

PHP kann auch so Zeugs aber bei der Menge vermutlich nicht so toll...
http://www.php.net/manual/de/function.soundex.php
bzw. weiter unten noch:
Zitat:
levenshtein() - Berechnet die Levenshtein-Distanz zwischen zwei Strings
metaphone() - Berechnet den Metaphone-Schlüssel eines Strings
similar_text() - Berechnet die Ähnlichkeit zweier Zeichenketten
__________________
Keine Zahl != ein Zeichen das keine Zahl ist
hausl ist offline   Mit Zitat antworten
Alt 13.11.2011, 20:49  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Festzustellen sei schon mal, dass die Datenbank vorher unbedingt zu normalisieren ist. Die genannte Zahl von Einträgen mit immer den gleichen Namen zu durchsuchen ist Wahnsinn. Erst recht mit den langsamen SOUNDEX etc. Funktionen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 13.11.2011, 21:15  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

SOUNDEX kann man zumindest noch vorberechnen und in einer extra Spalte ablegen, weil das die Begriffe ja nur jeweils für sich betrachtet – bei Levenshtein ist das schon anders, weil das jeweils beide Begriffe in die Berechnung einbezieht.

Allerdings ist auch SOUNDEX auf die englische Sprache zugeschnitten – bei deutschen Namen/Wörtern kann die Ergebnisqualität da schon eher durchwachsen ausfallen. Dafür eignet sich die Kölner Phonetik eher – aber die müsste man dann wiederum selber implementieren. (Was aber, wenn man die Werte in der Tabelle mit ablegt auch nicht so tragisch wäre.)
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 13.11.2011, 21:25  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Wesentlich einfacher ist da doch, den Nutzer bei der Eingabe zu führen. D.h. eine Liste aller Einträge bei jedem Tastendruck einblenden (-> AJAX Autocomplete).
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 13.11.2011, 21:30  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

[OT] Auch beim Autocomplete lauern Fallstricke, was die Usability angeht. Für Interessierte: http://uxdesign.smashingmagazine.com...ntry-selector/ [/OT]
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 17.11.2011, 17:05  
Neuer Benutzer
 
Registriert seit: 13.11.2011
Beiträge: 16
PHP-Kenntnisse:
Anfänger
k1anguste befindet sich auf einem aufstrebenden Ast
Standard

Hallo

Danke schonmal für eure Antworten.

Ich habe mir die Sache mit der Normalisierung mal angesehen, verstehe aber nur die Hälfte.

Wenn ich das richtig sehe, ist meine Tabelle schonmal 1NF

Es geht also um die Redundanzen bei Land und Region...

Aber wie lege ich die Tabellen denn nun am besten an?

Ich bin verwirrt...
k1anguste ist offline   Mit Zitat antworten
Alt 17.11.2011, 17:55  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich das richtig sehe, willst Du allerlei Städte auflisten?
Das gibt dann 3 hierarchisch aufeinander aufgebaute Tabellen:
1) Laender
LandId | Landname

2) Regionen
RegionId | LandId | RegionName

3) Staedte
StadtId | RegionId | StadtName

Jede Stadt gehört also immer genau zu 1 Region und jede Region zu genau 1 Land.
Was willst Du denn erreichen?
achtelpetit ist offline   Mit Zitat antworten
Alt 18.11.2011, 09:08  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

sorry, k1anguste aber dein Tabellen-Entwurf ist NICHT 1te Normalform .. die verlangt nämlich ATOMARE Information pro Spalte - und du schreibst 5 Spalten - ich zähle derer mindestens 7 plus eine weitere für die ID als Primäres Identifikationsmerkmal (primary key)

und - deine Koordinaten sehen auch sehr merkwürdig aus .. wie kann der Längengrad über 180 anwachsen ? Wie der Breitengrad über 90 ?
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kann nichts via Formular in die SQL Tabelle inserten nachgebloggt PHP Einsteiger 8 14.10.2011 02:02
Formular, dass Eingaben mit SQL Tabelle vergleicht? Mandrax PHP Einsteiger 17 27.09.2011 13:16
[Erledigt] Case führt nicht alle SQL Abfragen aus Angel PHP Einsteiger 2 05.09.2011 12:20
[Erledigt] 2 Arrays abgleichen ThomasM PHP Einsteiger 12 29.04.2011 15:04
SQL basierte ComboBox im Formular einbinden silverlite PHP Einsteiger 7 26.03.2011 23:33
Per Formular in SQL schreiben und inhalt in Html Datei ausgeben tinol23 PHP Einsteiger 1 24.01.2011 20:25
[Erledigt] PHP Formular Daten aus SQL in DropDown Seebär PHP Einsteiger 7 26.11.2010 16:48
SQL Datei mit PHP ausführen Kein Genie PHP Tipps 2010 2 09.11.2010 09:52
[Erledigt] "Form action" soll zweites Formular abschicken Farlif PHP Tipps 2010 7 19.08.2010 11:27
PHP: Formular Generator Zergling-new Tutorials 16 06.07.2010 03:14
Formular im Formular mistermint JavaScript, Ajax und mehr 11 21.06.2010 22:29
Mehrseitiges verzweigtes Formular RobbyNaish PHP Tipps 2009 1 19.12.2009 01:51
[Erledigt] Formular ergebnisse direkt unter Formular ausgeben www.donald.com^ PHP Tipps 2009 3 16.11.2009 17:20
Wert aus Textfeld in neues Formular übernehmen (kein Submit) PsychoEagle HTML, Usability und Barrierefreiheit 9 02.01.2007 14:51
[Erledigt] Formular in Formular HTML, Usability und Barrierefreiheit 4 19.10.2005 12:18

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php eingabe mit sql abgleichen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:26 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum