Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] 2 dimensionales Array mail versenden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von Kimy86 Beitrag anzeigen
    Hab ich oben hingeschrieben: Notice: Undefined variable: mailSendFirst in.. on line 125
    Deine Mail konnten nicht versendet werden(1te Mail)
    Dir ist schon klar dass
    • in dem von dir gepostetenj programmcode keine 125 zeilen sind
    • die variable mailSendFirst ebenfalls nicht vorkommt
    • es andren ausser dir sinnvoll erscheinen mag, erstmal brauchbare daten aus der db zu kriegen und sich später mit dem mail_send problem zu beschäftigen
    • sich bspw. Delirius sicher nicht geärgert hätte, konntest du ihm deffinitiv reporten, das seine tips was gebracht haben

    Kommentar


    • #17
      Sorry nein, war mir nicht klar, ich dachte ich hätte den Code Teil auch eingefügt. Ich glaub es ist zu Heiß dafür. Bei dem Rest war ich noch dran.
      Die Post oben hab ich ergänzt.
      Die Fehlermeldung wird mir in der Zeile angezeigt. Bei der Klammer
      PHP-Code:
       if($mailSendFirst

      Mein Statement hab ich mir ausgeben lassen. Darin ist alles in Ordung. Kein Fehler.

      Kommentar


      • #18
        PHP-Code:
        $result mysql_query($query) or die(mysql_error());

             while (
        $sql mysql_fetch_array($result)) 
            {
                     
        $id $sql['ID'];    #fbu in 3 tagen    
                     
        echo "ID in 3 Tagen (Mail1): $id<br/>";
             
                foreach (
        $meinArray AS $array) {}
          } 
        das $meinArray wird ja irgendwo deffiniert, nur nicht hier im code, ist also nicht der fehler.
        $mailSendFirst wird in jedem foreach() und jedem while() durchlauf überschreieben, wird mal eine mail erfolgreich versendet. halte ich ja auch nciht für gut.
        eine kontrolle vie mail -> user -> thema -> [true/false] wäre sicher auch gut.

        gut du willst die notice weg, welche mE. nichts mit dem problem zu tun hat:
        initialisiere mailSendFirst, also ganz oben hin:
        PHP-Code:
        $mailSendFirst false
        oder mach ein isset() in dein if mit rein.

        Kommentar


        • #19
          Meine Kenntnisse in PHP und MYSQL sind noch nicht so gut, daher weis ich leider nicht, was du mit "eine kontrolle vie mail -> user -> thema -> [true/false]" meinst.
          Wie würdest du es denn machen, wenn du meinen Versuch nicht für gut hällst. Ich lerne ja gerne!
          Ich will die Meldung nicht 'nur' weg bekommen, ich will ja auch wissen warum ich die 'Notice' bekomme. Sie kam nämlich erst als ich
          PHP-Code:
          BETWEEN 
                  
          '$starttime' AND '$endtime'
                  
          AND URL2 LIKE '%@%' 
          zu dem hier
          PHP-Code:
          BETWEEN 
                  DATE_ADD
          ('$starttime'INTERVAL 3 DAY) AND DATE_ADD('$endtime'INTERVAL 3 DAY)
                  AND 
          URL2 LIKE '%@%' 
          geändert hatte.

          $mailSendFirst soll ja auch für jede Sendung in dem Zeitraum eine Mail versenden.

          Kommentar


          • #20
            Zitat von Kimy86 Beitrag anzeigen
            Mein Statement hab ich mir ausgeben lassen. Darin ist alles in Ordung. Kein Fehler.
            gut, wenn dein statement daten rauswirft, kann deine meldung nicht mit änderungen des sql zusammenhängen(qed).
            Zitat von Kimy86 Beitrag anzeigen
            $mailSendFirst soll ja auch für jede Sendung in dem Zeitraum eine Mail versenden.
            deine variable sendet keine mail, sondern speichert nur das ergebniss von mail() http://www.php.net/manual/de/function.mail.php


            was ich meinte mit moderator-> thema -> []
            ganz einfach, für jede mail einzehn ein eintrag in einem array setzen, damit man rausfinden kann, welche mail verschieckt wurden und welche nicht.

            du überschreibst einen wert immer wieder( im idealfall). das lässt keine rückschlüsse auf alle ergebnisse zu.

            nochmahl:

            ich kann anhand deines code nicht viel erkennen. das hängt auch damit zusammen , das $meinArray niregends deffiniert wird.
            du postet keine debug ausgaben.

            mir reicht das alles nicht mehr-> out.

            Kommentar


            • #21
              Danke für die Erklärung.
              Mit es stimmt wollte ich sagen, hätt ich vllt. richtig schreiben sollen. Die Ausgabe vom Statement gibt das richtige Datum im Statement an. Ich bekomm allerdings keine Ausgabe, wenn ich mir die While ausgeben lassen will. Er kommt noch nicht mal in die while rein. O.o

              Ist denn meine Abfrage an sich korrekt? Der Teil mit dem $starttime? Oder gibt es eine Variante das eleganter zu lösen?

              PHP-Code:
              $time=time();

              $month=strftime("%m",$time);
              $day=strftime("%d",$time);
              $year=strftime("%Y",$time);

              $starttime date('Y-m-d H:i:s'mktime(000$month$day$year));
              $endtime date('Y-m-d H:i:s'mktime(235959$month$day$year));
              $query "SELECT Moderator.ID, Moderator.Name, Moderator.URL2, YARMProgramTable.t1 AS t1,YARMProgramTable.t2 AS t2
                      FROM YARMProgramTable, Moderator 
                      WHERE Moderator.ID = YARMProgramTable.ModeratorsPKEY
                      AND DATE(FROM_UNIXTIME(YARMProgramTable.t1/1000))
                      BETWEEN 
                      DATE_ADD('
              $starttime', INTERVAL 3 DAY) AND DATE_ADD('$endtime', INTERVAL 3 DAY)
                      AND URL2 LIKE '%@%'
                      GROUP BY ID
                      ORDER BY t1 ASC"
              ;
              $result mysql_query($query) or die(mysql_error());

                   while (
              $sql mysql_fetch_array($result)) 
                  {
                           
              $id $sql['ID'];    #fbr in 3 tagen    
                           
              echo "<br>ID in 3 Tagen (Mail1): $id<br/>";
                           
              $t1 $sql['t1'] / 1000;
                           
              $startzeit date(" d.m.Y - H:i:s"$t1);
                           
              $name $sql['Name'];
                           
                           echo 
              "<br>Name= $name, Startzeit = $startzeit"
              Der Teil indem $meinArray erstellt wird ist der hier.
              PHP-Code:
              class Rotation
                
              {
                  public static function 
              getRotationArray($printAllocation)
                  {
                  
                        require(
              '../Connections/dbconnection.php');
                      

                    
              mysql_select_db($database$dbconnection);

                    
              //**Auswahl aller Sendungen, inkl Wiederholungen in einem Monat**//
                    
                    
              $query "SELECT Moderator.ID, Moderator.Name, Moderator.URL2, YARMProgramTable.t1 AS t1,YARMProgramTable.t2
                      FROM YARMProgramTable, Moderator 
                      WHERE Moderator.ID = YARMProgramTable.ModeratorsPKEY
                      #AND (t1/1000) >= CURDATE()
                      AND MONTH(FROM_UNIXTIME(t1/1000)) = MONTH(Now())
                      AND YEAR(FROM_UNIXTIME(t1/1000)) = YEAR(Now())
                      AND URL2 LIKE '%@%'
                      GROUP BY ID
                      ORDER BY t1 ASC
                      "
              ;
                            
                    
              $result mysql_query($query) or die(mysql_error());
                  
                    
                    
              /**Variable für UserArray**/
                    
              $allocation_user_count 0;
                    
                    
              /**Ergebnisse werden in ein Array geschrieben**/
                    
              while($row mysql_fetch_assoc($result))
                    {
                      
              $users[$allocation_user_count] = $row['Name'];
                      
              $email[$allocation_user_count] = $row['URL2'];
                      
              $id[$allocation_user_count] = $row['ID'];
                  
                      
              $t1n $row['t1']/1000;    
                      
              $stime[$allocation_user_count] = date("H:i "$t1n);
                      
                      
              $t2n $row['t2']/1000;
                      
              $etime[$allocation_user_count] = date("H:i"$t2n);
                      
                      
              $date[$allocation_user_count] = date("d.m.Y"$t1n);
                      
                              
                      
              $allocation_user_count++;
                    }

                    
              /**Aktueller Monat**/
                    
              $allocation_counter date("n"strtotime("now"));

                    
              /**Anzahl der Teilnehmer**/
                    
                
                    
              if ($allocation_counter $allocation_user_count)
                    {
                      while (
              $allocation_counter $allocation_user_count)
                      {
                        
              $allocation_counter -= $allocation_user_count;
                      }
                    }
                    
                     
              /**Falls $allocation_counter == $allocation_user_count, dann wird die (for) Schleife nicht ausgeführt
                  ***Es beginnt wieder von vorne **/
                    
              if ($allocation_counter == $allocation_user_count)
                    {
                      
              $allocation_counter 1;
                    }
                     
              /**Zuordnung von FeedbackUser und FeedbackReceiver
                  ***Abhängig von der Anzahl der Teilnehmer und des aktuellen Monats**/
                  
                    
              for ($i 0$i $allocation_user_count$i++)
                    {
                      if ((
              $i+$allocation_counter) >= $allocation_user_count)
                      {
                        
              /**Feedback Receiver**/
                        
              $allocation [$i] ['fbr'] = $users[$i];
                        
              /**Feedback Receiver Mail**/
                        
              $allocation [$i] ['fbrm'] = $email[$i];
                        
                        
              /**Feedback Receiver Datum**/
                        
              $allocation [$i] ['fbrd'] = $date[$i];
                        
              /**Feedback Receiver Start**/
                        
              $allocation [$i] ['fbrst'] = $stime[$i];
                        
              /**Feedback Receiver End**/
                        
              $allocation [$i] ['fbret'] = $etime[$i];
                        
              /**Feedback Receiver ID**/
                        
              $allocation [$i] ['fbrid'] = $id[$i];
                  

                        
              /**Feedback User**/
                        
              $allocation [$i] ['fbu'] = $users[$i+$allocation_counter $allocation_user_count];
                        
              /**Feedback User Mail**/
                        
              $allocation [$i] ['fbum'] = $email[$i+$allocation_counter $allocation_user_count];
                        
                        
              /**Feedback User Datum**/
                        
              $allocation [$i] ['fbud'] = $date[$i+$allocation_counter $allocation_user_count];          
                        
              /**Feedback User Start**/
                        
              $allocation [$i] ['fbust'] = $stime[$i+$allocation_counter $allocation_user_count];
                        
              /**Feedback User End**/
                        
              $allocation [$i] ['fbuet'] = $etime[$i+$allocation_counter $allocation_user_count];
                        
              /**Feedback User ID**/
                        
              $allocation [$i] ['fbuid'] = $id[$i+$allocation_counter $allocation_user_count];
                        

                         
              /**Wenn $printAllocation = true, dann wird es für den User sichtbar gemacht**/
                        
              if ($printAllocation)
                         {
                          echo 
              "Die Sendung  <i>" $allocation [$i] ['fbu'] . "</i> mit der ID <i>" $allocation [$i] ['fbuid'] . "</i> gibt Feedback an die Sendung <i>" $allocation [$i] ['fbr'] . "</i>, die am <i>" $allocation [$i] ['fbrd'] . "
                          </i> von <i>" 
              $allocation [$i] ['fbrst'] . " </i> bis <i>" $allocation [$i] ['fbret'] . "</i> läuft <i>" "</i>!<br />";
                        }
                      }
                      else
                      {
                         
              /**Feedback Receiver**/
                        
              $allocation [$i] ['fbr'] = $users[$i];
                        
              /**Feedback Receiver Mail**/
                        
              $allocation [$i] ['fbrm'] = $email[$i];
                        
                        
              /**Feedback Receiver Datum**/
                        
              $allocation [$i] ['fbrd'] = $date[$i];
                       
              /**Feedback Receiver Start**/
                        
              $allocation [$i] ['fbrst'] = $stime[$i];
                        
              /**Feedback Receiver End**/
                        
              $allocation [$i] ['fbret'] = $etime[$i];
                        
              /**Feedback Receiver ID**/
                        
              $allocation [$i] ['fbrid'] = $id[$i];
                              

                        
              /**Feedback User**/
                        
              $allocation [$i] ['fbu'] = $users[$i+$allocation_counter];
                        
              /**Feedback User Mail**/
                        
              $allocation [$i] ['fbum'] = $email[$i+$allocation_counter];
                        
                        
              /**Feedback User Datum**/
                        
              $allocation [$i] ['fbud'] = $date[$i+$allocation_counter];
                        
              /**Feedback User Start**/
                        
              $allocation [$i] ['fbust'] = $stime[$i+$allocation_counter];
                          
              /**Feedback User End**/
                        
              $allocation [$i] ['fbuet'] = $etime[$i+$allocation_counter];
                        
              /**Feedback User ID**/
                        
              $allocation [$i] ['fbuid'] = $id[$i+$allocation_counter];
                        
                     
                         
              /**Wenn $printAllocation = true, dann wird es für den User sichtbar gemacht**/
                        
              if ($printAllocation)
                        {
                          echo 
              "Die Sendung <i>" $allocation[$i]['fbu'] . "</i> mit der ID <i>" $allocation [$i] ['fbuid']. "</i> gibt Feedback an die Sendung <i>" $allocation [$i] ['fbr'] . "</i>, die am <i>" $allocation [$i] ['fbrd'] . "</i> von <i>" $allocation [$i] ['fbrst'] . " </i>
                          bis <i>" 
              $allocation [$i] ['fbret'] . "</i> läuft <i>" "</i>!<br />";
                        }
                      }
                      
                    }      

                    return 
              $allocation;
                    
                  }  
              /**Ende getRotationArray**/
                
              }  /**Ende class Rotation**/
                
                
              $meinArray Rotation::getRotationArray(true); 
              Geht warschienlich eleganter, aber es funktioniert

              Kommentar

              Lädt...
              X