Position des letzten Zeichens in einem String finden
xpfreund
- datenbank
Hallo,
Meine Datenbank mit einem fertigen Beispieleintrag sieht so aus:
ID von an event note projekt erstellt
11 9 9 Himmelfahrt 0 20070502095638
datum anfang ende ressource ort contact note2 div1
2007-05-17 0700 1600 NULL NULL 0 NULL
div2 remind visi sync1 sync2
NULL 0 20070502095638 20070502095638
ID ist die Nummer des Kalendereintrags, von und an bezeichnen Usernummern, anfang ,ende, projekt, contact sind immer gleich, note und note2 haben keinen Inhalt
Jetzt habe ich zwei Strings, die einmal das Datum und dann noch das event enthalten, also hier Himmelfahrt. Datum hat schon das Endformat.
$datum = "2007-05-17"
$event = "Himmelfahrt"
Wie erstelle ich jetzt mit PHP einen Eintrag des obigen Formates in der Tabelle "termine"?
gruß aus Hosena
Berichtigung
Steht im Thema
Ahoi xpfreund,
Wie erstelle ich jetzt mit PHP einen Eintrag des obigen Formates in der Tabelle "termine"?
Du wilslt wissen wie du aus:
$datum = "2007-05-17"
den timestamp
20070502095638
rausbekommst?
MfG
Hallo,
Du wilslt wissen wie du aus:
$datum = "2007-05-17"
den timestamp
20070502095638
rausbekommst?
Nein, das weiß ich selbst.
Ich möchte einen Datenbankeintrag mit den im Beispiel angegebenen Inhalten mit PHP eintragen. $datum und $event sind die Variablen, deren Inhalt an den entsprechenden Spalten eingefügt werden sollen. Die anderen Daten sind konstant. Die erste Zeile im Datenbankbsp. zeigt die Spaltenüberschriften und die zweite Zeile den Inhalt, die Dritte wieder die Spaltenüberschriften...
gruß aus Hosena
Hallo,
Du wilslt wissen wie du aus:
$datum = "2007-05-17"
den timestamp
20070502095638
rausbekommst?
Nicht ganz. Lieber wäre mir den timestamp von jetzt zu bekommen. Also z.B. 20070502132957. Das mit dem Hinzufügen klappt schon. Außerdem wäre gut zu wissen, welche IDs einer Tabelle users existent sind?
Ein Bsp: ID name
1 irgendwer
5 irgendwas
Ich möchte nämlich dieses Hinzufügen in einer Schleife machen, wo bei jedem neuen Durchlauf die nächste existierende ID (manchmal kommt nach der 1 eben nicht die 2, sondern erst die 5) in das Feld "an" aufgenommen wird.
gruß aus Hosena
Ahoi xpfreund,
Nicht ganz. Lieber wäre mir den timestamp von jetzt zu bekommen.
http://de3.php.net/manual/de/function.time.php
Ich möchte nämlich dieses Hinzufügen in einer Schleife machen, wo bei jedem neuen Durchlauf die nächste existierende ID (manchmal kommt nach der 1 eben nicht die 2, sondern erst die 5) in das Feld "an" aufgenommen wird.
mach die spalte (id) einfach zum Primary Key mit auto_increment() und gib beim INSERT keinen Wert für diese Spalte an, schon kümmert sich die Datenbank darum.
MfG
Hallo,
Ich möchte nämlich dieses Hinzufügen in einer Schleife machen, wo bei jedem neuen Durchlauf die nächste existierende ID (manchmal kommt nach der 1 eben nicht die 2, sondern erst die 5) in das Feld "an" aufgenommen wird.
mach die spalte (id) einfach zum Primary Key mit auto_increment() und gib beim INSERT keinen Wert für diese Spalte an, schon kümmert sich die Datenbank darum.
So ist das schon. Vorher: von 1 bis 5 alle
Aktion: nr. 2 gelöscht
Nachher: 1 und 3 bis 5
D.h. wenn ich eins lösche, werden die IDs nicht neu verteilt. Deswegen muss ich halt abfragen, welche IDs vorhanden sind, um dann beim Hinzufügen zur Tabelle "termine" in der Spalte "an" nur die existierenden IDs bei der Schleife zu berücksichtigen.
gruß aus Hosena
Ahoi xpfreund,
----------Tabelle-----------------------------------------------------------------------------------------------------------------------------------------
|ID|von|an| event |note|projekt| erstellt | datum |anfang|ende|ressource|ort|contact|note2|div1|div2|remind|visi| sync1 | sync2 |
----------------------------------------------------------------------------------------------------------------------------------------------------------
|11| 9 | 9|Himmelfahrt| 0 | |20070502095638|2007-05-17| 0700 |1600| NULL | | NULL | 0 |NULL|NULL| 0 | |20070502095638|20070502095638|
So sieht deine Tabelle aus, richtig?
von und an sind UserIDs, richtig?
Ich bin grad etwas durcheinander und versteh grad nichtmehr ganz wo dein problem liegt
MfG
Hallo,
----------Tabelle-----------------------------------------------------------------------------------------------------------------------------------------
|ID|von|an| event |note|projekt| erstellt | datum |anfang|ende|ressource|ort|contact|note2|div1|div2|remind|visi| sync1 | sync2 |
|11| 9 | 9|Himmelfahrt| 0 | |20070502095638|2007-05-17| 0700 |1600| NULL | | NULL | 0 |NULL|NULL| 0 | |20070502095638|20070502095638|
So sieht deine Tabelle aus, richtig?
So ist es.
von und an sind UserIDs, richtig?
genau
Jetzt erstelle ich einen neuen Eintrag per Insert. "von" kommt dabei aus der Variable user_id, "nach" soll allerdings während des Schleifenablaufs immer eins höher gezählt werden. Das heißt: Erst wird ein event an userid 1 in die Tabelle eingefügt. Danach würde, wenn userid 2 existieren würde, ein event für diesen user erstellt und sonst bei 3 wieder, so lange bis die letzte existierende ID abgearbeitet wurde. D.h. wenn keine ID mehr vorhanden ist, soll nicht mehr weiter gezählt werden.
gruß aus Hosena
Ahoi xpfreund,
aha, na wie wäre es dann mit einem "SELECT user_id FROM user_tab" statement und solang du noch einträge hast machst du neue zu der entsprechenden User-ID.
Hoffe hab mich verständlich ausgedrückt.
MfG
Hallo,
Ahoi xpfreund,
aha, na wie wäre es dann mit einem "SELECT user_id FROM user_tab" statement und solang du noch einträge hast machst du neue zu der entsprechenden User-ID.
Wie meinst du das genau?
gruß aus Hosena
Ahoi xpfreund,
Wie meinst du das genau?
genau so wie du es in deinem andern post "vorgeschlagen hast
$res = mysql_query ("SELECT user_id FROM user_tab");
while($user_data = mysql_fetch_row(res))
{
mysql_query ("INSERT INTO event_tab(an)VALUE($user_data[user_id])");
}
So mehr oder weniger. lang lang ists her als ich sowas gemacht hab
http://www.php.net/manual/de/
http://de3.php.net/manual/de/ref.mysql.php
...
MfG
Hallo
$res = mysql_query ("SELECT user_id FROM user_tab");
while($user_data = mysql_fetch_row(res))
{
mysql_query ("INSERT INTO event_tab(an)VALUE($user_data[user_id])");
}So mehr oder weniger. lang lang ists her als ich sowas gemacht hab
das ist überhaupt keine gute Idee. Nein, überhaupt nicht. Wie ich bereits
schrieb, gibt es INSERT ... SELECT.
INSERT INTO event_tab
(an)
SELECT user_id FROM user_tab
erledigt das viel eleganter. Mit Sicherheit lässt sich Hugos Anforderung
problemlos integrieren.
Freundliche Grüße
Vinzenz
Hallo,
Wie soll ich das
<code lang=sql>
INSERT INTO event_tab
(an)
SELECT user_id FROM user_tab[/code]
</code>
erledigt das viel eleganter. Mit Sicherheit lässt sich Hugos Anforderung
problemlos integrieren.
mit dem
<code lang=sql>
INSERT INTO termine (von, an, event, note, projekt, erstellt, datum, anfang, ende, contact, note2, remind, visi, sync1, sync2) VALUES ('$user_ID','$benutzer','$event',' ','0','$zeit','$datum','$anfang','$ende','0',' ','0',' ','$zeit','$zeit' )";
</code>
verbinden?
gruß aus Hosena
Hallo
Wie soll ich das
INSERT INTO event_tab
(an)
SELECT user_id FROM user_tab
> > erledigt das viel eleganter. Mit Sicherheit lässt sich Hugos Anforderung
> > problemlos integrieren.
> mit dem
> INSERT INTO termine (von, an, event, note, projekt, erstellt, datum, anfang, ende, contact, note2, remind, visi, sync1, sync2) VALUES ('$user\_ID','$benutzer','$event',' ','0','$zeit','$datum','$anfang','$ende','0',' ','0',' ','$zeit','$zeit' )";
Ganz einfach, wie eigentlich überall:
1\. Eliminiere sämtlichen PHP-Müll.
2\. Entwickle zuerst statisch das SELECT-Statement, das Dir das gewünschte liefert.
3\. Erweitere dies um INSERT
4\. Baue das SQL-Statement dynamisch mit PHP zusammen.
Zu 1)
In $user\_id steht der konstante Wert 11, d.h. von wem die Nachricht stammt.
In $benutzer sollen der Reihe nach die Zielpersonen
In $event steht (glaube ich) "Himmelfahrt"
In $zeit steht glaube ich der aktuelle Zeitpunkt
In $anfang 07:00
In $ende 16:00
Somit ergibt sich für 2)
~~~sql
SELECT
'11' AS von, -- von wem die Nachricht ist, ist für alle gleich
user_id AS an, -- wo muss sie überall eingetragen werden
'himmelfahrt' AS event, -- das Ereignis
'' AS note, -- hier gefiele mir persönlich NULL besser
'0' AS projekt,
NOW() AS erstellt, -- hier böte sich eine Timestamp-Spalte an
'2007-05-17' AS datum,
'0700' AS anfang,
'1600' AS ende,
'0' AS contact,
' ' AS note2,
'0' AS remind,
' ' AS visi,
NOW() AS sync1,
NOW() AS sync2
FROM users
sollte Dir die Datensätze liefern, die Du einfügen möchtest.
und ganz einfach für 3)
INSERT INTO termine (
von,
an,
event,
note,
projekt,
erstellt,
datum,
anfang,
ende,
contact,
note2,
remind,
visi,
sync1,
sync2
)
SELECT
'11' AS von, -- von wem die Nachricht ist, ist für alle gleich
user_id AS an, -- wo muss sie überall eingetragen werden
'himmelfahrt' AS event, -- das Ereignis
'' AS note, -- hier gefiele mir persönlich NULL besser
'0' AS projekt,
NOW() AS erstellt, -- hier böte sich eine Timestamp-Spalte an
'2007-05-17' AS datum,
'0700' AS anfang,
'1600' AS ende,
'0' AS contact,
' ' AS note2,
'0' AS remind,
' ' AS visi,
NOW() AS sync1,
NOW() AS sync2
FROM users
sollte somit die Einträge erzeugen
Schritt 4 überlasse ich Dir als Übung.
Dieses vier-Schritte-Verfahren wendet man eigentlich überall an:
Ob Du dynamisch HTML generierst oder ein SQL-Statement. Das macht
überhaupt keinen Unterschied. Kannst Du das HTML nicht von Hand
schreiben, dann kannst Du das auch nicht mit PHP. Kannst Du das
SQL nicht von Hand schreiben, dann auch nicht mit PHP.
Freundliche Grüße
Vinzenz
Hallo,
- Eliminiere sämtlichen PHP-Müll.
- Entwickle zuerst statisch das SELECT-Statement, das Dir das gewünschte liefert.
- Erweitere dies um INSERT
- Baue das SQL-Statement dynamisch mit PHP zusammen.
Zu 1)
In $user_id steht der konstante Wert 11, d.h. von wem die Nachricht stammt.
In $benutzer sollen der Reihe nach die Zielpersonen
In $event steht (glaube ich) "Himmelfahrt"
In $zeit steht glaube ich der aktuelle Zeitpunkt
In $anfang 07:00
In $ende 16:00Somit ergibt sich für 2)
SELECT
'11' AS von, -- von wem die Nachricht ist, ist für alle gleich
user_id AS an, -- wo muss sie überall eingetragen werden
'himmelfahrt' AS event, -- das Ereignis
'' AS note, -- hier gefiele mir persönlich NULL besser
'0' AS projekt,
NOW() AS erstellt, -- hier böte sich eine Timestamp-Spalte an
'2007-05-17' AS datum,
'0700' AS anfang,
'1600' AS ende,
'0' AS contact,
' ' AS note2,
'0' AS remind,
' ' AS visi,
NOW() AS sync1,
NOW() AS sync2
FROM users
Wieso from users?
In users stehen doch nur die Leute, die in der Spalte "an" stehen werden, denn das was hier steht, ist ja in der Tabelle "termine" und ob das dann trotzdem geht, bin ich mir nicht so sicher. Auf jeden Fall müsste ich das Ganze noch in eine Schleife bringen, um das Array mit Datum und event durchlaufen lassen zu können.
gruß aus [Hosena](http://www.hosena.de/)
Hallo
SELECT
'11' AS von, -- von wem die Nachricht ist, ist für alle gleich
user_id AS an, -- wo muss sie überall eingetragen werden
'himmelfahrt' AS event, -- das Ereignis
'' AS note, -- hier gefiele mir persönlich NULL besser
'0' AS projekt,
NOW() AS erstellt, -- hier böte sich eine Timestamp-Spalte an
'2007-05-17' AS datum,
'0700' AS anfang,
'1600' AS ende,
'0' AS contact,
' ' AS note2,
'0' AS remind,
' ' AS visi,
NOW() AS sync1,
NOW() AS sync2
FROM users
> Wieso from users?
weil ich keine Ahnung habe wie Deine Tabelle heißt. Du unterläßt es,
nützliche Informationen zusammenfassend zu posten. Dann nehme ich mir
einen halbwegs passenden Namen. Du solltest schließlich problemlos den
Code anpassen können.
> In users stehen doch nur die Leute, die in der Spalte "an" stehen werden,
dann passt das doch. Ist doch der richtige Name. Du wählst aus "users" aus, um in "termine" einzufügen. Elegant und einfach, SQL eben.
Beachte, dass ich außer der user\_id für "an" nur konstante Werte verwendet habe, denn beim INSERT haben diese Werte ebenfalls
alle den gleichen Wert.
> denn das was hier steht, ist ja in der Tabelle "termine"
Was steht in Termine? Davon war noch gar keine Rede.
> und ob das dann trotzdem geht, bin ich mir nicht so sicher. Auf jeden Fall müsste ich das Ganze noch in eine Schleife bringen, um das Array mit Datum und event durchlaufen lassen zu können.
Wovon sprichst Du?
Davon hast Du noch nichts geschrieben. Spielst Du Rätselraten?
Es war im Ausgangsposting von
- einem Event ("Himmelfahrt")
- einem Datum (2007-05-17)
die Rede.
Genau dieses Event mit allem Brimborium überträgt meine Anweisung für jeden einzelnen Empfänger. Ohne Schleife, ohne irgendwelchen PHP-Müll.
Siehe bitte Schritt 3!
Wozu schreibe ich Schritt-für-Schritt-Anleitungen?
Liest Du nicht, was ich schreibe.
In Schritt 2 wählst Du genau die Daten aus, die anschließend in Deine Termin-Tabelle übertragen werden müssen - soweit ich Dich verstanden habe.
Führe doch die Anweisung einfach mal in phpMyAdmin oder dem Client Deines
Vertrauens wie dem MySQL-Query-Browser aus.
Schau Dir das Ergebnis an. Das ist eine reine Auswahl, ändert nichts an
Deinen Daten.
Das macht erst die Anweisung in Schritt 3!
~~~sql
INSERT INTO termine (
von,
an,
event,
note,
projekt,
erstellt,
datum,
anfang,
ende,
contact,
note2,
remind,
visi,
sync1,
sync2
)
SELECT
'11' AS von, -- von wem die Nachricht ist, ist für alle gleich
user_id AS an, -- wo muss sie überall eingetragen werden
'himmelfahrt' AS event, -- das Ereignis
'' AS note, -- hier gefiele mir persönlich NULL besser
'0' AS projekt,
NOW() AS erstellt, -- hier böte sich eine Timestamp-Spalte an
'2007-05-17' AS datum,
'0700' AS anfang,
'1600' AS ende,
'0' AS contact,
' ' AS note2,
'0' AS remind,
' ' AS visi,
NOW() AS sync1,
NOW() AS sync2
FROM users
Freundliche Grüße
Vinzenz
Hallo,
denn das was hier steht, ist ja in der Tabelle "termine"
Was steht in Termine? Davon war noch gar keine Rede.
Dann lies dir den den ganzen Thread noch mal durch
Wovon sprichst Du?
Davon hast Du noch nichts geschrieben. Spielst Du Rätselraten?
Es war im Ausgangsposting von- einem Event ("Himmelfahrt")
- einem Datum (2007-05-17)die Rede.
siehe oben
Genau dieses Event mit allem Brimborium überträgt meine Anweisung für jeden einzelnen Empfänger. Ohne Schleife, ohne irgendwelchen PHP-Müll.
Genau so solls ja auch sein. Die Schleife soll dazu dienen event und datum aus dem Array einzulesen und für jedes im Array stehende event und dem zugehörigen Datum einen Eintrag für alle Empfänger zu erstellen.
Wozu schreibe ich Schritt-für-Schritt-Anleitungen?
Liest Du nicht, was ich schreibe.
Habe ich gelesen. Ich bin mir nur nicht sicher, welche Art von Schleife am besten geeignet ist.
gruß aus Hosena
Ahoi xpfreund,
Also ich fass mal zusammen:
es gibt ein event-array (woher kommt das? wie ist das aufgebaut?)
es gibt eine "tab_user"
es gibt eine "tab_termine"
in "tab_termine" soll für jeden aus "tab_user" jeder event aus dem event-array eingetragen werden.
Alles richtig?
MfG
Hallo,
Also ich fass mal zusammen:
es gibt ein event-array (woher kommt das? wie ist das aufgebaut?)
es gibt eine "tab_user"
es gibt eine "tab_termine"in "tab_termine" soll für jeden aus "tab_user" jeder event aus dem event-array eingetragen werden.
Alles richtig?
Soweit ja.
Die Daten für event und datum lese ich damit ein:
<code lang=php>
$lines = file('feiertage.txt');
foreach ($lines as $holiday ) {
$tag = substr($holiday, 0, 2);
$monat = substr($holiday, 3, 2);
$jahr = substr($holiday, 6, 2);
$event = substr($holiday, 10);
$datum = "20".$jahr."-".$monat."-".$tag;
</code>
feiertage.txt sieht so aus:
17.05.07 Himmelfahrt
03.10.07 Tag der deutchen Einheit
und so weiter.
Jetzt soll in "tab_termine" für jeden aus "tab_user" jedes in der feiertage.txt stehende event mit dem entsprechenden Datum eingetragen werden.
gruß aus Hosena
Hallo,
Habe ich gelesen.
das sieht leider nicht so aus.
Ich bin mir nur nicht sicher, welche Art von Schleife am besten geeignet ist.
Gar keine Schleife ist die beste Schleife. Das schrieb ich von Anfang an - und
das ist immer noch gültig. Nach den hier im Thread vorliegenden Informationen
benötigst Du _keine_ Schleife. Überhaupt keine. Gar keine.
Ich finde es ehrlich gesagt reichlich unverschämt von Dir, von Deinen Helfern zu
verlangen, dass diese die Informationen aus dem Thread für Dich zusammenfassen.
Ganz besonders gilt dies dafür, wenn es jemand schon einmal getan hat:
https://forum.selfhtml.org/?t=151542&m=985867
Aber ich fasse halt noch einmal zusammen:
Es gibt den user mit der user_id: 9
Dieser erstellt einen Event mit folgenden Daten:
Soweit aus Deinem Ausgangsbeitrag.
Dieser Event soll nun für jeden Benutzer, der in der Tabelle "users" vorhanden
ist, in die Tabelle "termine" eingetragen werden.
Dabei sind in der Tabelle "termine" noch ein paar Daten aufzufüllen:
-- vom Event und dem Ersteller abhängige Daten
Die Spalte "von" erhält den Wert 9, die user_id des Erstellers
die Spalten "event", "datum", "anfang" und "ende" die oben angegebenen Werte,
-- konstante Daten bzw. solche, die vom System generiert werden können
die Spalten "note", "note2" und "remind" den Wert 0,
die Spalten "projekt", "ort", "visi" eine leere Zeichenkette,
die Spalten "erstellt", "sync1" und "sync2" erhalten den aktuellen Zeitstempel,
die Spalten "ressource", "contact", "div1" und "div2" den Wert NULL.
-- vom DBMS vorgegebene bzw. aus dem Datenbestand ermittelte Daten.
Die Spalte "ID" wird automatisch vom DBMS vergeben,
die Spalte "an" durchläuft die Werte aller Benutzer, die in der Tabelle
"users" eingetragen sind.
Genau diese Aufgabe erfüllt mein
INSERT into termine (
<feldliste>
)
SELECT
<feld- und wertliste>
FROM users
Ich sehe nirgendwo eine Anforderung von Dir, die nicht erfüllt wäre.
Ich sehe nirgendwo die Notwendigkeit, eine Schleife zu verwenden.
Was Du uns mit folgendem Satz:
Auf jeden Fall müsste ich das Ganze noch in eine Schleife bringen, um das Array mit Datum und event durchlaufen lassen zu können.
sagen?
Was hat es mit diesem Array auf sich?
Woher kommt dieses Array?
Wie sieht es aus?
Welche Werte enthält es?
Warum hast Du seine Existenz bisher so hartnäckig verschwiegen?
Was willst Du damit anfangen?
Verständnislose Grüße
Vinzenz
Hallo,
Ich bin mir nur nicht sicher, welche Art von Schleife am besten geeignet ist.
Gar keine Schleife ist die beste Schleife. Das schrieb ich von Anfang an - und
das ist immer noch gültig. Nach den hier im Thread vorliegenden Informationen
benötigst Du _keine_ Schleife. Überhaupt keine. Gar keine.
https://forum.selfhtml.org/?t=151542&m=986595
Aber ich fasse halt noch einmal zusammen:
Es gibt den user mit der user_id: 9
Dieser erstellt einen Event mit folgenden Daten:-- vom Event und dem Ersteller abhängige Daten
Die Spalte "von" erhält den Wert 9, die user_id des Erstellers
die Spalten "event", "datum", "anfang" und "ende" die oben angegebenen Werte,
genau
-- konstante Daten bzw. solche, die vom System generiert werden können
die Spalten "note", "note2" und "remind" den Wert 0,
die Spalten "projekt", "ort", "visi" eine leere Zeichenkette,
die Spalten "erstellt", "sync1" und "sync2" erhalten den aktuellen Zeitstempel,
die Spalten "ressource", "contact", "div1" und "div2" den Wert NULL.-- vom DBMS vorgegebene bzw. aus dem Datenbestand ermittelte Daten.
Die Spalte "ID" wird automatisch vom DBMS vergeben,
die Spalte "an" durchläuft die Werte aller Benutzer, die in der Tabelle
"users" eingetragen sind.
so siehts aus
Genau diese Aufgabe erfüllt mein
INSERT into termine (
<feldliste>
)
SELECT
<feld- und wertliste>
FROM users
richtig
> Ich sehe nirgendwo eine Anforderung von Dir, die nicht erfüllt wäre.
> Ich sehe nirgendwo die Notwendigkeit, eine Schleife zu verwenden.
>
> Was Du uns mit folgendem Satz:
>
> > Auf jeden Fall müsste ich das Ganze noch in eine Schleife bringen, um das Array mit Datum und event durchlaufen lassen zu können.
>
> sagen?
>
> Was hat es mit diesem Array auf sich?
> Woher kommt dieses Array?
> Wie sieht es aus?
> Welche Werte enthält es?
> Warum hast Du seine Existenz bisher so hartnäckig verschwiegen?
Wozu habe ich diese Posts eigentlich geschrieben:
<https://forum.selfhtml.org/?t=151542&m=985682>
<https://forum.selfhtml.org/?t=151542&m=985790>
<https://forum.selfhtml.org/?t=151542&m=985823>
In allen drei habe ich von dem Array gesprochen.
> Was willst Du damit anfangen?
<https://forum.selfhtml.org/?t=151542&m=986595>
gruß aus [Hosena](http://www.hosena.de/)
Hallo,
ich gebe auf. Von mir hast Du nie wieder Hilfe zu erwarten.
Enttäuschte Grüße
Vinzenz
Hallo,
ich gebe auf. Von mir hast Du nie wieder Hilfe zu erwarten.
Was denn?
Weißt du das funktioniert doch schon im Sql-Teil.
Nur an der Übergabe hängt ein Fehler:
$eintrag = "INSERT INTO termine (
von,
an,
event,
note,
projekt,
erstellt,
datum,
anfang,
ende,
contact,
note2,
remind,
visi,
sync1,
sync2
)
SELECT
'9' AS von,
user_id AS an,
'$event' AS event,
' ' AS note,
'0' AS projekt,
'$zeit' AS erstellt,
'2007-05-17' AS datum,
'0700' AS anfang,
'1600' AS ende,
'0' AS contact,
' ' AS note2,
'0' AS remind,
' ' AS visi,
'$zeit' AS sync1,
'$zeit' AS sync2
FROM users";
$eintragen = mysql_query($eintrag);
Jedenfalls schreibt er damit nichts rein.
Und ich meine, wenn die gesamte Anweisung in einer Schleife steht, wo sich die Variablen $event und $datum ändern, dann sollte das doch kein Problem. Sicher, ich bin manchmal begriffsstutzig, aber das heißt doch nicht, das ich euch ärgern will. Mit festen Daten habe ich das im phpmyadmin schon lange getestet, nur bei der Übergabe hakts noch. Mit mir muss man halt ein bisschen Geduld haben. Warum sage ich denn am Anfang nicht alles? Weil ich denke, dass der Rest schon nicht so schwer sein wird. Ich bin eben so.
Tut mir echt leid.
gruß aus Hosena
Hallo,
ich gebe auf. Von mir hast Du nie wieder Hilfe zu erwarten.
Sicher, ich bin manchmal begriffsstutzig, aber das heißt doch nicht, das ich euch ärgern will. Mit festen Daten habe ich das im phpmyadmin schon lange getestet, nur bei der Übergabe hakts noch. Mit mir muss man halt ein bisschen Geduld haben. Warum sage ich denn am Anfang nicht alles? Weil ich denke, dass der Rest schon nicht so schwer sein wird. Ich bin eben so.
Tut mir echt leid.
gruß aus Hosena
Hallo Hugo,
ich gebe auf. Von mir hast Du nie wieder Hilfe zu erwarten.
Sicher, ich bin manchmal begriffsstutzig, aber das heißt doch nicht, das ich euch ärgern will.
nachdem ich Dir in meinem vorletzten Posting klar gesagt habe, dass und warum
Dein Verhalten an Unverschämtheit grenzt, hatte ich mir noch einmal eine
ganze Menge Arbeit gemacht: Verschiedenes aus dem Thread zusammengesucht und
zusammengestellt, eine Problemanalyse vorgenommen und gezeigt, dass mein
Lösungsvorschlag zu Deinem Problem passt.
Darin steckte wirklich viel Aufwand, zum großen Teil Aufwand, der _Deine_
Aufgabe gewesen wäre. Zudem habe ich Dir etliche Fragen gestellt, zu denen
ich mir erhofft hatte, dass Du darauf eingehst. Statt dessen rotzt Du ein
paar völlig unkommentierte Links zu irgendwelchen Postings, die zum Teil
erst später verfasst wurden.
Soll ich mir daraus selbst raussuchen, was als Antwort passen könnte?
Deine Antwort auf mein ausführliches Posting war wie ein heftiger Schlag
ins Gesicht.
Ich bin eben so.
Tut mir echt leid.
Nein, Du willst Dich nicht ändern - und ich ziehe meine Konsequenzen.
Dies wird meine letzte konstruktive Antwort auf einen Deiner Beiträge
hier im Forum sein.
Erst wenn ich sehe, dass Du Dich positiv entwickelst, werde ich Dir wieder
helfen. Es liegt an Dir.
Wenn ich mich darum bemühe, dass es hier im Forum auch Antworten und nicht
nur Querverweise gibt, dann macht es mir nicht besonders viel aus, wenn
manche Beiträge ohne Feedback bleiben - aber Dein Verhalten verdirbt mir
die Lust daran, Dir zu helfen.
Ich hoffe, es ändert nichts daran, dass ich gerne helfe.
Vinzenz
Hallo,
Der Fehler lag in Sql. Das heißt nicht SELECT user_id AS an FROM users, sondern nur SELECT ID AS an FROM users.
Trotzdem Danke für deine schier endlose (fast) Geduld.
gruß aus Hosena
Hallo,
Oder anders gedacht, könnte man nicht einfach ein Array mit den IDs aller User abfragen und in der Schleife dann alle IDs nacheinander eintragen, welche dann bei der insert-Anweisung berücksichtigt werden sollen?
Nur wie?
gruß aus Hosena
Hallo,
Mein Ansatz dazu, wäre der hier:
$nummer = db_query("select ID
from ".DB_PREFIX."users");
$reihennummer = db_fetch_row($nummer);
foreach ($reihennummer as $benutzer) {
$eintrag = "INSERT INTO termine (von, an, event, note, projekt, erstellt, datum, anfang, ende, contact, note2, remind, visi, sync1, sync2) VALUES ('$user_ID','$benutzer','$event',' ','0','$zeit','$datum','$anfang','$ende','0',' ','0',' ','$zeit','$zeit' )";
$eintragen = mysql_query($eintrag);
};
Er trägt aber nur für den ersten den Termin ein und nicht für alle. Die nächste Id wäre die 4 gewesen.
gruß aus Hosena
Ahoi xpfreund,
Er trägt aber nur für den ersten den Termin ein und nicht für alle. Die nächste Id wäre die 4 gewesen.
Was so auch vollkommen richtig ist weil db_fetch_row nur einen datensatz liefert
MfG
Hallo Hugo,
D.h. wenn ich eins lösche, werden die IDs nicht neu verteilt. Deswegen muss ich halt abfragen, welche IDs vorhanden sind, um dann beim Hinzufügen zur Tabelle "termine" in der Spalte "an" nur die existierenden IDs bei der Schleife zu berücksichtigen.
es ist nahezu immer eine ganz schlechte Idee, SQL-Anweisungen innerhalb einer
Schleife auszuführen. Sehr wahrscheinlich möchtest Du viel eher ein schönes
elegantes SQL-Statement erstellen, das Deine PHP-Schleife überflüssig macht.
Leider habe ich überhaupt nicht verstanden, was Du genau vorhast.
Du willst etliche INSERT-Operationen vornehmen, das ist klar.
Es gibt die INSERT ... SELECT-Syntax, die Dir wahrscheinlich weiterhelfen wird,
vor allem mit Deinem "ist die ID vorhanden?"-Problem.
Freundliche Grüße
Vinzenz
Hallo,
Nein, ganz anders.
Also in einer Tabelle user stehen die User:
ID name
1 irgendwer
5 irgendwas
In einer zweiten steht das im ersten Beitrag beschriebene Bsp. .
Eine Variable datum und eine Variable event ändern sich durch ein Array. So und jetzt soll per insert ein event eingetragen werden, welches erst die user_id=1 hat, dann soll (daher die Schleife) die user_id auf 2 gesetzt werden (aber nur wenn in der Tabelle user die ID=2 existiert), sonst die nächste, damit bei 5 dann wieder hinzugefügt wird. Daher brauche ich die allerletzte ID (in dem Fall 5), um die Schleife bis dahin zu begrenzen.
gruß aus Hosena
Hallo Hugo,
Nein, ganz anders.
ich verstehe immer noch kein Wort.
Also in einer Tabelle user stehen die User:
ID name
1 irgendwer
5 irgendwas
Wenn nun in der Tabelle noch der User
7 sonsteiner
steht, wie ist dann die Logik, dass nur
Eine Variable datum und eine Variable event ändern sich durch ein Array. So und jetzt soll per insert ein event eingetragen werden, welches erst die user_id=1 hat, dann soll (daher die Schleife) die user_id auf 2 gesetzt werden (aber nur wenn in der Tabelle user die ID=2 existiert), sonst die nächste, damit bei 5 dann wieder hinzugefügt wird. Daher brauche ich die allerletzte ID (in dem Fall 5), um die Schleife bis dahin zu begrenzen.
INSERTS für 1 und 5 vorgenommen werden - oder werden die INSERTS für alle Datensätze vorgenommen, die in der Tabelle user stehen?
Wenn letzteres, dann benötigst Du definitiv keine Schleife. Das kann SQL auch ohne PHP, ohne Schleife.
Freundliche Grüße
Vinzenz
Hallo,
Also in einer Tabelle user stehen die User:
ID name
1 irgendwer
5 irgendwasWenn nun in der Tabelle noch der User
7 sonsteiner
steht, wie ist dann die Logik, dass nur
INSERTS für 1 und 5 vorgenommen werden - oder werden die INSERTS für alle Datensätze vorgenommen, die in der Tabelle user stehen?
wenn der user 7 auch noch existieren würde, würde auch ein insert für ihn vorgenommen, und zwar mit allen im Array stehenden events.
d.h.: insert "Himmelfahrt" in termine für 1, 5 und 7. 1, 5 und 7 werden in der Spalte "an" angezeigt. Das Gleiche dann mit einem anderen event.
gruß aus Hosena
Hallo
Wenn nun in der Tabelle noch der User
7 sonsteiner
steht, wie ist dann die Logik, dass nur
INSERTS für 1 und 5 vorgenommen werden - oder werden die INSERTS für alle Datensätze vorgenommen, die in der Tabelle user stehen?
wenn der user 7 auch noch existieren würde, würde auch ein insert für ihn vorgenommen, und zwar mit allen im Array stehenden events.
d.h.: insert "Himmelfahrt" in termine für 1, 5 und 7. 1, 5 und 7 werden in der Spalte "an" angezeigt. Das Gleiche dann mit einem anderen event.
PHP-Schleifen sind überflüssig und verkomplizieren das ganze nur.
Nimm INSERT ... SELECT, schau Dir https://forum.selfhtml.org/?t=151542&m=985828 an,
damit geht das ganz elegant und einfach ohne eine einzige Zeile PHP :-)
Freundliche Grüße
Vinzenz
Hi,
Nicht ganz. Lieber wäre mir den timestamp von jetzt zu bekommen. Also z.B. 20070502132957. Das mit dem Hinzufügen klappt schon. Außerdem wäre gut zu wissen, welche IDs einer Tabelle users existent sind?
Ein Bsp: ID name
1 irgendwer
5 irgendwas
Du willst wirklich zig mal das komplette Event mit allen Spalten speichern?
Ich würde ja eher noch eine Verknüpfungstabelle dazu nehmen, wie es für n:m-Beziehungen üblich ist.
Also eine Tabelle, die die User enthält,
eine Tabelle, die die Events enthält,
und eine Tabelle, die die User-ID und die Event-ID verknüpft (die hat dann nur zwei Spalten).
cu,
Andreas