Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
2 Werte in einem Datenbankfeld [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
2 Werte in einem Datenbankfeld


 
hieger
03-04-2007, 07:00 
 
Hallo Leute,

ich hab schon wieder mal eine Frage an Euch.

Ich habe eine User-Tabelle. In dieser werden Name, Adresse etc. erfasst. Unter anderem hat jeder User einen Tarif. Da es verschiedene Tarife gibt hab ich eine eigene Tabelle gemacht (dort stehen auch noch weitere Informationen drinnen) und die id dieser Tabelle schreib ich in den User rein. Das funktioniert auch super.

Jetzt kann jeder User aber noch bestimmte Zusatzpakete auswählen. 99% aller User haben nur ein Paket. Das ist auch kein Problem für mich. Aber was mache ich wenn jemand z.b. 2 oder 3 Pakete bucht.

Soll ich in dieses Feld die Werte z.B. 1;4;5; eintragen? Dann ergeben sich 2 Fragen für mich?

Wie kann ich diesen "Block (1;4;5;)" zerlegen und wie kann die select Abfrage dazu lauten?

Danke
Markus

 
basis-web
03-04-2007, 08:03 
 
Packe deine Werte in ein Array, welches du mit serialize() in die DB schreibst. Nach dem Auslesen wandelt unserialize() den String wieder in ein Array um.

Gruß
basisweb

 
jonas01
03-04-2007, 08:45 
 
Hatte vor einigen Jahren das gleiche Problem wie Du...

Ich habe das so gemacht:
Es gab bei mir 7 Tarife.
Also gabe es in der Tabelle "User" eine Spalte "Tarife" (Varchar).
Diese Spalte hatte diesen Wert wenn kein Tarif gewählt war:
0000000

War Tarif "3" gewählt:
0010000

War Tarif 5 und 7 Gewählt:
0000101

Ich habe das damals nicht anders hinbekommen, arbeite aber heute immer noch damit.
Selbst Abfragen wie "Zeige mir alle User die Tarif 4 haben" laufen sehr schnell.


Heute würde ich aber (der Übersichtlichkeit wegen..) es entweder wie basis-web machen, oder eine extra Tabelle "tarife" mit den Spalten "id" , "user_id" und "tarif" aufsetzen und die dann bei Bedarf "Joinen".

 
Markus_30
03-04-2007, 09:00 
 
Ich würde mit einer Bindegliedtabelle arbeiten.
Tabellen:

user
tarife
user_tarife

In der Tabelle user_tarife käme dann die Userid in ein Feld und Tarifid in ein weiteres. So kannst du unbegrenzt Tarif an jeden Benutzer knüpfen und alles mit einer einfachen Datenbankanfrage auslesen und der Programmieraufwand würde sich minimieren.

 
combie
03-04-2007, 12:47 
 
Soll ich in dieses Feld die Werte z.B. 1;4;5; eintragen?
Definitiv nein!
Das wiederspricht den Normalisierungs Regeln
http://ffm.junetz.de/members/reeg/DSP/node7.html#SECTION03340000000000000000

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:37 Uhr.