php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.01.2007, 19:13  
Erfahrener Benutzer
 
Registriert seit: 15.10.2005
Beiträge: 231
Dilandau kann nur auf Besserung hoffen
Standard regex um nummer in liste zu finden?

ich habe ein tabellenfeld, dass mehrere mit komma getrennte zahlen zum inhalt hat:

postleitzahlen: 81379, 84525, 82522, 87136


jetzt möchte ich alle datensätze finden, in denen unter "postleitzahlen" eine bestimmte gelistet ist.

wenn ich mit LIKE suche, wuerde es aber auch einen treffer geben, wenn ich zb nur nach 379 suche (weil das ein teil der ersten zahl ist). man muesste also irgendwie die kommas mit abfragen um sicherzustellen, dass die ganze zahl verglichen wird. zb so:

REGEX '(,|^|\s)$zahl(,|$|\s)'

ich weis nicht ob meine syntax stimmt. es ist die syntax vom php befehl ereg. in einem sql query sollte die syntax aber vielleicht eine andere sein?

ich weis ausserdem nicht, ob ich in der mitte richtig auf die variable $zahl zugreife, das soll die gesuchte postleitzahl sein.

schonmal vielen dank fuer kosntruktive antworten. danke! andreas
__________________
mobilis in mobili
Dilandau ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.01.2007, 19:25  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Erste Gegenfrage: Warum mehrere Postleitzahlen in einer Tabellspalte?
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline   Mit Zitat antworten
Alt 08.01.2007, 19:32  
Erfahrener Benutzer
 
Registriert seit: 15.10.2005
Beiträge: 231
Dilandau kann nur auf Besserung hoffen
Standard

das ist diskutabel und eine gute frage. ich koennte eine extra tabelle machen in der jeweils eine entität mit einer postleitzahl verknuepft ist und in es mehrer zeilen mit der selben entitaet geben darf. das hatte den gleichen informationsgehalt. aber im moment wuesste ich nicht, wie ich fuer diesen sonderfall einen simplen editor schreiben kann, daher die 'abkuerzung' ueber die kommaliste.
__________________
mobilis in mobili
Dilandau ist offline   Mit Zitat antworten
Alt 08.01.2007, 22:21  
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

der simpelste editor wäre dafür die gleiche eingabe wie jetzt zu verwenden. beim Auslesen die Nummer per KommaSpace zusammenführen und beim Einlesen per explode(), besser noch preg_split() trennen.
nikosch ist offline   Mit Zitat antworten
Alt 08.01.2007, 22:39  
Erfahrener Benutzer
 
Registriert seit: 15.10.2005
Beiträge: 231
Dilandau kann nur auf Besserung hoffen
Standard

angenommen ich verwalte die daten in einer extra tabelle mit zwei spalten:

person postleitzahl

daraus kann ich vor dem editieren alle personen mit selber postleitzahl suchen und einen string aus ihnen erstellen. wenn ich aber zb beim editieren einen wert aus der kommas zeile lösche und dann die werte zurueck einlese, klappt das nur, wenn ich vor dem zurueck-einlesen alle datensätze die ich vorher ausgelesen habe lösche, oder?
__________________
mobilis in mobili
Dilandau ist offline   Mit Zitat antworten
Alt 08.01.2007, 22:41  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ohje, du verstößt gleich schon gegen die 1 (!) Normalform:
Zitat:
Erste Normalform (1NF)
Jedes Attribut der Relation muss einen atomaren Wertebereich haben.
http://de.wikipedia.org/wiki/Normali...28Datenbank%29

Du musst eben eine Verknüpfungstabelle einfügen, wobei diese Verknüpfungstabelle natürlich auch gleich die PLZ als 2. ID-Spalte besitzen könnte:

Code:
haendler
id | name

einzugsgebiet
haendler_id | postcode
Zergling-new ist offline   Mit Zitat antworten
Alt 08.01.2007, 22:53  
Erfahrener Benutzer
 
Registriert seit: 15.10.2005
Beiträge: 231
Dilandau kann nur auf Besserung hoffen
Standard

danke fuer den link! also... atom schön und gut aber ich habe einen inneren schweinehund. ich hoffe der ist lernfaehig! trotzdem interessiert mich auch die regex loesung.
__________________
mobilis in mobili
Dilandau ist offline   Mit Zitat antworten
Alt 08.01.2007, 23:07  
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

