mysql: mehrere daten in einem Feld
- leopittoni
- Mitglied
- Beiträge: 1162
- Registriert: 26.04.2004 20:17
mysql: mehrere daten in einem Feld
Hallo
Wie kann ich in einer DB im selben Feld mehrere Daten speichern?
Ich habe also eine Tabelle mit einem Eintrag "daten" und darin möchte ich die verschiedenen Daten eintragen. Nun, wie geht das? mit Komma trennen, oder wie? Wie muss die DB-tabelle eingestellt sein? und die kann man dann mit PHP diese Daten filtern/abfragen?
Danke, Léo
Wie kann ich in einer DB im selben Feld mehrere Daten speichern?
Ich habe also eine Tabelle mit einem Eintrag "daten" und darin möchte ich die verschiedenen Daten eintragen. Nun, wie geht das? mit Komma trennen, oder wie? Wie muss die DB-tabelle eingestellt sein? und die kann man dann mit PHP diese Daten filtern/abfragen?
Danke, Léo
- Jan500
- Ehemaliges Teammitglied
- Beiträge: 4199
- Registriert: 01.03.2003 21:32
- Wohnort: Hamburg
- Kontaktdaten:
hi
naja machbar ist das
du musst das dann als string (in der db varchar, text o.ä einstellen) speichern.
wie du da trennst ist egal, nur musst du nach em selben verfahren nachher das wieder "filtern" also nen regexp
zb das er nach dem , immer trennt...
aber eigentlich ist das nicht sinn einer db...was willst du denn genau machen?
ich würde jedes einzeln in diedb speichern..
Jan
naja machbar ist das
du musst das dann als string (in der db varchar, text o.ä einstellen) speichern.
wie du da trennst ist egal, nur musst du nach em selben verfahren nachher das wieder "filtern" also nen regexp
zb das er nach dem , immer trennt...
aber eigentlich ist das nicht sinn einer db...was willst du denn genau machen?
ich würde jedes einzeln in diedb speichern..
Jan
"Life begins at 40 Knots...!" 
kein (kostenlosen) Support per pn, mail, icq usw. | Kostenlosen Support gibt es hier im Forum!

kein (kostenlosen) Support per pn, mail, icq usw. | Kostenlosen Support gibt es hier im Forum!
- leopittoni
- Mitglied
- Beiträge: 1162
- Registriert: 26.04.2004 20:17
Ich habe für jede Person in der DB einen Eintrag.
Diese Personen haben an verschiedenen Tägen einen Einsatz, also ein zweites DB Feld mit den Daten, die zur Person gehören.
Bsb:
Person | Daten
person1 11.02.2006,05.07.2007
person2 08.06.2007
usw.
Nun will ich ausgeben, wer in der kommenden Woche "Dienst" hat.
Eine bessere Idee für mein Problem?
Danke, Léo
Diese Personen haben an verschiedenen Tägen einen Einsatz, also ein zweites DB Feld mit den Daten, die zur Person gehören.
Bsb:
Person | Daten
person1 11.02.2006,05.07.2007
person2 08.06.2007
usw.
Nun will ich ausgeben, wer in der kommenden Woche "Dienst" hat.
Eine bessere Idee für mein Problem?
Danke, Léo
- Jan500
- Ehemaliges Teammitglied
- Beiträge: 4199
- Registriert: 01.03.2003 21:32
- Wohnort: Hamburg
- Kontaktdaten:
ja...
du erstellst eine nee tabelle "einsatz"
die beinhaltet ID, person, einsatz
so erstellst du für jedes datum einen neuen Eintrag und kannst so auch filtern (select * FROM einsatz where person = $user_id)
Jan
du erstellst eine nee tabelle "einsatz"
die beinhaltet ID, person, einsatz
so erstellst du für jedes datum einen neuen Eintrag und kannst so auch filtern (select * FROM einsatz where person = $user_id)
Jan
"Life begins at 40 Knots...!" 
kein (kostenlosen) Support per pn, mail, icq usw. | Kostenlosen Support gibt es hier im Forum!

