SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 26.12.2004, 19:03:19
ProGamer11 ProGamer11 ist offline
Anfänger
 
Registriert seit: Feb 2002
Beiträge: 55
Name+Adresse in einer Spalte.. wie nur Name auslesen

Folgendes Problem, habe hier eine Tabelle mit dem Feld "ID" + ""Kontakt".

Über eine Suchfunktion soll nun per Formulareingabe der Name aus "Kontakt" gesucht werden. Sucht man nun nach "Anna", dann wird nicht nur der Name Anna ausgewählt, sondern auch Straßen oder Orte bei denen "ANNA" vorkommt...

Hat jemand eine Idee das Problem zu lösen?

Dachte zuerst eine extra Spalte "Name" zu erstellen und die Suche auf diese Spalte einzustellen, allerdings sind tausende von Einträgen in der Tabelle. Würde Tage oder Wochen dauern, das von Hand einzutragen.

Die Tabelle sieht z.B. so aus

ID | Kontakt
================
1 | Mueller, Klaus Hauptstrasse 1 12345 Berlin
2 | Meier Hermann In der Gosse 2 12345 Berlin
3 | Helmut Bahnhofstr 2 12345 Berlin
...
Mit Zitat antworten
  #2  
Alt 26.12.2004, 21:16:06
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Re: Name+Adresse in einer Spalte.. wie nur Name auslesen

Zitat:
Original geschrieben von Muenchbach
Dachte zuerst eine extra Spalte "Name" zu erstellen und die Suche auf diese Spalte einzustellen, allerdings sind tausende von Einträgen in der Tabelle. Würde Tage oder Wochen dauern, das von Hand einzutragen.
Das solltest du aber definitiv machen. Mit dem Ansatz, den du bis jetzt als Struktur für die Tabelle hast, wirst du nicht glücklich werden, wie du ja jetzt auch siehst.

Das umtragen in die neuen Spalten kannst du ja über ein Script erledigen.

EDIT: Mein Vorschlag für die Abfrage war Schwachsinn, da das Komma ja nicht den Namen vom Rest trennt.

Geändert von xabbuh (27.12.2004 um 12:44:44 Uhr)
Mit Zitat antworten
  #3  
Alt 27.12.2004, 12:10:58
Benutzerbild von Matt
Matt Matt ist offline
Member
 
Registriert seit: Mar 2002
Ort: Port 80, localhost-city, 127/0/0/1
Beiträge: 878
nunja, ich würde sogar sagen, mit einer spalte für "Kontakt" kannst du das ganze vergessen.
Was ist bei Doppelnamen, zweiten Vornamen, etc? Du hast einen Abstand als trennzeichen, das ist nicht gerade sehr gut.
Wenn ich
"Johann Wolfgang von Goethe" heisse, wie kriegst du raus, was mein vorname und was mein nachname ist? (im vornamen und im nachnamen ist ein abstand)
nach deiner Schreibweise wäre das dann
von Goethe Johann Wolfgang Strassennr. 1 10312 Berlin

Wenn du das jetzt ausliest, hast du also:

Nachname: von
Vorname: Goethe
Straße: Johann
Hausnummer: Wolfgang
Postleitzahl: Strassennr.
Stadt: 1

ich empfehle dir DRINGEND das alles in unterschiedliche Spalten zu tun. Kleiner tip: wenn du es wirklich clever machen möchtest, verwende für Hausnummern und Postleitzahlen char bzw. varchar felder, weil:

Hausnummer 17/Stiege 2 oder Hausnr. 11A, bzw. das verrückteste sind die Addresseon von den Studentenwohnungen in Berlin, die sehen beispielsweise so aus:

Aristotelessteig 88.10.04.99 (88 ist die verwaltungsnr. des gebäudes, 10 ist die Hausnummer, die allerdings in wirklichkeit 6 ist, 04 bedeuted im vierten Stock und 99 ist dann die Wohnungsnummer in dem Stock.)
Das selbe für Postleitzahlen:
In Irland (oder England?) sind Buchstaben in den Postleitzahlen enthalten, in Deutschland waren Postleitzahlen früher nur vierstellig, heute sind sie fünfstellig. in amerika haben sie meines wissens nach neun Stellen.
Als Alternative könntest du natürlich 3D GPS koordinaten in der Datenbank speichern, aber ich denke es wäre verdammt schwer, an die ranzukommen ;)