nur um deinen Wissenshunger zu stillen (nicht aber deien inneren Schweinhund anzufüttern):
Code:
'SELECT Numbers REGEXP "[^0-9]' . $zahl . '[^0-9]"'
bzw.
Code:
'SELECT Numbers REGEXP "[^0-9]' . $zahl .'"'
müßte eigentlich funktionieren

in deinem ausdruck fehlt auf jeden fall noch ein \s für das leerzeichen hinter dem komma, wenn die einzelnen Nummern wie oben mit Komma und LZ separiert sind.

[gewissen] Du solltest es trotzdem ordentlich machen [/gewissen]
nikosch ist offline   Mit Zitat antworten
Alt 08.01.2007, 23:08  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Bei der kleinen Anpassung an die Datenbank helfe ich dir gerne.
Fang bloß nicht jetzt schon an mit dem Lernen aufzuhören
Zergling-new ist offline   Mit Zitat antworten
Alt 08.01.2007, 23:32  
Erfahrener Benutzer
 
Registriert seit: 15.10.2005
Beiträge: 231
Dilandau kann nur auf Besserung hoffen
Standard

@nikosch77, was ist der (effektive) unterschied zwischen deinem ersten und zweiten beispiel?

@zergling, ok. wenn ich in den edit-modus wechsele, wird aus der neu zu machenden tabelle "postleitzahl person" (eine postleitzahl kann mehrere personen haben) der string mit den kommas erstellt. den kann ich nun verändern. wenn ich auf ok klicke, wird der string wieder zerpflueckt und was jetzt? wie trage ich die veränderungen zurueck in die tabelle? mir SCHEINT, am einfachsten ist es, nach der erstellung des strings mit den kommas alle betroffenen datensaetze zu loeschen und hernach wieder neue zu erzeugen?
__________________
mobilis in mobili
Dilandau 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
Array sortieren mit regex Lupi PHP Tipps 2008 3 21.07.2008 15:17
Regex: Auslesen der Meta-Tags einer Webseite Sucheingrenzung pepe24 PHP Tipps 2008 12 31.05.2008 15:41
2 Regex in PHP kompatible Syntax übersetzen NoiZy PHP-Fortgeschrittene 6 07.04.2008 09:04
Regex Link Problem Broadcast PHP Tipps 2008 2 29.02.2008 16:30
[gelöst :D ] regex tuts nur einmal pro zeile notyyy PHP Tipps 2008 17 24.09.2007 15:40
Javascript Select liste verdoppeln dsmcg HTML, Usability und Barrierefreiheit 8 19.10.2006 16:56
habe ein paar fragen zu REGEX imported_kremser PHP Tipps 2006 11 31.01.2006 15:30
forlaufende nummer in mysql db djrace PHP Tipps 2006 11 14.01.2006 19:09
RegEx findet Stringvorkommen nicht PHP Tipps 2007 6 08.12.2005 21:52
build nummer des bs ermitteln ... nur bei microsoft's bs!!! PHP Tipps 2005-2 2 24.07.2005 15:59
Php liste per E-Mail? PHP Tipps 2005-2 2 21.07.2005 09:43
Dropdown-Menü nach klick in Liste füllen PHP Tipps 2005-2 0 13.06.2005 09:33
[Erledigt] Top 10 Liste Datenbanken 9 20.04.2005 22:32
Regex für attribute in quelltexten robo47 PHP Tipps 2005 6 27.01.2005 18:29
[Erledigt] Liste in Textarea einfügen HTML, Usability und Barrierefreiheit 0 03.01.2005 19:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/datenbanken/43221-regex-um-nummer-liste-zu-finden.html, regular expression zahl in komma getrennter liste, kommaseparierte liste mit regular expression trennen, komma liste durchsuchen mit php, regex plz php, regex nummer finden, php simple regex comma, string postleitzahl regular expression php, regex kommata abfragen, regex eine zahl suchen, regex java komma seperiert, regular expressions kommagetrennt, php regex eine zahl, php regex für ganze zahl, regex zahlen suchen, regular expression ganze zahl, regex um liste zu erzeugen php, komma separierte liste reg ex, regex nummer und komma, regex alle ziffern nach einem komma

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:44 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.