RÉCUPÉRATION DES PARAMÈTRES PASSÉS EN PARAMÈTRES D'URL

chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005 - 10 févr. 2005 à 14:03
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007 - 29 oct. 2008 à 09:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29377-recuperation-des-parametres-passes-en-parametres-d-url

cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
29 oct. 2008 à 09:24
certes ...
davidf007 Messages postés 3 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 28 octobre 2008
28 oct. 2008 à 14:38
Et si vous le voulez vraiment pourquoi pas les expressions régulières pour splitter ...
davidf007 Messages postés 3 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 28 octobre 2008
28 oct. 2008 à 14:23
function getParamURL (url,param)
{
// Exemple bidon _
//
// index 0 1 2 3 4 5 6 7 8 9 10 11 12
// url[index] A B C ? x = 3 & y a = 2 7

// getParamURL (url,x) (url,ya)
// posParams 3 3
// debParam 4 8
// debParam+= 6 11
// finParam 7 -1
// substring (6,7)
// substr (11,2)
// retourne "3" "27"

var posParams = url.indexOf ('?', 0);
if (posParams < 0) return null;

var debParam = url.indexOf (param+'=', posParams+1);
if (debParam < 0) return null;

debParam += param.length()+1;

var finParam = url.indexOf ('&', debParam);
if (finParam < 0) return url.substr (debParam, url.length()-debParam);
else return url.substring (debParam, finParam);
}

// à tester (pas encore fait)
davidf007 Messages postés 3 Date d'inscription mardi 18 novembre 2003 Statut Membre Dernière intervention 28 octobre 2008
28 oct. 2008 à 13:55
Ce code est tout sauf optimal ...

Il découpe l'ensemble de la chaîne et y stocke dans un tableau (affectations mémoire)
Il parcours le tableau pour y trouver le paramètre ... complexité O(n) ridicule !

Si au moins le découpage était stocké (je ne connais pas trop les capacités du javascript)
sous la forme d'une table de hachage ou autre structure à temps de parcours par clé en O(log(n)) ou en O(1).

Pourquoi ne pas simplement :

Chercher la position du caractère ? dans l'URL

Si non trouvé -> retourner null

Si trouvé ... chercher depuis la position du ? et faire une rechercher de chaîne pour y trouver "alpha=" et en retirer une sous-chaîne depuis la position après le = et jusqu'au prochain & (ou jusqu'à la fin de la chaîne si aucun &...).

D'ailleurs je vais le faire tout prochainement dans le cadre d'un projet ...

Sans rancune.
narksh Messages postés 2 Date d'inscription dimanche 18 janvier 2004 Statut Membre Dernière intervention 23 mai 2006
23 mai 2006 à 10:47
J'ai une url email.php?a=1&b=2&c=3

Je veux afficher
si la variable a existe alors
je veux afficher

sinon


de meme pour b et c

Comment faire SVP
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
10 févr. 2005 à 15:41
Réponse rapide !. C'était l'erreur de débutant : guillemets en double.

href="#" provoque le rechargement de la page et dans ce cas les paramètres sont perdus, mais le onclick est éxécuté en premier et après correction de ma bévue, ça fonctionne aussi comme cela.

encore merci
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
10 févr. 2005 à 14:37
Oui, la façon que tu as de l'appeler plante la fonction, je ne sais pas trop pourquoi ... surement à cause du href
Mais si tu mets:
[javascript:alert(getUrl('a')) récup variables]
ou <a onclick="alert(getUrl('a'))" ...
tu verras que ça marche.

Attention également aux guillemets en double, malvenus ici.
chimelpremier Messages postés 544 Date d'inscription vendredi 5 décembre 2003 Statut Membre Dernière intervention 20 mai 2005
10 févr. 2005 à 14:03
Bravo pour tes réponses avisées sur le forum.
Mais là,ça ne marche pas. Je n'ai pas compris, alors peux-tu faire un éxemple concret, merci


J'ai fait un fichier nommé var_url1.htm contenant :

<html>
<head>
</head>

[# récup variables]


</html>
Rejoignez-nous