töbi: $_GET-Variablen weiter senden in <form method="get">

Beitrag lesen

Hallo töbi,

Wenn ich ein Formular abschicke, das die Methode "GET" verwendet, wird der ganze "Query-String" in der URL abgeschnitten.

nö. Außer wenn er zu lang ist. Aber das passiert nur, wenn du z.B. <textarea>-Eingaben und sowas per GET verschickst. Sollte man nämlich lieber dann per POST machen.

Schon mal beim Mozilla-Browser probiert? Bei meinem ist es genau so! :-(

Ich will aber unbedingt ein Formular mit der Methode GET abschicken so dass die vorhandenen GET-Variablen erhalten bleiben.

wieso?

Ich will den query-String weiter verwenden um aus der Aktuellen ansicht eventuell einen Menue-Punkt zu generieren. Es macht auf jeden fall Sinn.

foreach($_GET AS $get_key => $get)
{
   echo '<input type="hidden" name="'.$get_key.'" value="'.$get.'">';
}

Im Formular,
aber sobald es Arrays sind geht das auch nicht mehr. Was dann raus kommt sieht natürlich so aus:
<input type="hidden" name="arrayVariable" value="Array">

gnau.

<input type="hidden" name="arrayVariable[a]" value="wert">
Kennt jemand das Problem?

Nö, aber lass uns mal überlegen...:

Wir bekommen ein "Array" geschickt:

?array[]=bla&array[]=ble&array[]=blo&array[]=bli

nun ist $_GET["array"] ein Array. Was machen wir also folglich?

foreach($_GET AS $get_key => $get)
{
    if(is_array($get))
    {
        foreach($get as $key => $value)
        {
            echo '<input type="hidden" name="'.$get_key.'['.$key.']" value="'.$value.'">';
        }
    }
    else
        echo '<input type="hidden" name="'.$get_key.'" value="'.$get.'">';
}

So müsste es gehen.

Genial!!

Jetzt habe ich aber noch ein anderes Probelm das dazu kommt:
Wenn ich das Formular absende mit den erzeugten Hidden tags (und deiner Hilfe) Sieht das so aus:

?beispielArray%5Ba%5D=1  anstatt wie gewollt:
?beispielArray[a]=1

macht das ganze viel komplizierter, wenn ich das mit einem preg_replace oder was änlichem löschen will.

{
preg_replace("beispielArray[a]=1","",$query};
)

was meinst du dazu?

töbi