Modifier les valeurs des variables passées en get

Modifier les valeurs des variables passées en get - PHP - Programmation

Marsh Posté le 20-08-2006 à 14:15:53    

Bonjour,
 
J'ai un petit probleme dans la création d'un script.
 
Je m'explique :
 
Je récupere l'url de la page courante par la methode :
$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]
 
Le probleme c'est que je voudrais modifier la valeur d'une variable
Ex : page.php?id=12&abc=aaa&xyz=ooo
doit etre modifié en :
page.php?id=12&abc=1&xyz=ooo
 
Je ne vois pas trop comment faire à part passer par un split pour récuperer toutes les variables et recrer la chaine de submit...
Mais bon, je dois avouer que si il y a une methode plus simple je suis preneur :)
 
Merci par avance!


Message édité par akito06 le 20-08-2006 à 14:25:09
Reply

Marsh Posté le 20-08-2006 à 14:15:53   

Reply

Marsh Posté le 20-08-2006 à 14:55:12    

Pourrais-tu expliquer un peu plus ce que tu souhaite exactement faire? Parce que franchement c'est pas bien clair là...


Message édité par dwogsi le 20-08-2006 à 14:55:30

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 20-08-2006 à 15:02:05    

Merci pour ta réponse.
 
Pour faire simple, je récupere l'adresse et les variables de la page. Il y a une dizaine de variable.
 
En fait, je créer un lien avec cette meme adresse et variable, mais je veux modifier une variable.
 
Donc voici ce que je fais :
 
$var_url_grp = "http://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]."&employe=0";
 
Ceci rajoute la variable employe avec la valeur 0 dans l'adresse avec toute les variables qui existait deja.
 
Commme ca, ca marche mais bon la variable employe existe deja donc je rajoute une deuximeme fois cette meme variable...
Et comme les liens s'enchaine, a la fin je me retrouve avec employe=0&employe=12&employe=8 ect...
 
Merci

Reply

Marsh Posté le 20-08-2006 à 15:32:22    

Ba tu fais une simple recherche de "employe=" dans ta chaîne et si ça y est c'est que tu as pas besoin de le rajouter.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 20-08-2006 à 15:37:23    

dwogsi a écrit :

Ba tu fais une simple recherche de "employe=" dans ta chaîne et si ça y est c'est que tu as pas besoin de le rajouter.


 
Ce n'est pas si simple.
 
Si ca y est, j'ai besoin de le modifier...
Donc si je trouve employe=xxx je dois remplacer xxx par aaa...
 
Une idée?
 
Merci

Reply

Marsh Posté le 20-08-2006 à 15:38:28    

Sinon, tu peux reconstruire tes paramètres à chaque fois en travaillant sur $_GET comme un tableau.

Reply

Marsh Posté le 20-08-2006 à 15:39:43    

Olivier51 a écrit :

Sinon, tu peux reconstruire tes paramètres à chaque fois en travaillant sur $_GET comme un tableau.


 
Je ne peux pas utiliser Get car je ne connais pas les variables qui sont presente... Ca change a chaque fois...
 
 a moins qu'on puisse faire un
 
nom_var1=$_GET[1,0];
valeur_var1=$_GET[1,2];
 
mais je ne pense pas...
 
Merci


Message édité par akito06 le 20-08-2006 à 15:41:52
Reply

Marsh Posté le 20-08-2006 à 15:44:08    

Code :
  1. foreach ($_GET as $key => $value)
  2. {
  3.   if ($key == "abc" ) && ($value == "aaa" ) $value = "1";
  4.   $query .= "&".$key."=".$value;
  5. }
  6. //ici tu enlèves le premier & avec la fonction qui va bien ...

Reply

Marsh Posté le 20-08-2006 à 15:49:31    

Olivier51 a écrit :

Code :
  1. foreach ($_GET as $key => $value)
  2. {
  3.   if ($key == "abc" ) && ($value == "aaa" ) $value = "1";
  4.   $query .= "&".$key."=".$value;
  5. }
  6. //ici tu enlèves le premier & avec la fonction qui va bien ...



 
Super!
 
Donc dapres ce que je vois, le for each parcours le tableau get et incrémente query avec un & + variable + valeur
si je trouve la variable que je modifier, je la modifie.
Il faut juste que je rajoute un "?" dans mon lien et ca devrait etre bon!
 
Mille merci!

Reply

Marsh Posté le 20-08-2006 à 15:52:14    

Pour enlever le premier &amp, je pense faire un test :
 
SI query == "" ALORS
query.= "&amp"
FINSI
 
query.=variable."=".valeur;

Reply

Marsh Posté le 20-08-2006 à 15:52:14   

Reply

Marsh Posté le 20-08-2006 à 15:52:26    

ouaip, fait attention aussi d'enelever le premier & ... Sinon en plus simple, tu remplaces mon '&' par '&' et à la fin de la boucle tu fais : $query[0] = '?' ...

Reply

Marsh Posté le 20-08-2006 à 15:53:35    

il faut peut-etre mieux le supprimer à la fin, ça évite de faire une comparaison à chaque fois, mais on va dire que ce n'est qu'un détail ...

Reply

Marsh Posté le 20-08-2006 à 16:01:30    

Oups, en fait cest plutot si query n'est PAS vide  :
 
SI query <> "" ALORS
query.= "&amp"
FINSI
 
query.=variable."=".valeur;  
 
Merci pour ton aide!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed