while wird nicht wiederholt?

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

  • while wird nicht wiederholt?

    Hi @ all

    Kann mir einer sagen warum die fett geschriebene while schleife nur einmal erfolgreich durchlaufen wird und nicht solange bis $menge > $id ist.



    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

    <html>
    <head>
    <title>Anweisungen</title>
    <meta name="title" content="E-Mail versenden">

    </head>

    <body bgcolor="#eeeeee">
    <h1>E-Mail versenden</h1>
    <div class=text>
    <?php
    /* Verbindung aufbauen, auswählen einer Datenbank*/
    $link = mysql_connect("localhost", "yyy", "yyy")
    or die("Keine Verbindung möglich!");
    // print "Verbindung zum Datenbankserver erfolgreich";
    mysql_select_db("ddd") or die("Auswahl der Datenbank fehlgeschlagen");

    // ausführen einer SQL Anfrage
    // Hier werden die Daten aus der Datenbank ausgelesen
    $query = "SELECT user_id FROM mail ORDER BY user_id DESC LIMIT 1";
    $result = mysql_query($query) or die("Anfrage fehlgeschlagen");

    // Ausgabe der Ergebnisse in HTML
    print "<table><td>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    print "\t<tr><td>\n";
    foreach ($line as $menge) {
    print "$menge";
    }
    print "</td></tr>\n";
    }
    print "</table>\n";

    // Freigeben des Resultsets
    mysql_free_result($result);

    // schliessen der Verbinung
    mysql_close($link);
    ;

    $id = 2;
    while ($menge > $id) {

    error_reporting(E_ALL);
    include('Mail.php');


    /**
    * Neues mail object.
    * Nehme keine neuen Argumente mehr
    */
    $mail = new Mail();

    /*
    * Get the contents of the example text/html files.
    * Text/html data doesn't have to come from files,
    * could come from anywhere.
    */
    $text = $mail->getFile('info.txt');
    $html = $mail->getFile('test.html');


    $mail->setReturnPath('aaa@bbb.de');

    /**
    * Neue headers
    */
    $mail->setFrom('"ggg" <ggg@ggg.de>');
    $mail->setSubject('Testmail');
    $mail->setHeader('X-Mailer', 'Test HTML Mime mail class');

    /**
    * Email aus der Datenbank holen*/
    /* Verbindung aufbauen, auswählen einer Datenbank*/
    $link = mysql_connect("localhost", "yyy", "yyy")
    or die("Keine Verbindung möglich!");
    // print "Verbindung zum Datenbankserver erfolgreich";
    mysql_select_db("ddd") or die("Auswahl der Datenbank fehlgeschlagen");

    print "$id";

    // ausführen einer SQL Anfrage
    // Hier werden die Daten aus der Datenbank ausgelesen
    $query = "SELECT user_email FROM mail WHERE user_id=$id";
    $result = mysql_query($query) or die("Anfrage fehlgeschlagen");

    // Ausgabe der Ergebnisse in HTML
    print "<table><td>\n";
    $line = mysql_fetch_array($result, MYSQL_ASSOC);
    foreach ($line as $menge)
    print "$menge";

    // Freigeben des Resultsets
    mysql_free_result($result);

    // schliessen der Verbinung
    mysql_close($link);
    ;

    /**
    * Versenden mit SMTP.
    */
    $result = $mail->send(array($menge), 'smtp');


    if (!$result) {
    print_r($mail->errors);
    } else {
    echo 'E-Mail versendet!';
    }
    print "<P><hr>" . $html . "</P>";
    $id++;
    }

    ?>
    </div>
    </body>
    </html>

  • #2
    haste dir mal menge ausgeben lassen?

    Kommentar


    • #3
      Hi Trashar

      Ja
      Die menge wird ausgegeben
      print "$menge";

      menge = 4

      MfG Sirius

      Kommentar


      • #4
        mach ma while( $menge >= $id )

        Kommentar


        • #5
          while( $menge >= $id )

          Das habe ich jetzt getestet und es ändert sich nichts es wird immer nur eine e-mail versendet.

          while( $menge >= $id ) {

          error_reporting(E_ALL);
          include('Mail.php');

          und so weiter.....


          MfG Sirius

          P.S.: ich habe die Variable $id auf 1 gesetzt
          damit müsste die schleife 3 durchlaufen werden.
          Zuletzt geändert von Sirius; 26.09.2003, 20:22.

          Kommentar


          • #6
            Warum keine for schleife benützen?
            Möglich ist alles!

            Kommentar


            • #7
              Funktioniert auch nicht
              for ($id=1; $menge > $id; $id++) {

              MfG Sirius

              Kommentar


              • #8
                das ginge dann aber auch so:

                for ($id=1; $id > $menge; $id++) {

                Kommentar


                • #9
                  Original geschrieben von OliOli
                  das ginge dann aber auch so:

                  for ($id=1; $id > $menge; $id++) {
                  schwachsinn
                  der würde gleich am anfang flase ausgeben und nich ma einen druch lauf machen ..
                  bzw unendlich wenn $menge = 0;

                  so und noch ma den code für mich damit ich ihn besser lesen kann:
                  PHP-Code:
                  <?php
                  /* Verbindung aufbauen, auswählen einer Datenbank*/
                  $link mysql_connect("localhost""yyy""yyy")
                  or die(
                  "Keine Verbindung möglich!");
                  // print "Verbindung zum Datenbankserver erfolgreich";
                  mysql_select_db("ddd") or die("Auswahl der Datenbank fehlgeschlagen");

                  // ausführen einer SQL Anfrage
                  // Hier werden die Daten aus der Datenbank ausgelesen
                  $query "SELECT user_id FROM mail ORDER BY user_id DESC LIMIT 1";
                  $result mysql_query($query) or die("Anfrage fehlgeschlagen");

                  // Ausgabe der Ergebnisse in HTML
                  print "<table><td>\n";
                  while (
                  $line mysql_fetch_array($resultMYSQL_ASSOC)) {
                  print 
                  "\t<tr><td>\n";
                  foreach (
                  $line as $menge) {
                  print 
                  "$menge";
                  }
                  print 
                  "</td></tr>\n";
                  }
                  print 
                  "</table>\n";

                  // Freigeben des Resultsets
                  mysql_free_result($result);

                  // schliessen der Verbinung
                  mysql_close($link);
                  ;

                  $id 2;
                  while (
                  $menge $id) {

                  error_reporting(E_ALL);
                  include(
                  'Mail.php');


                  /**
                  * Neues mail object.
                  * Nehme keine neuen Argumente mehr
                  */
                  $mail = new Mail();

                  /*
                  * Get the contents of the example text/html files.
                  * Text/html data doesn't have to come from files,
                  * could come from anywhere.
                  */
                  $text $mail->getFile('info.txt');
                  $html $mail->getFile('test.html');


                  $mail->setReturnPath('aaa@bbb.de');

                  /**
                  * Neue headers
                  */
                  $mail->setFrom('"ggg" <ggg@ggg.de>');
                  $mail->setSubject('Testmail');
                  $mail->setHeader('X-Mailer''Test HTML Mime mail class');

                  /**
                  * Email aus der Datenbank holen*/
                  /* Verbindung aufbauen, auswählen einer Datenbank*/
                  $link mysql_connect("localhost""yyy""yyy")
                  or die(
                  "Keine Verbindung möglich!");
                  // print "Verbindung zum Datenbankserver erfolgreich";
                  mysql_select_db("ddd") or die("Auswahl der Datenbank fehlgeschlagen");

                  print 
                  "$id";

                  // ausführen einer SQL Anfrage
                  // Hier werden die Daten aus der Datenbank ausgelesen
                  $query "SELECT user_email FROM mail WHERE user_id=$id";
                  $result mysql_query($query) or die("Anfrage fehlgeschlagen");

                  // Ausgabe der Ergebnisse in HTML
                  print "<table><td>\n";
                  $line mysql_fetch_array($resultMYSQL_ASSOC);
                  foreach (
                  $line as $menge)
                  print 
                  "$menge";

                  // Freigeben des Resultsets
                  mysql_free_result($result);

                  // schliessen der Verbinung
                  mysql_close($link);
                  ;

                  /**
                  * Versenden mit SMTP.
                  */
                  $result $mail->send(array($menge), 'smtp');


                  if (!
                  $result) {
                  print_r($mail->errors);
                  } else {
                  echo 
                  'E-Mail versendet!';
                  }
                  print 
                  "<P><hr>" $html "</P>";
                  $id++;
                  }
                  ?>

                  Kommentar


                  • #10
                    PHP-Code:
                    foreach ($line as $menge)

                    print 
                    "$menge"
                    unten bennen $menge ma um

                    mfg

                    Kommentar


                    • #11
                      Wenn ich die Variable $menge ändere wird die schleife ebenfalls nur einmal durchlaufen. das mit der Variable war ein fehler, und habe es in $test umbennant.


                      PHP-Code:
                      <?php
                      /* Verbindung aufbauen, auswählen einer Datenbank*/
                      $link mysql_connect("localhost""yyy""yyy")
                      or die(
                      "Keine Verbindung möglich!");
                      // print "Verbindung zum Datenbankserver erfolgreich";
                      mysql_select_db("ddd") or die("Auswahl der Datenbank fehlgeschlagen");

                      // ausführen einer SQL Anfrage
                      // Hier werden die Daten aus der Datenbank ausgelesen
                      $query "SELECT user_id FROM mail ORDER BY user_id DESC LIMIT 1";
                      $result mysql_query($query) or die("Anfrage fehlgeschlagen");

                      // Ausgabe der Ergebnisse in HTML
                      print "<table><td>\n";
                      while (
                      $line mysql_fetch_array($resultMYSQL_ASSOC)) {
                      print 
                      "\t<tr><td>\n";
                      foreach (
                      $line as $menge) {
                      print 
                      "$menge";
                      }
                      print 
                      "</td></tr>\n";
                      }
                      print 
                      "</table>\n";

                      // Freigeben des Resultsets
                      mysql_free_result($result);

                      // schliessen der Verbinung
                      mysql_close($link);
                      ;

                      $id 2;
                      while (
                      $menge $id) {

                      error_reporting(E_ALL);
                      include(
                      'Mail.php');


                      /**
                      * Neues mail object.
                      * Nehme keine neuen Argumente mehr
                      */
                      $mail = new Mail();

                      /*
                      * Get the contents of the example text/html files.
                      * Text/html data doesn't have to come from files,
                      * could come from anywhere.
                      */
                      $text $mail->getFile('info.txt');
                      $html $mail->getFile('test.html');


                      $mail->setReturnPath('aaa@bbb.de');

                      /**
                      * Neue headers
                      */
                      $mail->setFrom('"ggg" <ggg@ggg.de>');
                      $mail->setSubject('Testmail');
                      $mail->setHeader('X-Mailer''Test HTML Mime mail class');

                      /**
                      * Email aus der Datenbank holen*/
                      /* Verbindung aufbauen, auswählen einer Datenbank*/
                      $link mysql_connect("localhost""yyy""yyy")
                      or die(
                      "Keine Verbindung möglich!");
                      // print "Verbindung zum Datenbankserver erfolgreich";
                      mysql_select_db("ddd") or die("Auswahl der Datenbank fehlgeschlagen");

                      print 
                      "$id";

                      // ausführen einer SQL Anfrage
                      // Hier werden die Daten aus der Datenbank ausgelesen
                      $query "SELECT user_email FROM mail WHERE user_id=$id";
                      $result mysql_query($query) or die("Anfrage fehlgeschlagen");

                      // Ausgabe der Ergebnisse in HTML
                      print "<table><td>\n";
                      $line mysql_fetch_array($resultMYSQL_ASSOC);
                      foreach (
                      $line as $test)
                      print 
                      "$test";

                      // Freigeben des Resultsets
                      mysql_free_result($result);

                      // schliessen der Verbinung
                      mysql_close($link);
                      ;

                      /**
                      * Versenden mit SMTP.
                      */
                      $result $mail->send(array($test), 'smtp');


                      if (!
                      $result) {
                      print_r($mail->errors);
                      } else {
                      echo 
                      'E-Mail versendet!';
                      }
                      print 
                      "<P><hr>" $html "</P>";
                      $id++;
                      }
                      ?>
                      das ganze umgestellt sieht so aus

                      PHP-Code:
                      <?php
                          
                      /*include nur einmal ausführen oder mit include_once oder require_once */
                          
                      include('Mail.php');

                          
                      /* Fehlerreporting nur einmal aktivieren */
                          
                      error_reporting(E_ALL);
                          
                      /* Verbindung aufbauen, auswählen einer Datenbank*/
                          
                      $link mysql_connect("localhost""yyy""yyy") or die("Keine Verbindung möglich!");

                          
                      // print "Verbindung zum Datenbankserver erfolgreich";
                          
                      mysql_select_db("ddd") or die("Auswahl der Datenbank fehlgeschlagen");

                          
                      // ausführen einer SQL Anfrage
                          // Hier werden die Daten aus der Datenbank ausgelesen
                          
                      $query "SELECT user_id, user_email FROM mail ORDER BY user_id DESC";
                          
                      $result mysql_query($query) or die("Anfrage fehlgeschlagen");

                          
                      // Ausgabe der Ergebnisse in HTML
                          
                      print "<table><td>\n";
                          while (
                      $line mysql_fetch_array($resultMYSQL_ASSOC)) {
                          print 
                      "\t<tr><td>\n";
                          print 
                      "$line[0] $line[1]"/* UserID und UserMail ausgeben */
                          
                      print "</td></tr>\n";
                          
                      /**
                          * Neues mail object.
                          * Nehme keine neuen Argumente mehr
                          */
                          
                      $mail = new Mail();
                          
                      /*
                          * Get the contents of the example text/html files.
                          * Text/html data doesn't have to come from files,
                          * could come from anywhere.
                          */
                          
                      $text $mail->getFile('info.txt');
                          
                      $html $mail->getFile('test.html');
                          
                      $mail->setReturnPath('aaa@bbb.de');
                          
                      /**
                          * Neue headers
                          */
                          
                      $mail->setFrom('"ggg" <ggg@ggg.de>');
                          
                      $mail->setSubject('Testmail');
                          
                      $mail->setHeader('X-Mailer''Test HTML Mime mail class');
                          
                      /**
                          * Versenden mit SMTP.
                          */
                          /* Mail an UserMail in $line[1] */
                          
                      $mailsend $mail->send(array($line[1]), 'smtp');
                          print 
                      "\t<tr><td>\n";
                          if (!
                      $mailsend) {
                            
                      print_r($mail->errors);
                          } else {
                            echo 
                      'E-Mail versendet!';
                          }
                          print 
                      "<P><hr>" $html "</P>";
                          print 
                      "</td></tr>\n";
                          
                      /* Innerhalb der Schleife aufgebaute Variablen freisetzen */
                          /* reine Vorsichtsmaßnahme */
                          
                      unset $mailsend;
                          unset 
                      $html;
                          unset 
                      $text;
                          unset 
                      $mail;
                          }
                          print 
                      "</table>\n";
                          
                      // Auflösen der DB-Verbindung und Freigabe des Results nur da
                          // wo es notwendig ist....
                          // Freigeben des Resultsets
                          
                      mysql_free_result($result);
                          
                      // schliessen der Verbinung
                          
                      mysql_close($link);
                        
                      ?>
                      nur hier bekomme ich folgend Fehlermeldung.

                      Notice: Undefined offset: 1 in /home/www/web146/html/mail/mailtest.php on line 58
                      Notice: Undefined offset: 1 in /home/www/web146/html/mail/mailtest.php on line 58
                      Notice: Undefined offset: 1 in /home/www/web146/html/mail/mailtest.php on line 58
                      Notice: Undefined offset: 1 in /home/www/web146/html/mail/mailtest.php on line 58
                      Dies zeile ist damit gemeint:
                      PHP-Code:
                      $mailsend $mail->send(array($line[1]), 'smtp'); 
                      Notice: Undefined index: 0 in /home/www/web146/html/mail/mailtest.php on line 31
                      Notice: Undefined index: 0 in /home/www/web146/html/mail/mailtest.php on line 31
                      Dies zeile ist damit gemeint:
                      PHP-Code:
                      print "$line[0] $line[1]"/* UserID und UserMail ausgeben */ 
                      Meine Datenbank Struktur ist folgende:
                      CREATE TABLE `mail` (
                      `user_id` mediumint(8) NOT NULL default '0',
                      `user_email` varchar(255) default NULL,
                      PRIMARY KEY (`user_id`)
                      ) TYPE=MyISAM;

                      der Inhalt:

                      user_id=1,2,3,4
                      user_email= 4 beliebige E-Mail adressen

                      MfG Sirius
                      Zuletzt geändert von Sirius; 27.09.2003, 13:37.

                      Kommentar


                      • #12
                        du verwendest mysql_fetch_array mit dem zusätzlichen parameter MYSQL_ASSOC - das heisst, er liefert dir ein ausschliesslich assoziatives array zurück.

                        deshalb kannst du nicht mit nummerischen indizes auf das array zugreifen - die keys sind die namen deiner spalten aus der datenbank.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Fehler in Zeile
                          PHP-Code:
                          print "$line[0] $line[1]"/* UserID und UserMail ausgeben */ 
                          behoben jetz werden die keys angesprochen
                          PHP-Code:
                          print "$line[user_id] $line[user_email]"
                          Super mit dem neuen skript
                          Jetzt werden 4 E-Mails versendet.
                          aber ich trau es mich kam zu schreiben, alle E-Mails sind blanko.

                          4 Fehlermeldungen:
                          Notice: Uninitialized string offset: 0 in /home/www/web146/html/mail/smtp.php on line 143

                          Das alte Skript war chaotisch aber es hat immerhin eine 1 E-Mail im gewünschten Format erfolgreich versendet.

                          vieleicht sollte ich versuchen sie zu kombinieren?

                          zeile 143 der smtp.php
                          PHP-Code:
                          $body    $body[0] == '.' '.'.$body $body
                          MfG Sirius

                          Kommentar


                          • #14
                            Original geschrieben von Sirius
                            Notice: Uninitialized string offset: 0 in /home/www/web146/html/mail/smtp.php on line 143
                            PHP-Code:
                            $body    $body[0] == '.' '.'.$body $body
                            laut fehlermeldung passt es dem interpreter nicht, dass du mit $body[0] auf das erste zeichen aus dem string zugreifen willst.

                            dass das generell nicht erlaubt ist, wäre mir zwar auch neu (hat $body denn einen inhalt zu diesem zeitpunkt?) - aber du könntest ja an dieser stelle auch mit substr() arbeiten, um das erste zeichen zu bekommen.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar

                            Lädt...
                            X