kein (kostenlosen) Support per pn, mail, icq usw. | Kostenlosen Support gibt es hier im Forum!
- leopittoni
- Mitglied
- Beiträge: 1162
- Registriert: 26.04.2004 20:17
ok, dann mach ich das so...
Hast Du vielleicht auch eine Idee, wie ich herausfinden könnte, wer "in dieser" Woche Dienst hat?
habs mal so probiert:
Die Einsätze sind immer Samstags und Sonntags.
Habes also gedacht: Wenn der Wochentag kleines ist als 6, also max. Freitag, zeigt es den Einsatz an, der Datum + 1,2,3,4,5,6 Tage.
Wenn es Samstag oder Sonntag ist, zeigt es Einsätze von Datum + Datum+1Tag.
Ist das eine Fehlüberlegung? Bis jetzt funktionierts jedenaflls nicht...
Léo
Hast Du vielleicht auch eine Idee, wie ich herausfinden könnte, wer "in dieser" Woche Dienst hat?
habs mal so probiert:
Code: Alles auswählen
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$wochentag = date("w",$timestamp);
echo $datum;
echo $wochentag;
if ($wochentag < 6);
{
$einsatz = ('$datum' || '$datum + 1' || '$datum + 2' || '$datum + 3' || '$datum + 4' || '$datum + 5' || '$datum + 6');
}
else
{
$einsatz = ('$datum' || '$datum + 1');
}
Habes also gedacht: Wenn der Wochentag kleines ist als 6, also max. Freitag, zeigt es den Einsatz an, der Datum + 1,2,3,4,5,6 Tage.
Wenn es Samstag oder Sonntag ist, zeigt es Einsätze von Datum + Datum+1Tag.
Ist das eine Fehlüberlegung? Bis jetzt funktionierts jedenaflls nicht...
Léo
Na dann mach es doch besser nur mit ID und Datum des Einsatzes.
1. User-Tabelle: UserID | Person (und weitere Benutzerdaten)
2. Einsatz-Tabelle: UserID | Datum
$gestern musst Du natürlich noch ausrechnen.
1. User-Tabelle: UserID | Person (und weitere Benutzerdaten)
2. Einsatz-Tabelle: UserID | Datum
Code: Alles auswählen
SELECT u.UserID, u.Person, e.Datum FROM User-Tabelle u INNER JOIN Einsatz-Tabelle e
WHERE u.UserID = e.UserID
AND e.Datum > $gestern
ORDER BY e.Datum ASC;
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
- leopittoni
- Mitglied
- Beiträge: 1162
- Registriert: 26.04.2004 20:17
Hä? Da komm ich leider nicht mit...
Übrigens: an einem Datum wären mehrere "personen" eingetragen. Das heisst es müssen fast in ein Feld mehrer.
Wie ist den das in phpbb? Da müssen ja auch irgendwie verschiedene Mitglieder in eine Gruppe, bzw. mehrere Gruppen für ein Mitglied?
Léo
PS: in der Zwischenzeit hab ichs mal so probiert... futnkioniert aber nicht richtig... Wer kann mir helfen? Danke!
Übrigens: an einem Datum wären mehrere "personen" eingetragen. Das heisst es müssen fast in ein Feld mehrer.
Wie ist den das in phpbb? Da müssen ja auch irgendwie verschiedene Mitglieder in eine Gruppe, bzw. mehrere Gruppen für ein Mitglied?
Léo
PS: in der Zwischenzeit hab ichs mal so probiert... futnkioniert aber nicht richtig... Wer kann mir helfen? Danke!
Code: Alles auswählen
<?php
$timestamp = time();
$wochentag = date("w",$timestamp);
$tag = date("d",$timestamp);
$monat = date("m",$timestamp);
$jahr = date("Y",$timestamp);
if ($wochentag == 6 || 7);
{
$einsatz1 = ($tag);
$einsatz2 = ($tag+1);
}
if ($wochentag != 6 || 7);
{
$einsatz1 = ($tag+1);
$einsatz2 = ($tag+2);
$einsatz3 = ($tag+3);
$einsatz4 = ($tag+4);
$einsatz5 = ($tag+5);
$einsatz6 = ($tag+6);
}
$db = mysql_connect("localhost","dbminiadmin","passwort");
mysql_select_db("mini-shop");
$miniid = "SELECT customers_id
FROM customers WHERE einsatz = ($einsatz1 || $einsatz2 || $einsatz3 || $einsatz4 || $einsatz5 || $einsatz6)&&!=''";
$samstag = "SELECT customers_firstname, customers_lastname
FROM customers ORDER BY customers_lastname ASC WHERE customer_id = $miniid";
Na gut, dann mach ich das mal an einem konkreten Beispiel:leopittoni hat geschrieben:...Übrigens: an einem Datum wären mehrere "personen" eingetragen. Das heisst es müssen fast in ein Feld mehrer....
Die Tabellen:
1. User-Tabelle: UserID | Person (und weitere Benutzerdaten)
2. Einsatz-Tabelle: UserID | Datum
(Das nach dem Doppelpunkt ( : ) sind die Spalten.)
Daten:
User-Tabelle:
UserID | Person
1 | Knut
2 | Fred
3 | Rita
Einsatz-Tabelle:
UserID | Datum
1 | Datum_1
2 | Datum_1
2 | Datum_2
3 | Datum_3
3 | Datum_1
3 | Datum_2
Dienste sind also wie folgt:
Datum_1: Knut, Fred, Rita
Datum_2: Fred, Rita
Datum_3: Rita
Probier mal -->
Code: Alles auswählen
CREATE TABLE `einsatz` (
`userid` tinyint(4) NOT NULL,
`datum` varchar(20) NOT NULL
);
INSERT INTO `einsatz` (`userid`, `datum`) VALUES (1, 'datum_1');
INSERT INTO `einsatz` (`userid`, `datum`) VALUES (2, 'datum_1');
INSERT INTO `einsatz` (`userid`, `datum`) VALUES (3, 'datum_1');
INSERT INTO `einsatz` (`userid`, `datum`) VALUES (3, 'datum_3');
INSERT INTO `einsatz` (`userid`, `datum`) VALUES (2, 'datum_2');
INSERT INTO `einsatz` (`userid`, `datum`) VALUES (3, 'datum_2');
CREATE TABLE `user` (
`userid` tinyint(4) NOT NULL,
`name` varchar(50) NOT NULL
);
INSERT INTO `user` (`userid`, `name`) VALUES (1, 'Knut');
INSERT INTO `user` (`userid`, `name`) VALUES (2, 'Fred');
INSERT INTO `user` (`userid`, `name`) VALUES (3, 'Rita');
Code: Alles auswählen
SELECT e.datum, u.name
FROM user u
INNER JOIN einsatz e
WHERE u.userid = e.userid
ORDER BY e.datum ASC
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
- leopittoni
- Mitglied
- Beiträge: 1162
- Registriert: 26.04.2004 20:17
Ok, vielen Dank für diese Erläuterung. Werde es also wohl so machen.
So weit bin ich nun gekommen...
Der letzte Block
funktionier nicht... Wie kann man richtig die Variabeln verbinden, also $variabel1 (ein Punkt dazwischen) angehängt daran $variabel2 usw?
Danke! Léo
So weit bin ich nun gekommen...
Code: Alles auswählen
$timestamp = time();
$wochentag = date("w",$timestamp);
$tag = date("d",$timestamp);
$monat = date("m",$timestamp);
$monatstage = date("t",$timestamp);
$jahr = date("Y",$timestamp);
$jahrestag = date("z",$timestamp);
$nr1 = (6-$wochentag);
$nr2 = (7-$wochentag);
$datumsa = ($tag+$nr1);
$datumso = ($tag+$nr2);
$jahrsa = ($jahrestag+$nr1);
$jahrso = ($jahrestag+$nr2);
if ($datumsa > $monatstage)
{
$monatsa = ($monat+1);
}
if ($datumso > $monatstage)
{
$monatso = ($monat+1);
}
if ($jahrsa > "365")
{
$jahrsa = ($jahr+1);
}
if ($jahrso > "365")
{
$jahrso = ($jahr+1);
}
$einsatzsa = ($datumsa'.'$monat'.'$jahr);
$einsatzso = ($datumso'.'$monat'.'$jahr);
Code: Alles auswählen
$einsatzsa = ($datumsa'.'$monat'.'$jahr);
$einsatzso = ($datumso'.'$monat'.'$jahr);
Danke! Léo