Syntaxfehler in Schleife?

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

  • Syntaxfehler in Schleife?

    Hallo Forum,
    seit meiner letzten Frage hab ich alles 1a hinbekommen nun komme ich aber
    bei einer scheinbaren kleinigkeit nicht weiter:

    Bei der Übergabe (post) von Formulardaten bekomme ich auf der zweiten Seite (die eine mail versendet) eine Schleife nicht richtig hin.

    Zunächst sende ich von der ersten Seite folgende Werte:
    - Anzahl (Gesamtanzahl der Werte damit ich weis wie oft die Schleife durchlaufen werden soll)
    - Stueckzahl1=Wert xy, Stueckzahl2=Wert xy, Stueckzahl3=Wert xy, usw... (Stueckzahl wird mittels Schleife so oft wiederholt wie durch "$Anzahl" gesendet wurde)

    hier der code:
    PHP-Code:
    // HIER KOMMT DIE ANZAHL DER MENGEN REIN
    $Anzahl=$HTTP_POST_VARS['Anzahl'];

    // DANN DIE SCHLEIFE DIE SO OFT DURCHLÄUFT WIE ANZAHL VORGIBT.
    // DAS IST DESHALB WICHTIG WEIL DIE ANZAHL VARIIEREN KANN
    // HIER SCHEINT DAS PROBLEM ZU SEIN
    for ($i=1$i<$Anzahl+1$i++) {
    $Menge.$i.=$HTTP_POST_VARS['Stueckzahl.$i'];
    }

    // HIER DANN DIE WERTE IN EINER MAIL ZUSAMMENSETZEN...
    $mailtext.="[ -- Menge --] \n";
    for (
    $i=1$i<$Anzahl+1$i++) {
    $mailtext.= "Produkt ".$i." = ".$Menge.$i."\n";
    }
    ... 
    In der Ausgabe steht dann das:
    [ -- Menge --]
    Produkt 1 = 1
    Produkt 2 = 2

    Das ist natürlich falsch!
    Da ich diese Werte von der Seite zuvor mitgegeben habe:
    Anz:2
    Menge1:3
    Menge2:3

    Idealerweise müsste es so aussehen:
    [ -- Menge --]
    Produkt 1 = 3
    Produkt 2 = 3

    Was ist an der Schleife oben also falsch?
    hmpf!
    ;-/

  • #2
    Also,

    benutze wenn möglich erstmal $_POST statt $HTTP_POST_VARS, das erspart dir ne menge arbeit und ist nicht so veraltet.

    Als nächstes machst du mal ein print_r($_POST) ganz am Anfang der zweiten Datei (die mit der Schleife).

    Dann füllst du das Formular nochmal aus und sendest es ab. Die Ausgabe von print_r postest du dann mal hier. Das macht es uns leichter zu verstehen, welche Daten du wirklich sendest. Aus deiner Beschreibung werde ich so nicht ganz schlau.

    BTW: Wo definierst du $menge???

    $HTTP_POST_VARS['Stueckzahl.$i'];
    Wie verkettet man Strings und Variablen noch mal richtig?

    Statt $i<$Anzahl+1 schreib doch $i<=$Anzahl
    Zuletzt geändert von TobiaZ; 08.10.2005, 09:29.

    Kommentar


    • #3
      PHP-Code:
      for ($i=1$i<$Anzahl+1$i++) {
      $mailtext.= "Produkt ".$i." = ".$Menge.$i."\n";

      Na ja nichts nach $Menge ist ja $i ist nummal der Schleifenzähler. Etv. überschreibst du dir die Mengen Angaben so oder Greiffst auf die Falsche Variabel zu.

      Kommentar


      • #4
        Die ausgabe von print_r:

        Das gibt print_r aus:

        Array ( [Produkt1] => Superpolish 2000 (Herstellername) [Konfektion1] => 1000 ml. [id1] => 07-001 [Preis1] => 30,00 [Stueckzahl1] => 3 [Produkt2] => Hochglanz Lack (Lackmaster) [Konfektion2] => 1l [id2] => 07-002 [Preis2] => 10,00 [Stueckzahl2] => 3 [Bestelldaten] => Produkt1 = Superpolish 2000 (Herstellername), Konfektion = 1000 ml., id = 07-001, Preis = 30,00, Produkt2 = Hochglanz Lack (Lackmaster), Konfektion = 1l, id = 07-002, Preis = 10,00, [Anzahl] => 2 [Vorname] => [Nachname] => [Email] => [Strasse] => [Stadt] => [Land] => [Kommentar] => )

        Ist erst mal nur Dummy zeugs aber egal...

        "Anzahl" ist über ein hidden field von der ersten Seite gekommen.

        PS:Nur damit bei meinem komplizierten Code nicht der Eindruck entsteht ich möchte euch
        ärgern sei erwähnt dass ich eigentlich Designer bin und mich einfach sehr für Programmierung interessiere. Deshalb auch "Halbwissen"...
        ;-)

        Kommentar


        • #5
          Original geschrieben von TobiaZ
          Statt $i<$Anzahl+1 schreib doch $i<=$Anzahl
          Räusper, ok kann ich machen.
          Ich bin eben nicht wirklich jemand der jeden Tag mit Code arbeitet...

          danke!

          Kommentar


          • #6
            So geht es aber das finde ich uncool!

            Der Vollständigkeit halber hier mal der Code mit dem es geht:

            PHP-Code:
            // WENN MAN ES STATISCH REIN SCHREIBT
            $Menge1=$_POST['Stueckzahl1'];
            $Menge2=$_POST['Stueckzahl2'];
            $Menge3=$_POST['Stueckzahl3'];
            usw...

            // UND DANN WEITER UNTEN AUCH STATISCH:
            $mailtext.="[ -- Menge --] \n" 
            "Produkt 1 = "$Menge1 ."\n"
            "Produkt 2 = "$Menge2 ."\n"
            "Produkt 3 = "$Menge3 ."\n"
            "Produkt 4 = usw... 
            Ich fand daran nur unschön dass es so unflexibel ist und das
            ich der Mail, die man dann bekommt immer alles statisch drin steht auch wenn man
            zu den variablen keine werte hat.

            also so:

            [ -- Menge --]
            Produkt 1 = (zB.) 3
            Produkt 2 = (zB.) 2
            Produkt 3 = (zB.) 5
            Produkt 4 = und hier dann zB nichts...
            Produkt 5 = und hier dann zB nichts...
            usw...
            Zuletzt geändert von Halbwissen; 08.10.2005, 11:36.

            Kommentar

            Lädt...
            X