if ( ähnlich)

melmager

Erfahrenes Mitglied
naja toppic klingt fast wie ich brauche ein vielleicht :-)

ab zum ernst .. ich habe eine nette datenbank mit adressen und darin telefonnummern .. so jetzt habe ich mir überlegt ich bekomme ja von der isdn karte ja die telefonmummer zb. 03012345678 wenn mich einer anruft .. jetzt kam mir die idee mir anzeigen zu lassen wer ruft an..
in meiner datenbank ist aber die telnummer
so gespeichert 030/12345678 (wie es sichgehört) .. nur wie suche ich ??
die vorwahl kann ja von 3 stellig bis 5 stellig sein also hilft mir ein einfügen von / an einer festen stelle nicht weiter
einer ne idee ??
 
hmn,du könntest ja jeden eintrag aus der datenbank auslesen und vergleichen
vor dem vergleichen nimmst du einfach str_replace() und entfernst den /
keine elegante lösung müsste aber gehen
 
Hallo,
du solltest mal das Design deiner Datenbank überdenken.
Ich hätte z.B. die Vorwahlen in eine eigene Tabelle eigefügt ;) Stichwort: Relationen
Gruß Börni
P.S. Dies spart nicht nur Speicherplatz sonder macht die weitere Verarbeitung um einiges leichter...
 
hmm,

@Börni
ich sag es nicht gerne aber das ist schwachsinn, denn was hast du denn davon wenn du die Vorwahl in einer Liste hast und die Numemr in einer anderen, da die Nummer durchaus öfter vorkommen kann musst udu extra eine Spalte machen in beiden Tabellen um zu erkennen welche Nummer zur welcher vorwahl gehört !

Wie auch immer, ich würd das ding auslesen und einfach das / str_replacen, dann hast die nummer raus.
 
Wenn du die Vorwahl und die Nummer getrennt in zwei Feldern speicherst, kannst du dann bequem nach der Nummer suchen.

SELECT * FROM telbook WHERE CONCAT(vorwahl,nummer)=anruf

du muesstest die syntax ueberpruefen, hab schon lange kein SQL code machen muessen ;)
 
Hast Du's schon mit like probiert?
select * from $tabelle where telnummer like '%$rufnummer';

Das % steht für beliebig viele variable Zeichen.
 
Re: hmm,

Original geschrieben von JoelH
@Börni
ich sag es nicht gerne aber das ist schwachsinn, denn was hast du denn davon wenn du die Vorwahl in einer Liste hast und die Numemr in einer anderen, da die Nummer durchaus öfter vorkommen kann musst udu extra eine Spalte machen in beiden Tabellen um zu erkennen welche Nummer zur welcher vorwahl gehört !

Wie auch immer, ich würd das ding auslesen und einfach das / str_replacen, dann hast die nummer raus.

Nun wird das aber bei allen großen Datenbanken so geamcht...
 
hmm,

nee wird es nicht, es wird in zwei verschiedene Spalten einer Tabelle geschrieben und nicht in zwei verschiedene Tabellen ;) Das ist ein himmelweiter unterschied, denn zwei Spalten eines Datensatzes hängen voneinander ab und können auch einfach so unterschieden werden wenn auch einmal eine Spalte 2 gleiche Werte enthält aber dafür die andere Spalte verschieden ist, aber zwei Tabellen ist eine zuviel !
 
Ja schon aber dann tauchen, wie du bereits gesagt hast, Werte doppelt auf. Und bei großen Projekten bedeutet das Speicherverlust. So ist es doch sinnvoller einfach jeder neuen Vorwahl eine ID zu geben, und dann nur die ID zu speichern. Die restliche Telefonnumer kommt natrülich in die "Haupttabelle" in der auch der Name seteht.
Gruß Boerni
P.S. Noch deutlicher wird es wenn man es mit Landesvorwahlen macht.
 
@Börni:
wenn du es mit zwei tabellen machst, hast du garantiert speicherverlust, denn du ersetzt einfachen int-wert durch drei int-werte.
Da ID+Vorwahl in eingener Tabelle sind zwei ints und die ID als fremdschluessel in der wirklichen tabelle ist noch mal ein int, macht zusammen drei, und das gleiche koenntest du auch mit nur einem int erreichen.
Ausserdem muss du zusaetzlich einen Lookup (JOIN)-abfrage machen,
kostet wieder zeit.
Also ganz ineffizient.

Deine Loesung eignet sich nur dann, wenn die daten die doppelt vorkommen, mehr platz brauchen als zwei oder drei ints, erst dann rechnet es sich.
 
Zurück