Wie gesagt, ich empfehle dir ebenfalls DRINGENDST diese Tabelle zu ändern. Nur ein paar beispiele was sonst noch probleme machen könnte:
Wie überprüfst du, welche leute in welchem Bundesland wohnen? (wäre für viele sachen wichtig)
Ich versichere dir, dass das verdammt viel schwerer ist, als du denkst, da es beispielsweise eine "Berlinerstraße" gibt, aber auch "Berlin-Mahlsdorf". Du kannst also nicht nach einem Berlin ganz am ende des Strings suchen, da es wahrscheinlich nicht immer dort zu finden ist ("Berlin-Mahlsdorf") du kannst es auch nicht irgendwo im text suchen, da es ja vielleicht eine Berlinerstraße in München gibt...
Usw.
Du kannst auch nicht einfach herausfinden, wie viele leute aus Berlin kommen - das ginge sonst mit einem MYSQL befehl: select count(*) from kontakte group by wohnort.
Eigentlich brauchst du für soetwas nicht eine datenbank, ich denke ehrlich, dass du dir da mit textfiles ne menge arbeit ersparen würdest, und die performance, die bei textfiles abgeht, machst du mit deinen string operationen locker wieder wett...

wie gesagt: ändere diese tabelle bitte! Du ersparst dir SEHR viel ärger!

lg matt
Mit Zitat antworten
  #4  
Alt 27.12.2004, 12:46:19
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Zitat:
Original geschrieben von Matt
Eigentlich brauchst du für soetwas nicht eine datenbank, ich denke ehrlich, dass du dir da mit textfiles ne menge arbeit ersparen würdest, und die performance, die bei textfiles abgeht, machst du mit deinen string operationen locker wieder wett...
Ich stimme dir ja eigentlich in deinem gesamten Text zu, aber mit Textdateien würde ich das in keinem Fall aufbauen. Nicht nur der Performance wegen, sondern auch weil es meiner Meinung nach mit MySQl (wenn man es sinnvoll macht) wesentlich einfacher ist.
Mit Zitat antworten
  #5  
Alt 27.12.2004, 16:19:29
Benutzerbild von Matt
Matt Matt ist offline
Member
 
Registriert seit: Mar 2002
Ort: Port 80, localhost-city, 127/0/0/1
Beiträge: 878
naja also ich würde es in dem fall mit textdateien machen:
jeder eintrag eine textdatei, die folgendes enthält:

Code:
<?
$members[]["lastname"]="nachname";
$members[]["firstname"]="vorname"; 
?>
dann alle dateien includen und man hat in dem members array den gesamten datenbankinhalt.. es ist jedenfalls noch weniger umständlich als die ursprüngliche lösung :D

aber mal ernsthaft: natürlich ist es mit einer datenbank viel bequemer und einfacher (man muss sich halt das ganze etwas abstrahieren, aber das ist es schon)

lg matt
Mit Zitat antworten
  #6  
Alt 27.12.2004, 16:31:20
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
Naja, sagen wir mal so: Verglichen mit der jetztigen Version wäre eine Lösung mit Textdateien schon sehr gut ;-)
Mit Zitat antworten
  #7  
Alt 27.12.2004, 16:55:12
Benutzerbild von Jürg
Jürg Jürg ist offline
Junior Member
 
Registriert seit: May 2003
Ort: CH Zürich
Alter: 66
Beiträge: 352
Jürg eine Nachricht über Skype™ schicken
Die Frage ist nun wie weiter?
Es ist klar, das Ganze MUSS geändert werden.
Ich würde von Hand jeden Datensatz wie folgt nachbearbeiten.
In den bestehenden Zellen die Reihenfolge so ändern dass da steht:
Name; Vorname; Str; Nr; PLZ; Ort
Immer auch ";" einfügen. Damit haben wir eine gewisse normalisierung und die bestehende Tabelle sollte weiterverwendet werden können.
Wenn alle Sätze (nach einer Ewigkeit!) überarbeitet sind, eine neue Tabelle anlegen und die Alte mit csv hineinkopieren.
__________________
www.zudila.ch
Mit Zitat antworten
  #8  
Alt 27.12.2004, 16:58:42
Benutzerbild von Matt
Matt Matt ist offline
Member
 
Registriert seit: Mar 2002
Ort: Port 80, localhost-city, 127/0/0/1
Beiträge: 878
hm nunja, ich hab ne idee, die etwas arbeit spart und zwar:
man liest alle datensätze aus, macht einen "Explode" auf die kontaktdaten und sieht, ob das resultierende Array die Länge von 6 hat (Vorname, Nachname, Straße, Hausnr., Plz, Ort)
wenn das der fall ist, kann man davon ausgehen, dass es eine "normale" addresse ist und sie direkt portieren udn den alten datensatz löschen.
Dannach muss man wohl oder übel mit der Hand durchgehen... :/
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt