Formular-Variablen mit fortlaufender Nummer

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

  • Formular-Variablen mit fortlaufender Nummer

    Hallo! Ich progge gerade für eine Firma ein Bestellskript.

    Auf einer Seite werden alle Produkte mit folgendem Code in einer Tabelle aufgelistet:

    PHP-Code:
    <?php
    for ($i=1;$i<=$product[0];$i++) {
        echo 
    "<tr>";
        echo 
    "<td>";
        echo 
    $product[$i];
        echo 
    "</td>";
        echo 
    "<td width=\"100\">";
        echo 
    $price[$i];
        echo 
    "</td>";
        echo 
    "<td width=\"50\">";
        echo 
    "<input name=";
        echo 
    $amount[$i];
        echo 
    " type=\"text\" id=";
        echo 
    $amount[$i];
        echo 
    " size=\"5\">";
        echo 
    "</td>";
        echo 
    "</tr>";
    }
          
    ?>
    vorher wird diese datei included:

    PHP-Code:
    <?php 

    $product 
    = array();
    $product[0] = 10;             //Number of Products !!!!
    $product[1] = "Product A";
    $product[2] = "Product B";
    $product[3] = "Product C";
    $product[4] = "Product D";
    $product[5] = "Product E";
    $product[6] = "Product F";
    $product[7] = "Product G";
    $product[8] = "Product H";
    $product[9] = "Product I";
    $product[10] = "Product J";

    $price = array();
    $price[1] = 1.65;
    $price[2] = 2.54;
    $price[3] = 5.74;
    $price[4] = 6.32;
    $price[5] = 0.54;
    $price[6] = 1.99;
    $price[7] = 3.00;
    $price[8] = 4.96;
    $price[9] = 10.75;
    $price[10] = 12.99;

    $amount = array();
    for (
    $i=1;$i<=$product[0];$i++) {
    $amount[$i] = "\"prod".$i."\"";
    }

    ?>
    soweit geht auch alles, auch die variablen werden gespeichert..alles bestens (auch wenn der code vllt ein bisschen zu umständlich ist?!?)

    in der nächsten seite des scriptes muss ich nun mit POST wieder an die formular-variablen prod1, prod2, prod3 etc ran, aber ich schaff es einfach nicht $_POST['variable'] und den array zusammen zu kriegen. Mein momentaner Code-Ansatz sieht so aus: (beinhaltet 2 Ideen ( eine ist auskommentiert)):

    PHP-Code:
    <?php 
    $amountout 
    = array();
    for (
    $i=1;$i<=$product[0];$i++) {
    $amountout[$i] = $_POST["$amount[$i]"];
    }
    for (
    $i=1;$i<=$product[0];$i++) {
        
        echo 
    $product[$i]." | ";
        echo 
    $price[$i]." | ";
        echo 
    $amountout[$i];
        
    //echo "$_POST[prod".$i."]";
        
    echo "<br />";
        
    }
    Ich hab schon überall gesucht aber keine Lösung gefunden!
    Wenn mir jetzt jemand erzählt das man anders (und viiiiieeeel einfacher) machen kann: ich bin für jede hilfe und anregung dankbar.

    Christian
    2 meiner pages:

  • #2
    Hi !

    Mach doch einfach folgendes nach dem POST ...

    PHP-Code:

    $amount 
    $_POST["amount"];
    $price $_POST["price"];
    $product $_POST["product"]; 
    Danach kannst du wie vorher auch auf z.B. $product[1] zugreifen.

    Gruß

    Le Cheffe

    Kommentar


    • #3
      Warum benutzt du kein Assoziatives Array?

      z.B.

      PHP-Code:
      $product = array();
      $product[] = array('name' => 'Produkt 1''preis' => '5.80');
      $product[] = array('name' => 'Produkt 2''preis' => '4.60');
      [...] 
      mens agitat molem

      Kommentar


      • #4
        @Le_Cheffe:
        das problem ist, das ja nicht 'amount' als PHP-Variable als POST weitergegeben wird, sondern die Formular Variablen prod1, prod2 etc. Den array hab ich ja nur benutzt um prod1 etc im Formulat zu erzeugen. (Als HTML-Variable mit fortlaufender Nummer...)

        //edit: auf product[i] und price [i] kann ich auch so zugreifen, weil ich die products.php einfach wieder include (außer dem werden die ja gar nicht mit POST gesendet) Das einzige was mit POST gesendet wird, sind die Variablen prod1, prod2 etc. keine PHP-Variabeln oder Arrays... das ist ja das Prob

        @yezariel:
        es ist auch wichtig, das zB die Firma ohne Knowhow die Produktliste erweitern oder ändern kann, deswegen hab ich die Liste so einfach wie möglich gehalten. (Und ich denke ein assozialtives Array bringt mich bei meinem Prob auch nicht weiter oder?!?)
        Zuletzt geändert von chrpun; 09.12.2005, 12:19.
        2 meiner pages:

        Kommentar


        • #5
          Original geschrieben von chrpun
          @Le_Cheffe:
          das problem ist, das ja nicht 'amount' als PHP-Variable als POST weitergegeben wird, sondern die Formular Variablen prod1, prod2 etc. Den array hab ich ja nur benutzt um prod1 etc im Formulat zu erzeugen. (Als HTML-Variable mit fortlaufender Nummer...)
          Was steht denn in den prod1, prod2, ... drin und warum machst du kein prod[] array ?

          Gruß

          Le Cheffe

          Kommentar


          • #6
            in den prod1 etc stehen die im Formular eingetragen Mengen die bestellet werden sollen (ist auch das einzige was man in dem Formualr eintragen kann)

            Gibt es denn eine Möglichkeit in HTML-Formularen Felder in einem PHP-Array abzuspeichern???
            2 meiner pages:

            Kommentar


            • #7
              Original geschrieben von chrpun

              Gibt es denn eine Möglichkeit in HTML-Formularen Felder in einem PHP-Array abzuspeichern???
              Ja und wenn du meinen vorherigen Beitrag nochmal aufmerksam liest, dann wird dir vielleicht klar werden, wie es funktioniert.

              Kommentar


              • #8
                Original geschrieben von chrpun
                @yezariel:
                es ist auch wichtig, das zB die Firma ohne Knowhow die Produktliste erweitern oder ändern kann, deswegen hab ich die Liste so einfach wie möglich gehalten. (Und ich denke ein assozialtives Array bringt mich bei meinem Prob auch nicht weiter oder?!?)
                Da ist die jetztige Struktur aber fehleranfälliger!
                Du musst jedesmal die Anzahl der Produkte ändern, dafür gibts übrigens count($product)
                Ausserdem müssen die Indizes von Produkten und Preisen GENAU übereinstimmen.
                Das ist die Zuordnung von yezariel IMHO übersichtlicher.
                Für jedes Produkt eine Zeile mit Name und Preis. Sollte doch einfach zu erweitern sein, oder?

                Was Du suchst ist übrigens:
                PHP-Code:
                $amountout[$i] = $_POST['prod'.$i]; 
                Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

                Kommentar


                • #9
                  danke danke, problem gelöst

                  (das mit dem prod[] hatte ich wohl gesehen aber erst nicht gecheckt das man dass so "as is" einbauen kann ;-) )

                  naja, wenn ich wieder probleme meld ich mich

                  Danke!!

                  Christian
                  2 meiner pages:

                  Kommentar


                  • #10
                    sorry, aber eine Frage hab ich noch:

                    Original geschrieben von yezariel
                    Warum benutzt du kein Assoziatives Array?

                    z.B.

                    PHP-Code:
                    $product = array();
                    $product[] = array('name' => 'Produkt 1''preis' => '5.80');
                    $product[] = array('name' => 'Produkt 2''preis' => '4.60');
                    [...] 
                    da ich noch nie mit assoziativen Arrays gearbeitet hab, weiß ich zB nicht wie ich jetzt an den preis von Produkt 1 komme....

                    wäre super wenn ihr mir ein klitzekleines codeschnipsel dazu geben könntet...

                    danke
                    2 meiner pages:

                    Kommentar


                    • #11
                      PHP-Code:
                      $product = array();
                      $product[] = array('name' => 'Produkt 1''preis' => '5.80');
                      $product[] = array('name' => 'Produkt 2''preis' => '4.60');

                      echo 
                      '<table>';
                      foreach (
                      $product as $value) {
                       echo 
                      '<tr><td>' $value['name'] . '</td><td>' $value['preis'] . '</td></tr>';
                      }
                      echo 
                      '</table>'

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        Re: Formular-Variablen mit fortlaufender Nummer

                        Original geschrieben von chrpun
                        $product[0] = 10; //Number of Products !!!!
                        btw. du kennst count() ???

                        und foreach (s.o.) funktioniert auch mit nicht-assoziativen Arrays und ist schneller als ein for

                        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                        Wie man Fragen richtig stellt

                        Kommentar


                        • #13
                          Re: Re: Formular-Variablen mit fortlaufender Nummer

                          Original geschrieben von ghostgambler
                          btw. du kennst count() ???

                          und foreach (s.o.) funktioniert auch mit nicht-assoziativen Arrays und ist schneller als ein for
                          jaja, count kenn ich und wird im mom auch angewendet
                          (ebenso foreach) trotzdem danke (auch für den codeschnipsel!)
                          2 meiner pages:

                          Kommentar

                          Lädt...
                          X