xpfreund: Position des letzten Zeichens in einem String finden

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

  1. Berichtigung
    Steht im Thema

  2. 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

    1. 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

    2. 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

      1. 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

        1. 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

          1. 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

            1. 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

              1. 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

                1. 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

                  1. 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

                    1. 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

                      1. 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

                        1. 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

                          1. Hallo,

                            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)

                            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/)
                            
                            1. 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

                              1. 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

                                1. 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

                                  1. 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

                                  2. Hallo,

                                    Jetzt gehts.
                                    das heißt nicht user_id, sondern einfach nur ID
                                    Danke für eure Geduld.

                                    gruß aus Hosena

                                2. 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:

                                  • event:  'Himmelfahrt'
                                  • datum:  '2007-05-17'
                                  • anfang: '0700'
                                  • ende:   '1600'

                                  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

                                  1. 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/)
                                    
                                    1. Hallo,

                                      ich gebe auf. Von mir hast Du nie wieder Hilfe zu erwarten.

                                      Enttäuschte Grüße

                                      Vinzenz

                                      1. 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

                                      2. 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

                                        1. 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

                                      3. 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

                2. 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

                  1. 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

                    1. 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

          2. 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

            1. 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

              1. 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

                1. Hallo,

                  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

                  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

                  1. 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

      2. 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

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.