friedhelm: Multi-Array via Post

Hey,

Keine Ahnung ob die Namenswahl sehr treffend ist :-/

folgendes:

  
<INPUT NAME="\kunde__firma[".$kunde_id."]\" TYPE=\"text\" VALUE=\"".$kunden_daten[$kunde_id]->firma."\">

liefert nach einem Submit folgendes:

Array
(
    [kunde__firma] => Array
        (
            [1] => Firma1
            [2] => Firma2
        )
)

kurz gefasst also [kunde_firma][id]
ich hätte aber gerne [kunde][firma][id]

wie muss mein NAME beim INPUT-Feld aussehen?

NAME=\"kunde[firma[".$kunde_id."]]\"
liefert leider nur:
Array
(
    [kunde] => Array
        (
            [firma[1] => Firma1
            [firma[2] => Firma2
        )
)

geht das überhaupt irgendwie? :-)
Danke! friedhelm

  1. Hallo Friedhelm,

    NAME=\"kunde[firma[".$kunde_id."]]\"
    liefert leider nur:
    Array
    (
        [kunde] => Array
            (
                [firma[1] => Firma1
                [firma[2] => Firma2
            )
    )

    geht das überhaupt irgendwie? :-)

    derzeit geht es leider nicht. Ich habe es mir angesehen. Der Browser sendet die Daten korrekt:

            POST / HTTP/1.1  
            Host: localhost  
            Content-Type: application/x-www-form-urlencoded  
            Content-Length: 32  
      
            kunde%5Bfirma%5Bid%5D%5D=content
    

    Demnach baut PHP mal wieder Mist. Bug-Meldung geht gleich raus.
    Derzeit kannst Du also nur einen eigenen Separator setzen (z. B. "_" also <input name="kunde_firma_id"/>). Im Programm formst Du die POST-Daten selbst in ein mehrdimensionales Datenfeld anhand des Separators, explode() und einer Schleife um.

    Gruß aus Berlin!
    eddi

    1. Hi,

      kunde%5Bfirma%5Bid%5D%5D=content

      Demnach baut PHP mal wieder Mist. Bug-Meldung geht gleich raus.

      Damit würde ich noch kurz warten, um mir die Blamage zu ersparen.

      Minus der URL-Kodierung hast du da kunde[firma[id]]=content stehen.
      Ich würde vorschlagen, du probierst mal kunde[firma][id]=content.

      MfG ChrisB

      --
      Light travels faster than sound - that's why most people appear bright until you hear them speak.
      1. Hallo Chris,

        Damit würde ich noch kurz warten, um mir die Blamage zu ersparen.

        Minus der URL-Kodierung hast du da kunde[firma[id]]=content stehen.
        Ich würde vorschlagen, du probierst mal kunde[firma][id]=content.

        Stimmt, danke.

        Gruß aus Berlin!
        eddi

        1. Hallo!

          Ich würde vorschlagen, du probierst mal kunde[firma][id]=content.

          Mann.. Ich war der Meinung das hatte ich probiert :-)
          Jedenfalls funktinoniert es so!

          Von wegen BUG. EI EI EI...*

          Danke
          friedhelm

          * Ich mach nur Spaß

    2. Hallo!

      NAME=\"kunde[firma[".$kunde_id."]]\"

      Bist du sicher, dass Du ein Array-Element als Key eines anderen Arrays benutzen möchtest?

      Demnach baut PHP mal wieder Mist.

      Aha: mal wieder!

      Bug-Meldung geht gleich raus.

      Wie viele vermeintliche Bugs hast Du denn schon gemeldet?

      Ciao

      GG

      --
      "If I do not seek to understand what is happening here
      - then I've got peanuts in my head!"
      (I. Hosein)
      1. Hallo Guy Gaz,

        Aha: mal wieder!

        ja; leider.

        Bug-Meldung geht gleich raus.

        Wie viele vermeintliche Bugs hast Du denn schon gemeldet?

        Bisher nur einen 2004 oder 2005. Es ging damals um das Fehler der Funktion mail(), was damals noch abhängig vom vorinstallierten sendmail-Programm war.

        Generell bleibt es aber ein Bug, wie folgendes Dir zeigen sollte:

        $a=array('firma[id]'=>1);  
        print_r($GLOBALS);
        

        Array
        (
            [GLOBALS] => Array
         *RECURSION*
            [_POST] => Array
                (
                )

        [_GET] => Array
                (
                )

        [_COOKIE] => Array
                (
                )

        [_FILES] => Array
                (
                )

        [a] => Array
                (
                    [firma[id]] => 1
                )

        )

        Wie aber zusehen ist, setzt PHP, anders als im Programm, die per Request angelieferten Daten nicht eins zu eins um.
        So, dann gehe ich mal die Fliegenklatsche schwingen.

        Gruß aus Berlin!
        eddi

        1. Hi,

          Generell bleibt es aber ein Bug, wie folgendes Dir zeigen sollte:

          $a=array('firma[id]'=>1);

          print_r($GLOBALS);

          
          >   
          > Array  
          > (  
          > [...]  
          >     [a] => Array  
          >         (  
          >             [firma[id]] => 1  
          >         )  
            
          Wo genau soll jetzt der Bug sein?  
            
          Du hast angegeben, dass du das Textliteral 'firma[id]' als Key verwenden möchtest, und es ist als Key verwendet worden.  
            
          MfG ChrisB  
            
          
          -- 
          Light travels faster than sound - that's why most people appear bright until you hear them speak.
          
          1. Re:

            Wo genau soll jetzt der Bug sein?
            Du hast angegeben, dass du das Textliteral 'firma[id]' als Key verwenden möchtest, und es ist als Key verwendet worden.

            Für den konkreten Fall hatte ich Dir ja Recht gegeben, weil diese Angabe 'firma[id]' blödsinnig ist. Sagen wir aber, man hat tatsächlich folgendes Ausgangssituation:

              
            <!-- POST-Formular -->  
            <form action="s.php" method="post">  
            	<p>  
            		<input name="a[b[c]]" type="text"/>  
            		<input type="submit">  
            	</p>  
            </form>
            
            <?php  
            # s.php (Request-Verarbeitung)  
            $a=array('a'=>array('b[c]'=>'d'));  
            print_r($_POST);  
            print_r($a);  
            ?>
            

            Das Ergebnis sieht dann so aus:

            Array
            (
                [a] => Array
                    (
                        [b[c] => d
                    )

            )
            Array
            (
                [a] => Array
                    (
                        [b[c]] => d
                    )

            )

            Es fehlt eine Klammer. Dies war aber bereits deutlich im Ausgangsposting des OP zu erkennen. Darauf bezog sich auch der Bug.

            Gruß aus Berlin!
            eddi

            1. Hi,

              Es fehlt eine Klammer. Dies war aber bereits deutlich im Ausgangsposting des OP zu erkennen.

              Das war nur nicht das, woran der Frager interessiert war.

              MfG ChrisB

              --
              Light travels faster than sound - that's why most people appear bright until you hear them speak.
              1. Re:

                Das war nur nicht das, woran der Frager interessiert war.

                Zitat: Stimmt, danke.

                Gruß aus Berlin!
                eddi

        2. Hallo!

          Aha: mal wieder!

          ja; leider.

          Nein!

          Generell bleibt es aber ein Bug, wie folgendes Dir zeigen sollte:

          Nein, es ist, nicht war nicht und wird auch kein Bug werden - works as designed!

          'firma[id]' ist ein gültiger Key für ein Array-Element - wo Problem?

          So, dann gehe ich mal die Fliegenklatsche schwingen.

          Ja, mach Dich nur zum globalhorst!

          Ciao

          GG

          --
          "If I do not seek to understand what is happening here
          - then I've got peanuts in my head!"
          (I. Hosein)
  2. Hallo,

    NAME=\"kunde[firma][".$kunde_id."]]\"

    lass doch das ausechoen von html-code. html ist eine templatesprache.

    <input name="kunde[firma][<?php echo $id?>]">
    oder short_open_tags (die _nicht_ "deprecated" sind): <?=$id?>

    Gruß

    jobo

    1. Hallo,

      lass doch das ausechoen von html-code. html ist eine templatesprache.

      mensch, html ist doch keine programmiersprache. php ist die templatesprache.

      Gruß

      jobo

    2. Hallo!

      Hallo,

      NAME=\"kunde[firma][".$kunde_id."]]\"

      lass doch das ausechoen von html-code. html ist eine templatesprache.

      Nein, es ist eine Sprache für Auszeichnung(Markup) - eine sehr gute Template-Engine bietet IMHO PHP.

      Ciao

      GG

      --
      "If I do not seek to understand what is happening here
      - then I've got peanuts in my head!"
      (I. Hosein)
      1. Hallo,

        Hallo!

        Hallo,

        NAME=\"kunde[firma][".$kunde_id."]]\"

        lass doch das ausechoen von html-code. html ist eine templatesprache.

        Nein, es ist eine Sprache für Auszeichnung(Markup) - eine sehr gute Template-Engine bietet IMHO PHP.

        14 minuten zu spät: https://forum.selfhtml.org/?t=191994&m=1280741, und ergänzend dazu: http://www.inside-php.de/tutorial/PHP-Fortgeschrittene-11/eigenes-Template-System.html

        Gruß

        jobo

        1. Hallo!

          NAME=\"kunde[firma][".$kunde_id."]]\"

          lass doch das ausechoen von html-code. html ist eine templatesprache.

          Nein, es ist eine Sprache für Auszeichnung(Markup) - eine sehr gute Template-Engine bietet IMHO PHP.

          14 minuten zu spät: https://forum.selfhtml.org/?t=191994&m=1280741, und ergänzend dazu: http://www.inside-php.de/tutorial/PHP-Fortgeschrittene-11/eigenes-Template-System.html

          Ja das ist genau der weitverbreitete Schwachsinn, den ich immer wieder antreffe: die Leute haben eine mächtige Template-Engine (PHP) und schreiben damit ein neues Template-System z.B: Smarty. Was soll der Quatsch?

          Bitte jetzt nicht mit dem Null-Argument kommen, die Trennung von Geschäftslogik und Darstellung sei _nur so_ zu erreichen, das ist blanker Unsinn. Das Zend Framework setzt auf PHP als Template-Sprache - ich finde das richtig, denn genau hierzu hat Rasmus Lerdorf das zeug entwickelt.

          Ciao

          GG

          --
          "If I do not seek to understand what is happening here
          - then I've got peanuts in my head!"
          (I. Hosein)
          1. Hallo,

            Ja das ist genau der weitverbreitete Schwachsinn, den ich immer wieder antreffe: die Leute haben eine mächtige Template-Engine (PHP) und schreiben damit ein neues Template-System z.B: Smarty. Was soll der Quatsch?

            Bitte jetzt nicht mit dem Null-Argument kommen, die Trennung von Geschäftslogik und Darstellung sei _nur so_ zu erreichen, das ist blanker Unsinn. Das Zend Framework setzt auf PHP als Template-Sprache - ich finde das richtig, denn genau hierzu hat Rasmus Lerdorf das zeug entwickelt.

            ja, janz meine meinung, oder full ack, wie der internettler zu sagen pflegt.

            Gruß

            jobo