Knud Schröder: wie kann ich 2 Variablenarrays in einer Schleife verarbeiten?

Hallo und Guten Morgen!

Ich hab folgende Eingabemaske mit irgendwann mal "beliebig" vielen Eingabefeldern,
die dann dynamisch aufgebaut werden.

<table border=0>
<tr><td> Personalnummer: <input type=text name="pnr[1]" size=4 maxlength=4></td>
 <td> Artikelnummer: <input type=text name="enr[1]" size=5 maxlength=5></td><tr>
<tr><td> Personalnummer: <input type=text name="pnr[2]" size=4 maxlength=4></td>
 <td> Artikelnummer: <input type=text name="enr[2]" size=5 maxlength=5></td><tr>
<tr><td> Personalnummer: <input type=text name="pnr[3]" size=4 maxlength=4></td>
 <td> Artikelnummer: <input type=text name="enr[3]" size=5 maxlength=5></td><tr>
<tr><td> Personalnummer: <input type=text name="pnr[4]" size=4 maxlength=4></td>
 <td> Artikelnummer: <input type=text name="enr[4]" size=5 maxlength=5></td><tr>
<tr><td> Personalnummer: <input type=text name="pnr[5]" size=4 maxlength=4></td>
 <td> Artikelnummer: <input type=text name="enr[5]" size=5 maxlength=5></td><tr>
<tr><td> Personalnummer: <input type=text name="pnr[6]" size=4 maxlength=4></td>
 <td> Artikelnummer: <input type=text name="enr[6]" size=5 maxlength=5></td><tr>
</table>

Jetzt möchte ich die eingegebenen Werte php-mäßig verarbeiten.
Hatte mir irgendwas vorgestellt wie (Testscript):

while((list($pnr_key, $pnr_value) = each($pnr)) AND (list($enr_key, $enr_value) = each($enr))){
 echo "<hr>$pnr_key : $pnr_value , $enr_key : $enr_value<hr>";
}

Leider funktioniert's nicht. Angeblich wäre weder $pnr noch $enr ein Array.
Hat jemand eine Idee, wie ich's programmiertechnisch lösen könnte?

Grüße,

Knud

  1. Sup!

    <table border=0>
    <tr><td> Personalnummer: <input type=text name="pnr[1]" size=4 maxlength=4></td>
    <td> Artikelnummer: <input type=text name="enr[1]" size=5 maxlength=5></td><tr>

    Vielleicht nutzt das Benennen der Eingabefelder im >>HTML-Code<< gar nix, und die Variablen heissen einfach pnr[1], pnr[2] etc?

    Oder ist PHP so schlau und erkennt, daß das ein Array darstellen soll?
    Anscheinend ja nicht.

    Kann ich mir nicht auch so recht vorstellen, denn auch PHP muß die Werte vom Browser alle schoen einzeln bekommen, in jeweils eigenen Variablen, die halt pnr[1],pnr[2] heissen - falls das überhaupt erlaubt ist, Variablennamen mit [] zu machen.

    Gruesse,

    Bio

    1. Hallo,

      Kann ich mir nicht auch so recht vorstellen, denn auch PHP muß die Werte vom Browser alle schoen einzeln bekommen, in jeweils eigenen Variablen, die halt pnr[1],pnr[2] heissen - falls das überhaupt erlaubt ist, Variablennamen mit [] zu machen.

      Es ist nicht erlaubt Bezeichner zu definieren, die [ oder ] enthalten.
      Auszug aus </selfhtml/tchb.htm#a1>:

      Jedes Eingabefeld muß einen internen Bezeichnernamen erhalten, und zwar mit
      der Angabe name=. Der Name sollte nicht zu lang sein und darf keine Leerzeichen
      und keine deutschen Umlaute enthalten. Verwenden Sie als Sonderzeichen
      höchstens den Unterstrich "_". Setzen Sie den Namen in Anführungszeichen.

      Gruß
      Slyh

    2. Hi,

      Oder ist PHP so schlau und erkennt, daß das ein Array darstellen soll?
      Anscheinend ja nicht.

      Doch so schlau ist es. Da die Arrays indiziert sind, wuerde ich es hier mal mit einer FOR schleife probieren.

      Jan
      --

  2. Hallo Knud,

    Das, was du geschrieben hast ist richtig und funktioniert auch (der ge-Copey&Pasted-e Code läuft auf meinem System).

    Der Fehler liegt also irgendwo im drumrum.

    Gruss,
     Carsten

    1. Hallo Carsten,

      Du hast tatsächlich recht gehabt!!!
      Hab den Fehler gefunden (Hab doch dummerweise ne andere php-Datei aufgerufen).
      Nee, nee, nee!

      Aber immerhin, das Script war korrekt und so wie ich's mir gedacht hab!
      Läuft tadellos! *stolz*

      Danke für Deine Hilfe (und auch die anderen, logisch!!!)

      Werd mich dann mal selbst für die Archivierung vorschlagen (sollte das eigentlich gehen?), anhand der
      anderen Antworten, scheint's ja gar nicht so uninteressant zu sein.

      Geht das eigentlich? Seine eigene Seite hundert mal aufrufen und sich selbst zur Archivierung
      vorschlagen???

      Grüße,

      Knud

  3. Hallo!

    Ich hab folgende Eingabemaske mit irgendwann mal "beliebig" vielen Eingabefeldern,
    die dann dynamisch aufgebaut werden.

    Eine beliebige Anzahl an Variablen läßt sich am besten mit $HTTP_POST_VARS oder $HTTP_GET_VARS verarbeiten.

    while(list($name, $value) = each($HTTP_POST_VARS))
      {
         echo "Name:" . $name . " - Value:" . $value . "<br>\n";
      }

    Leider funktioniert's nicht. Angeblich wäre weder $pnr noch $enr ein Array.
    Hat jemand eine Idee, wie ich's programmiertechnisch lösen könnte?

    Schaue mal bei der PHP-FAQ vorbei "Variablen und Formulare" http://www.koehntopp.de/php/faq-webvariablen.html

    MfG, André Laugks