Vinzenz Mai: Verwende INSERT ... SELECT!

Beitrag lesen

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