Variables dans l'url php
Fermé
Bleek
Messages postés
8
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
31 mai 2014
-
Modifié par Bleek le 24/06/2010 à 21:35
Bleek Messages postés 8 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 31 mai 2014 - 27 juin 2010 à 13:48
Bleek Messages postés 8 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 31 mai 2014 - 27 juin 2010 à 13:48
A voir également:
- Variables dans l'url php
- Lien url - Guide
- Iptv url invalide - Forum Box et Streaming vidéo
- Atlas pro url serveur invalide - Forum TV & Vidéo
- Easy php - Télécharger - Divers Web & Internet
9 réponses
LelLex
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
112
24 juin 2010 à 22:00
24 juin 2010 à 22:00
Tu devrais pas plutôt faire : http://www.site.fr/page.php?search=article&couleur=noir&variable=valeur
Comme ça tu peux choisir ta variable comme tu veux avec GET, par exemple prendre que la couleur : $_GET['couleur']
C'est bien ça que tu demandes ?
Comme ça tu peux choisir ta variable comme tu veux avec GET, par exemple prendre que la couleur : $_GET['couleur']
C'est bien ça que tu demandes ?
Bleek
Messages postés
8
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
31 mai 2014
1
24 juin 2010 à 22:16
24 juin 2010 à 22:16
J'ai utiliser cette variable $_GET['couleur'] (même si j'ai simplifier mon propos). Mais cela ne suffit pas...
Si je devais expliquer autrement ce que je souhaite faire, je dirais que j'ai 6 types de liens : article, couleur, taille, prix, et tri croissant/décroissant
Le visiteur peux cliquer sur un article et ensuite de filtrer sur la couleur ou la taille.
Donc, l'url doit pouvoir être construite au fur et à mesure en tenant compte du précédent choix.
Le tout en restant sur la même page et en passant les paramètres dans l'url.
Si je devais expliquer autrement ce que je souhaite faire, je dirais que j'ai 6 types de liens : article, couleur, taille, prix, et tri croissant/décroissant
Le visiteur peux cliquer sur un article et ensuite de filtrer sur la couleur ou la taille.
Donc, l'url doit pouvoir être construite au fur et à mesure en tenant compte du précédent choix.
Le tout en restant sur la même page et en passant les paramètres dans l'url.
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
24 juin 2010 à 22:35
24 juin 2010 à 22:35
Comme as dit LelLex, tu dois simplement vérifier pour chaque variable si elle existe.
si oui, tu en tient compte pour ton classement.
sinon, tu n'en tient pas compte.
si oui, tu en tient compte pour ton classement.
sinon, tu n'en tient pas compte.
LelLex
Messages postés
1628
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
5 septembre 2012
112
24 juin 2010 à 22:43
24 juin 2010 à 22:43
Ce que tu souhaites faire, c'est de pouvoir ajouter les variables dans l'URL ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est pas trés clair, en fait tu parles d'une seule variable au début alors que tu en veut plusieurs...
Pour passer les variables en get c'est soit en formulaire soit en écrivant ton URL à la main(en fait les variables derrière l'URL) . Pour l'instant ça doit être clair.
Donc en php soit tu fais un formulaire(je parles pas du graphisme, il peut avoir la tête qu'il veut mais c'est un <form method="GET">) et donc pour reprendre une valeur déjà passée dans la variable tu testes si elle existe et tu l'ajoutes dans un input du formulaire de type hidden:
Ce qui écriras donc l'URL suivant http://url_de_destination.html?montruc=lavaleur
lorsque qu'il y a plusieurs input les variables sont séparées par le symbole "&"
Donc si on a 15 input l'url s'écrit comme ça:
://url_de_destination.html?montruc=lavaleur&montruc1=uneautrecaleur&montruc2=encoreuneautrevaleur http://url_de_destination.html/...]
...bon je vais pas l'écrire 15 fois non plus...
Du coup si tu veut simuler un envoi de valeurs en GET, soit par GET, soit par POST ou avec la redirection header(location:) il faut que l'url soit une chaine de caractères comprenant toutes les variables.
en GET c'est marqué dans les attributs du form(sous réserve qu'on ait vérifié les variables préablablement récupérées en GET)
enPOST ça marche aussi:
avec header()
Bien sur c'est pas reccomandé de passer des valeurs en GET et limités à 255 caractères. Pas recommandé parce qu'imagine qu'il y ait une base de donnes ou que l'on ne veuilles pas afficher la valeur , bin c'est foutu tout est dans l'url et quelqu'un de mal intentionné peut modifier lui même l'url pour faire planter le programme ou pire insérer des valeurs fausses ou encore pire...
Pour passer les variables en get c'est soit en formulaire soit en écrivant ton URL à la main(en fait les variables derrière l'URL) . Pour l'instant ça doit être clair.
Donc en php soit tu fais un formulaire(je parles pas du graphisme, il peut avoir la tête qu'il veut mais c'est un <form method="GET">) et donc pour reprendre une valeur déjà passée dans la variable tu testes si elle existe et tu l'ajoutes dans un input du formulaire de type hidden:
if(!empty($_GET['montruc']){ // donc on a bien une page ou une valeur est envoyée en GET, la variable //$_GET['montruc'] //pour la reprnredre on la met dans le formulaire: echo "<input type='hidden' name='montruc' value='".$_GET['montruc']."' />" // lorsque l'on envoie le formulaire toutes les valeurs des input avec leur nom //seront envoyé dans l'URL }
Ce qui écriras donc l'URL suivant http://url_de_destination.html?montruc=lavaleur
lorsque qu'il y a plusieurs input les variables sont séparées par le symbole "&"
Donc si on a 15 input l'url s'écrit comme ça:
://url_de_destination.html?montruc=lavaleur&montruc1=uneautrecaleur&montruc2=encoreuneautrevaleur http://url_de_destination.html/...]
...bon je vais pas l'écrire 15 fois non plus...
Du coup si tu veut simuler un envoi de valeurs en GET, soit par GET, soit par POST ou avec la redirection header(location:) il faut que l'url soit une chaine de caractères comprenant toutes les variables.
en GET c'est marqué dans les attributs du form(sous réserve qu'on ait vérifié les variables préablablement récupérées en GET)
<FORM METHOD="GET" ACTION="http://url_de_destination.html<?php echo "?montruc='".$GET['montruc']."&montruc1=".$GET['montruc1']; ">
enPOST ça marche aussi:
<FORM METHOD="POST" ACTION="http://url_de_destination.html<?php echo "?montruc='".$GET['montruc']."&montruc1=".$GET['montruc1']; ">
avec header()
<?php header("location:http://url_de_destination.html?montruc=".$GET_['montruc']."&montruc1=".$_GET['montruc1']); ?>
Bien sur c'est pas reccomandé de passer des valeurs en GET et limités à 255 caractères. Pas recommandé parce qu'imagine qu'il y ait une base de donnes ou que l'on ne veuilles pas afficher la valeur , bin c'est foutu tout est dans l'url et quelqu'un de mal intentionné peut modifier lui même l'url pour faire planter le programme ou pire insérer des valeurs fausses ou encore pire...
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
25 juin 2010 à 15:16
25 juin 2010 à 15:16
d'où l'utilité à bien protéger et vérifier les variables post et get.
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
Modifié par arthezius le 25/06/2010 à 18:00
Modifié par arthezius le 25/06/2010 à 18:00
La solution de LelLex est la plus simple.
Rien ne t'empêche de redefinir tes urls simplement en reprenant ces variables.
Exemple:
Dans cet exemple, j'ai repris celui de LelLex dans son premier message. Ce que j'ai rajouté, te donne une url sur un lien en reprenant tes variables si elles sont déclaré et en ajoutant une nouvelle.
On pourrai très bien imaginé faire ça avec une fonction.
Dans ce cas, le lien sera généré comme suis:
J'ai pas testé, mais ça devrai fonctionner correctement.
« La recherche commence là où s'arrête la connaissance. »
Rien ne t'empêche de redefinir tes urls simplement en reprenant ces variables.
Exemple:
<?php echo'<a href="http://www.site.fr/page.php?search=article'; if(isset($_GET['couleur'])) {echo'&couleur=noir';} if(isset($_GET['variable'])) {echo'&variable=valeur';} echo'&new=ajout">Ajout</a>'; ?>
Dans cet exemple, j'ai repris celui de LelLex dans son premier message. Ce que j'ai rajouté, te donne une url sur un lien en reprenant tes variables si elles sont déclaré et en ajoutant une nouvelle.
On pourrai très bien imaginé faire ça avec une fonction.
function newurl($new,$valeur) { $url='http://www.site.fr/page.php?search=article'; if(isset($_GET['couleur'])) {$url=$url.'&couleur=noir';} if(isset($_GET['variable'])) {$url=$url.'&variable=valeur';} $url=$url.'&'.$new.'='.$valeur.''; return $url; }
Dans ce cas, le lien sera généré comme suis:
<a href="'.newurl('new','ajout').'">Texte</a>
J'ai pas testé, mais ça devrai fonctionner correctement.
« La recherche commence là où s'arrête la connaissance. »
okuni
Messages postés
1221
Date d'inscription
jeudi 4 septembre 2008
Statut
Membre
Dernière intervention
2 janvier 2014
126
25 juin 2010 à 15:39
25 juin 2010 à 15:39
pas oublier de mettre le return $url;
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
25 juin 2010 à 18:01
25 juin 2010 à 18:01
C'est corrigé ^^
Un simple oublie... :(
Un simple oublie... :(
Bleek
Messages postés
8
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
31 mai 2014
1
Modifié par Bleek le 25/06/2010 à 20:50
Modifié par Bleek le 25/06/2010 à 20:50
Bonsoir à tous,
J'ai testé le dernier exemple d'Arthezius et cela ne me donne pas le résultat escompté. Je fais un copier coller pour voir le résultat sur le lien texte et cela me donne une url de ce type :
http://www.site.fr/page.php?search=article&new=ajout
Peut être n'ai je pas compris ? Apparemment cela ne marche pas !
De plus, la couleur, les tailles par exemples ont de multiples choix !
Comment les 'variabilisés' sachant qu'à l'avance je ne sais pas quel choix fera le visiteur ?
De mon coté, j'ai tenté des choses avec $_SERVER['QUERY_STRING'] placé comme ça :
http://www.site.fr/page.php?<?php echo $_SERVER['QUERY_STRING'] ?>+37
37 étant une taille. Le problème avec ça est si je clique sur 38 juste après je me retrouve avec +37 38 derrière. Donc l'url ajoute à la queue leu leu la dernière sélection. Pas cool ! Bref je tourne en rond...
J'ai testé le dernier exemple d'Arthezius et cela ne me donne pas le résultat escompté. Je fais un copier coller pour voir le résultat sur le lien texte et cela me donne une url de ce type :
http://www.site.fr/page.php?search=article&new=ajout
Peut être n'ai je pas compris ? Apparemment cela ne marche pas !
De plus, la couleur, les tailles par exemples ont de multiples choix !
Comment les 'variabilisés' sachant qu'à l'avance je ne sais pas quel choix fera le visiteur ?
De mon coté, j'ai tenté des choses avec $_SERVER['QUERY_STRING'] placé comme ça :
http://www.site.fr/page.php?<?php echo $_SERVER['QUERY_STRING'] ?>+37
37 étant une taille. Le problème avec ça est si je clique sur 38 juste après je me retrouve avec +37 38 derrière. Donc l'url ajoute à la queue leu leu la dernière sélection. Pas cool ! Bref je tourne en rond...
arthezius
Messages postés
3538
Date d'inscription
jeudi 15 mai 2008
Statut
Membre
Dernière intervention
11 septembre 2016
475
26 juin 2010 à 05:37
26 juin 2010 à 05:37
Mon exemple est à réadapter suivant ta situation.
En fait, on sais pas du tout comment va être utiliser le principe que tu cherches à développer.
Reprenons mon exemple.
Une url de ce type comporte deux variables.
Tu les récupères de la manière suivante:
$_GET['search'] et $_GET['new']
Tu peux très simplement les reprendre pour faire de nouveaux url.
Essai de nous expliquer précisément et clairement ce que tu souhaites faire pour qu'on puisse t'aider au mieux. Tes précédentes explications étaient tout sauf précise et du coup on patauge pour essayer de comprendre ce que tu souhaites faire et t'aider au mieux à partir de ce qu'on comprends.
Ma méthode est, de ce que j'ai compris de ce que tu veux, à priori la bonne. Le tout est de savoir comment l'agencer pour obtenir le résultat que tu souhaites.
Si j'ai bien compris, tu veux faire un tris de donnée en passant des paramètres dans l'url.
Pour ce faire, je suppose que les données sont stocké dans une BDD et que tu les affiches avec une requêtes SQL.
Les paramètres de tris (variables) que tu passes dans l'url sont donc utilisé dans ta requête SQL.
Ce qui serait intéressant ce serait de voir ta requêtes et ainsi la manière dont tu utilises ces variables.
Essai de clarifié ta situation pour qu'on puisse t'aider au mieux à partir d'une base solide d'information.
En fait, on sais pas du tout comment va être utiliser le principe que tu cherches à développer.
Reprenons mon exemple.
http://www.site.fr/page.php?search=article&new=ajout
Une url de ce type comporte deux variables.
Tu les récupères de la manière suivante:
$_GET['search'] et $_GET['new']
Tu peux très simplement les reprendre pour faire de nouveaux url.
<a href="http://www.site.fr/page.php?search='.$_GET['search'].'&new='.$_GET['new'].'">lien</a>
Essai de nous expliquer précisément et clairement ce que tu souhaites faire pour qu'on puisse t'aider au mieux. Tes précédentes explications étaient tout sauf précise et du coup on patauge pour essayer de comprendre ce que tu souhaites faire et t'aider au mieux à partir de ce qu'on comprends.
Ma méthode est, de ce que j'ai compris de ce que tu veux, à priori la bonne. Le tout est de savoir comment l'agencer pour obtenir le résultat que tu souhaites.
Si j'ai bien compris, tu veux faire un tris de donnée en passant des paramètres dans l'url.
Pour ce faire, je suppose que les données sont stocké dans une BDD et que tu les affiches avec une requêtes SQL.
Les paramètres de tris (variables) que tu passes dans l'url sont donc utilisé dans ta requête SQL.
Ce qui serait intéressant ce serait de voir ta requêtes et ainsi la manière dont tu utilises ces variables.
Essai de clarifié ta situation pour qu'on puisse t'aider au mieux à partir d'une base solide d'information.
Bleek
Messages postés
8
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
31 mai 2014
1
26 juin 2010 à 14:14
26 juin 2010 à 14:14
Bon, tu as raison je vais essayer d'être le plus exhaustif possible !!!!
J'ai 6 types de liens : article, couleur, taille, prix, et tri croissant/décroissant
1) Article = restera fixe sur la page (charger avec la page article...)
2) Couleur = dépend de la sélection du visiteur
3) Taille = 33 à 42 (idem que dessus)
4) Prix = utilisé avec une instruction BETWEEN (pour des gammes de prix entre p1 et p2)
5) Tri = Croissant ou décroissant
J'utilise une requete sql de ce type :
Pour ce qui est du tri croissant ou décroissant :
Le problème avec le tri ci-dessus, c'est qu'il renvoit une requête qui ne tient pas compte du dernier paramètre charger par le visiteur.
Mon but : Le visiteur peux cliquer sur un article et ensuite le filtrer sur une des couleurs ou une des tailles (33 à 42) ou les 2 à la fois.
Donc, l'url doit pouvoir être construite au fur et à mesure en tenant compte du précédent choix. Le tout en restant sur la même page et en passant les paramètres dans l'url via une requête sql.
Donc, si la requête est testée pour vérifier la présence de variable(s), elle ne prend en compte que ce qui est déjà présent dans l'url.
J'espère que j'ai suffisamment détaillé ! Dis moi si tu veux plus de détails.
Au fait, merci d'avance !!! :-)
J'ai 6 types de liens : article, couleur, taille, prix, et tri croissant/décroissant
1) Article = restera fixe sur la page (charger avec la page article...)
2) Couleur = dépend de la sélection du visiteur
3) Taille = 33 à 42 (idem que dessus)
4) Prix = utilisé avec une instruction BETWEEN (pour des gammes de prix entre p1 et p2)
5) Tri = Croissant ou décroissant
J'utilise une requete sql de ce type :
$query_article = sprintf("SELECT * FROM 'nom_table' WHERE 'detail' LIKE REPLACE(%s,' ','%%') AND 'prix' BETWEEN %s and %s", GetSQLValueString("%" . $colname_article . "%", "text"),GetSQLValueString($p1_article, "double"),GetSQLValueString($p2_article, "double")); $query_limit_article = sprintf("%s LIMIT %d, %d", $query_article, $startRow_article, $maxRows_article); $article = mysql_query($query_limit_article, $bdd) or die(mysql_error()); $row_article = mysql_fetch_assoc($article);
Pour ce qui est du tri croissant ou décroissant :
if (isset($_GET['croissant'])) { $query_article= sprintf("SELECT * FROM 'nom_table' WHERE detail LIKE REPLACE(%s,' ','%%') ORDER BY prix ASC", GetSQLValueString("%" . $colname_article . "%", "text")); $query_limit_article= sprintf("%s LIMIT %d, %d", $query_article, $startRow_article, $maxRows_article); $article= mysql_query($query_limit_article, $bdd) or die(mysql_error()); $row_article = mysql_fetch_assoc($article); }
Le problème avec le tri ci-dessus, c'est qu'il renvoit une requête qui ne tient pas compte du dernier paramètre charger par le visiteur.
Mon but : Le visiteur peux cliquer sur un article et ensuite le filtrer sur une des couleurs ou une des tailles (33 à 42) ou les 2 à la fois.
Donc, l'url doit pouvoir être construite au fur et à mesure en tenant compte du précédent choix. Le tout en restant sur la même page et en passant les paramètres dans l'url via une requête sql.
Donc, si la requête est testée pour vérifier la présence de variable(s), elle ne prend en compte que ce qui est déjà présent dans l'url.
J'espère que j'ai suffisamment détaillé ! Dis moi si tu veux plus de détails.
Au fait, merci d'avance !!! :-)
Bleek
Messages postés
8
Date d'inscription
jeudi 24 juin 2010
Statut
Membre
Dernière intervention
31 mai 2014
1
27 juin 2010 à 13:48
27 juin 2010 à 13:48
Petit up, please !!!