2009-10-26 3 views
2

Je cette forme qui vient avec certains paramètres d'une autre page. Je veux préserver ces valeurs et ajouter un paramètre sortby, mais chaque fois que je clique, tous les paramètres disparaissent, mais le nouveau paramètre sortby.Préserver tout en ajoutant précédente nouvelle sur un formulaire

Comment puis-je conserver les paramètres de la page précédente et ajouter ou modifier tout paramètre orderby.

<form name="formSearch" action="<?php echo $_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']; ?>" method="GET"> 
    <select name="order_by" id="order_by"> 
     <option <?php if(isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 1) { echo "selected"; } ?> value="1">Ultima Modificacion (Reciente)</option> 
     <option <?php if(isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 2) { echo "selected"; } ?> value="2">Ultima Modificacion (Viejo)</option> 
     <option <?php if(isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 3) { echo "selected"; } ?> value="3">Precio (Mayor to Menor)</option> 
     <option <?php if(isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 4) { echo "selected"; } ?> value="4">Precio (Menor to Mayor)</option> 
     <option <?php if(isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 5) { echo "selected"; } ?> value="5">Marca/Modelo (A to Z)</option> 
     <option <?php if(isset($_REQUEST['order_by']) && $_REQUEST['order_by'] == 6) { echo "selected"; } ?> value="6">Marca/Modelo (Z to A)</option> 
    </select> 
    <input name="submit" type="submit" /> 
</form> 
+0

Mais pourquoi la forme tient pas compte des valeurs $ _SERVER [ 'QUERY_STRING'] sur "l'action"? L'action de formulaire ne doit-elle pas conserver les valeurs définies avec $ _SERVER ['PHP_SELF']. "?". $ _ SERVER ['QUERY_STRING'] et ajouter simplement la valeur de order_by à QUERY_STRING? – Dunewalker

Répondre

-1

La façon la plus simple pour conserver les données serait de nous assurer que les champs responsables de peuplant les valeurs en question sont présentes sur la page en cours. Si elles ne sont plus censées être visibles par l'utilisateur sur la page en question, vous pouvez les définir sur <input type="hidden" name=fieldname" value="value_set_on_previous_submit"/>. Ou si elles doivent encore s'afficher, assurez-vous que leurs valeurs sont définies sur celles qui sont soumises.

1

Ajouter

<INPUT type='hidden' name='OPT1' VALUE='<?php if(isset($_REQUEST['OPT1'])) { echo $_REQUEST['OPT1']; } else { echo "" } ?>

puisque vous devez les transmettre sous forme de champs d'entrée cachés.

OPT1 est le nom du paramètre pour préserver - ajouter autant de ceux-ci que vous avez des paramètres

Si vous souhaitez les champs/valeurs montrent en fait, alors:

  • Goutte type='hidden' pour les afficher et modifiables

  • Faire les champs d'entrée handicapés pour les afficher et ne sont pas modifiables.

Cependant, ces 2 options doivent être effectuées proprement, par ex. si l'ancienne valeur provenait du bouton radio, vous devez afficher et préremplir la même configuration des boutons radio, etc ...

+0

Mais pourquoi le formulaire ignore-t-il les valeurs $ _SERVER ['QUERY_STRING'] sur "action"? L'action de formulaire ne doit-elle pas conserver les valeurs définies avec $ _SERVER ['PHP_SELF']. "?". $ _ SERVER ['QUERY_STRING'] et ajouter simplement la valeur de "order_by" à QUERY_STRING? – Dunewalker

0

Il semble que c'est ainsi que fonctionne la "forme" si vous utilisez la méthode "GET", So , si j'ai besoin de préserver les valeurs et que j'ai besoin d'utiliser "GET", j'aurais besoin d'ajouter un tas de champs cachés comme cela a été suggéré. Mais j'essayais d'éviter ça. Si quelqu'un connaît une meilleure façon, s'il vous plaît laissez-moi savoir, sinon ce serait une solution:

"method =" GET ">

$ v) { echo ''." \ N "; } ?>

maintenant, si vous n'avez pas besoin d'utiliser « GET » sous forme de résultat, il suffit de changer la méthode « POST » et cela fonctionnera très bien.

Notez que si vous venez d'une autre forme , cette forme doit être "GET" pour que cela fonctionne

page de recherche -.> Utilisez-vous de résultats w/Tri formulaire -> Utiliser un post

Questions connexes