Niveau
..........
En rapport...

Un tableau en GET

Vous le savez sûrement, pour passer des donnée entre deux pages il existe deux méthode principale : le GET et le POST.
Le GET (celui qui nous intéresse) est la concaténation des variables a la suite de l'url.
exemple : http://www.exemple.com/page.php?variable1=valeur1&variable2=valeur2
Cette méthode permet de faire transiter facilement des informations entre 2 page sans utiliser de formulaire.
Seulement parfois, on aimerais passer des variable un peu plus complexe tels que les tableaux…
Voici la marche a suivre pour envoyer un tableau via GET.

Méthode

Puisque on ne peu pas passer de structure dans l'url, on va reconstituer le tableau.
Admettons que votre tableau soit :
tbl[0]=“val1”
tbl[1]=“val2”
tbl[2]=“val3”
Pour l'envoyer par get, il faudra écrire :
tbl[]=val1&tbl[]=val2&tbl[]=val3

Evidement, vous pouvez être ammené a utiliser des tabelaux associatifs :
tbl['clef1']=“val1”
tbl['clef2']=“val2”
tbl['clef3']=“val3”

Dans ce cas, il faudrait ecrire :
tbl[clef1]=val1&tbl[clef2]=val2&tbl[clef3]=val3

on remarque que la clef du tableau n'est plus entre quote.

Une fonction de conversion

La fonction ci dessous va parcourir un tableau donnée et le renvoyé sous forme de chaîne utilisable par get :

javascript
function Array2Get(tbl,nom) {
	//tbl est une variable tableau
	//nom est le nom du tableau (la même chose que tbl mais entre guillemet)
	var r='?';
	for (var i in tbl)
		r+=nom+'['+i+']='+tbl[i]+'&';
	return r;
}

exemple

javascript
<html>
<head>
<script type="text/javascript">
function Array2Get(tbl,nom) {
	//tbl est une variable tableau
	//nom est le nom du tableau (la même chose que tbl mais entre guillemet)
	var r='?';
	for (var i in tbl)
		r+=nom+'['+i+']='+tbl[i]+'&';
	return r;
}
 
function exemple() {
	var t=Array();
	t[0]='test1';
	t[1]='test2';
	t[2]='test3';
	ret=Array2Get(t,'t');
	document.location.href='b.php'+ret;
}
function exemple2() {
	var t=Array();
	t['clef1']='test1';
	t['clef2']='test2';
	t[2]='test3';
	ret=Array2Get(t,'t');
	document.location.href='b.php'+ret;
}
</script>
</head>
<body>
<a href="javascript:exemple();">exemple 1 : tableau -> appeler b.php</a>
<br />
<a href="javascript:exemple2();">exemple 2: tableau associatif -> appeler b.php</a>
</body>
</html>

array_in_get.zip


iDo 13/04/2006 12:03