Kalle: Zwei Werte pro INPUT-Feld möglich ?

Hallo,

aus einer MySQL-Tabelle stelle ich variabel eine Weinliste zusammen, pro Position kann man die Flaschenzahl eingeben.
In PHP möchte ich nun in einer Schleife die Felder durchgehen und für jede eingegebene Menge die Bestellnummer erkennen. Ich brauche also Bestell-Nr. UND Menge. Wie geht das ?

HTM-Datei:
<FORM action='mailer.php' method=post>
...
<INPUT TYPE='text' NAME='w001_19' maxlength=3 size=3>
<INPUT TYPE='text' NAME='w001_20' maxlength=3 size=3>

Datei mailer.php:
if ( $w001_19 ) { ... }
if ( $w001_20 ) { ... }

Bestellnummern fest programmiert - geht natürlich nicht !!!

Danke im Voraus, Kalle

  1. Hallo,

    hi

    du hast doch den Finger schon auf der Wunde!
    generiere den Namen des Eingabefeldes für die Anzahl variabel
    d.h.
    while(du datensätze hast){
    echo "<input type="text" name="".$datenbank_id."">";
    }

    und dann kannst du auch abfragen.

    foreach($_POST as $key = $value){
     if($value != 0) {
      // was weiss ich, speicherst du halt in ein array
      $a[$key] = $value;
     }
    }

    dann kannst du ne datenbankupdate oder anfrage realisieren indem du ne scheife
    nochmals durchlaufenn lässt, kannst es natürlcih auch gleich machen in der foreach()

    so in etwa
    foreach($a as $key = $value) {
     $selectstring = "select * from blabla where id=$key and menge=$value";
    }

    so oder so

    bis denne
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist
    1. Danke,

      muss ich erst noch in Ruhe ausprobieren, habe ich auf Anhieb nicht verstanden.

      Kalle.

    2. hallo,
      weiß jemand wie ich mehrere werte aus > select (multiple) < übermittlen kann die vorher selektiert wurden.

      mfg
      siggi

      1. Hallo dude,

        weiß jemand wie ich mehrere werte aus > select (multiple) < übermittlen kann die vorher selektiert wurden.

        guck mal hier und in den Nachfolgepostings
        [pref:t=31294&m=169241]
        es sind in diesem und auch in einigen Threads weiter höher glaube ich diese ganze Problematik abgehandelt worden

        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        ->Alles ist gut wenn es aus Schokolade ist
    3. Hallo romy,

      foreach($_POST as $key = $value){
       if($value != 0) {
        // was weiss ich, speicherst du halt in ein array

      geht das denn?

      $a[$key] = $value;
       }
      }

      Wie kann man denn in foreach() ein Array erzeugen lassen, das hinterher noch zur Verfügung steht. Bei meiner PHP4.0.4 funktioniert das nicht zuverlässig, trotz tricksen.

      Tom

      1. Hallo Thomas,

        foreach($_POST as $key = $value){
        if($value != 0) {
          // was weiss ich, speicherst du halt in ein array
           geht das denn?

        gute Frage, habe noch keine Probleme damit gehabt! Mir erschliesst sich jetzt gerade auch nicht gleich warum es nicht gehen sollte? Einzige Anmerkung, ich würde es vorher iniziieren a la -> $a = new array();

        $a[$key] = $value;
        }
        }

        Wie kann man denn in foreach() ein Array erzeugen lassen, das hinterher noch zur Verfügung steht. Bei meiner PHP4.0.4 funktioniert das nicht zuverlässig, trotz tricksen.

        Ich benutze dieses Konstrukt in meinen Apps sehr häufig und es würde mich echt interessieren ob es da Probleme gibt, da es zu blöden Fehlern kommen kann, wenn das nicht funktioniert.
        Ich werfe nämlich alle Post und Get-Daten die auf bestimmte Scripte kommen immer in ein gemeinsames array was dann als session gespeichert wird und gewisse Daten auch über 2 requests zu erhalten.
        Wie könnte man das denn rausbekommen?

        Ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        ->Alles ist gut wenn es aus Schokolade ist
        1. Hi romy,

          bei der 4.0.4 arbeitet foreach() mit einer Art Kapselung, wie es die "normalen" Funktionen auch tun. Wenn also in foreach() ein Array definiert und belegt wird, dann geht es verloren. Wenn in foreach() ein Array als global definiert wird, dann wird das ja in jedem Durchgang wiederholt. Leider ist das Array erst nach der ersten Belegung vorhanden. Das bedeutet dann, dass der erste Wert verloren geht.

          Wenn man das Array bereits außerhalb der foreach()-Schleife mit einem Wert belegt, also erzeugt hat, dann funktioniert auch das global innerhalb von foreach() vernünftig. Vielleicht hilft es auch, das Array außerhalb von foreach() zu deklarieren mit $feld = array();

          Nur diese Vorgehensweise widerspricht der impliziten Variablendeklaration von PHP und ware dann nur als Workaraiund für eine äußerst schlampige Systemprogrammierung zu verstehen. Mich interessiert deshalb, ob das Problem in neueren Versionen behoben wurde.

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
          1. Hallo Thomas

            bei der 4.0.4 arbeitet foreach() mit einer Art Kapselung, wie es die "normalen" Funktionen auch tun. Wenn also in foreach() ein Array definiert und belegt wird, dann geht es verloren.

            ...

            Nur diese Vorgehensweise widerspricht der impliziten Variablendeklaration von PHP und ware dann nur als Workaraiund für eine äußerst schlampige Systemprogrammierung zu verstehen. Mich interessiert deshalb, ob das Problem in neueren Versionen behoben wurde.

            PHP 4.2.2 weist dieses Verhalten nicht auf. Variablen, die innerhalb von foreach definiert werden, sind auch ausserhalb von foreach() (im gleichen Kontext) vorhanden.

            Gruss,

            Vinzenz

            1. Hallo Thomas

              PHP 4.2.2 weist dieses Verhalten nicht auf. Variablen, die innerhalb von foreach definiert werden, sind auch ausserhalb von foreach() (im gleichen Kontext) vorhanden.

              das gilt auch für die Version 4.1.0
              dieses beispiel funktioniert wunderbar:

              <?php

              foreach($_SERVER as $key => $value) {
                $a[$key] = $value;
              }

              foreach($a as $key => $value){
                echo $key.": ".$value."<br>";
              }
              ?>

              $a wurde erst in der ersten foreach-Schleife erzeigt und besteht auch nachfolgend.
              Ich hoffe, dass so ein Beispiel allgemeingültig ist?
              oder wie kann man das sonst noch prüfen?

              ciao
              romy (die gerade Plätzchen bäckt und sich wie ein kleines Kind auf die Deko, vorallendingen die aus Schokolade freut ;) )
              frohe weihnachtliche Stimmung

              --
              DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
              ->Alles ist gut wenn es aus Schokolade ist