Problem mit foreach() bei 2 verschiedenen Servern

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

  • Problem mit foreach() bei 2 verschiedenen Servern

    Hallo Leute!

    Bin ziemlich neu hier und denke das meine Frage hier richtig ist.
    Bei mir stellt sich folgendes Problem. Ich habe für einen Bekannten eine Seite gemacht und habe bei einem Anmeldeformular mehrere Arrays bei der Auswahl!

    Bei meinem Server funktioniert das auch soweit so gut. Jedoch habe ich das ganze jetzt mal auf einen anderen Server gespielt und dort erhalte ich mit dem selben Code diese Fehlermeldung:

    Warning: Invalid argument supplied for foreach() in anmelden.php on line 20

    Der Code sieht wie folgt aus:

    PHP-Code:
    if ($senden == 1) {

    $auslesen "SELECT * FROM nixe_vortrag";
    $ergebnis  mysql_query($auslesen,$db);
    $ergebnisanmeldung mysql_fetch_array ($ergebnis);
    echo 
    mysql_error();

    $empfaenger "emailadresse@adresse.com";
    foreach(
    $thema as $betreff) {

    $header "From: \"".$sender."\" <".$sendermail.">\n";
          
    mail($empfaenger$betreff$text$header);
          }
          echo 
    "<table width=\"680\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr>
    <td width=115 align=center valign=middle>
    <img src=\"Marianne-Urbanek.gif\" alt=\"Marianne Urbanek\" width=100 height=88/></td>
    <td><i>\"Sie haben sich für folgende(n) Vortrag/Veranstaltung <font color=#FF0000><strong><br>
    $betreff</strong>
    <br></font>beworben.
    <BR>Vielen Dank für Ihr Interesse!
    <BR>Ihre Anfrage wird in den nächsten 24 Stunden bearbeitet!\"</i><BR></td>
    </tr>
    </table>"
    ;

    else {

    $auslesen "SELECT thema FROM nixe_vortrag";
    $ergebnis  mysql_query($auslesen,$db); 
    Die Variable $thema bekommt im Formular die Zuweisung für den Betreff, sieht wie folgt aus:

    Code:
    <form name="form1" method="post" action="<? $PHP_SELF; ?>">
    <table width="680" border="0" cellspacing="2" cellpadding="2">
      <tr>
        <td valign="top" class="eventsform"><div align="left">Veranstaltung/Vortrag:</div></td>
        <td><div align="left">
          <select name="betreff" id="select">
            <? while($row = mysql_fetch_array ($ergebnis)) { extract($row);?>
            <option value="<? echo "$thema"?>" name="thema"><? echo "$thema" ?></option><? }?>
          </select>
        </div></td>
    Was ich jetzt nicht verstehe, bei meinem Server funktioniert es einwandfrei ohne Fehlermeldung mit E-Mailversand. Beim anderen Server funktioniert gar nichts mehr. Woran kann das liegen? Hab es schon mit { } nach dem foreach versucht und ohne, leider kein Erfolg!

    Vielleicht kann mir jemand von euch helfen?! Ob es eventuell mit den Servereinstellungen zu tun haben kann ...

    Thx ComputeXx
    Zuletzt geändert von computexx; 20.04.2006, 17:29.
    What?! Wer bist du denn?

  • #2
    register globals= on?
    Ausserdem ist Dein $thema kein array
    Auf den tollen Stil deines codes gehe ich mal nicht ein
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Und warum ist es kein Array?
      Sorry ich bin ein Newbie wie man sieht, deshalb vielleicht ein verwirrter Code und doofe Fragen, aber dazu sind ja die meisten hier, um sich die richtige Hilfe der Profis zu holen.

      Und "JA" Register_Globals = ON ... dennoch funktionierts nicht
      Mich verwundert das ganze ja deshalb so, weils bei einem Server funktioniert und beim anderen nicht mehr

      PHP Version ist auch über 4 ... daran liegts dann wohl auch ned

      Wenn du eine andere Lösung hast, wie ich die verschiedenen Zeilen der DB als betreff in der Mail angeben kann, dann sag mir bitte bescheid, dann wäre mir ja auch schon geholfen, ich hab echt keinen schimmer mehr.
      Zuletzt geändert von computexx; 19.04.2006, 19:04.
      What?! Wer bist du denn?

      Kommentar


      • #4
        Wenn ich das richtig sehe, übergibt das Formluar doch keine Variable mit dem Namen "thema"... Es heißt doch "betreff", dein select-Feld (Das übrigens keinen guten Code hat...)

        Kommentar


        • #5
          Richtig das select feld heißt schon betreff ... aber ich muss ja alle zeilen der DB auslesen was ich mit der while schleife und dem $thema mache, somit hat das option value feld vom formular echo $thema stehen ... auf meinem Server funktionierts so, aber auf dem anderen nicht.

          Wenn du eine Verbesserung weißt die das ganze wesentlich vereinfacht, wäre ich dir sehr dankbar wenn du mir hier behilflich sein kannst. Man lernt nie aus und vorallem, man lernt nie genug!

          Ich bin wie gesagt ein Noob, somit freu ich mich über jede Kritik und Hilfe die mir angeboten wird
          What?! Wer bist du denn?

          Kommentar


          • #6
            Kannst du vielleicht noch ein bisschen genauer erklären, was in welcher Datei ist, und in welcher Reihenfolge die Codestücke ablaufen?

            PS: Bearbeite bitte dein erstes Posting so, das man nicht so weit scrollen muss...

            Kommentar


            • #7
              Hab das erste Posting jetzt bearbeitet und dort gleich den Code ergänzt

              Hoffe es ist so jetzt besser.

              Nach dem else kommt im Prinzip das Formular, sollte senden nicht 1 sein, ansonsten führt er natürlich die If Anweisung durch!
              What?! Wer bist du denn?

              Kommentar


              • #8
                Habs jetzt mal so geschafft das Thema wird nun angezeigt, die Email mit dem richtigen Betreff wird ebenfalls verschickt.

                Einzige Problem ist jetzt nur mehr, die Fehlermeldung ist dennoch da Gibts ne andere möglichkeit dafür?
                Zuletzt geändert von computexx; 20.04.2006, 17:12.
                What?! Wer bist du denn?

                Kommentar


                • #9
                  Du hast nach wie vor auf keine Art eine Variable namens $thema im geposteten Teilcode, egal ob array oder nicht. Allerdings verwendest Du so eine Variable. Man sieht nicht woher sie kommt, falls es sie gibt.

                  Kommentar


                  • #10
                    Sorry, hab den 1ten Teil des Codes ausgebessert, im Formular heißen nun die Felder "thema", deshalb funktioniert jetzt auch die anzeige + der Mailversand.
                    What?! Wer bist du denn?

                    Kommentar


                    • #11
                      Nachdem $thema kein array und kein Objekt ist, dürfte es eigentlich nirgendswo funktionieren. Ich tippe auf unterschiedliche php-Versionen mit unterschiedlichem Fehlverhalten (vielleicht weil es offenbar eine $register_global Variable ist und in php4 neu eingeführt wurde).

                      im php5 Manual lese ich: foreach wurde in php4 eingeführt und gibt einen Fehler, wenn es nicht auf arrays angewandt wird.


                      NB action="<? $PHP_SELF; ?>" ist auch keine mir bekannte Syntax, anstatt "<?= $PHP_SELF ?>"

                      Kommentar


                      • #12
                        Manno, oft sind es nur Kleinigkeiten ...

                        Natürlich ist die foreach() Funktion jetzt überflüssig Naja, in kleinen Schritten zum Ergebnis gefunden Ich danke auf jeden Fall allen mitwirkenden. Falls jemand eine bessere Lösung für die Select Funktion im Formular hat, würd ich mich freuen wenn er mir das mitteilen würde.

                        @mixi
                        Danke für die Syntax Aufklärung, komischerweise funktionierts auf beide Arten
                        What?! Wer bist du denn?

                        Kommentar

                        Lädt...
                        X