Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2011, 13h47   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2010
Messages : 136
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 136
Points : 14
Points : 14
Par défaut transmettre une variable array

Bonjour

Voila j'ai une variable a transmettre
cette variable est en fait un tableau "array"
quand je la transmet par url
dans l'url est ecrit ceci :

localhost/admin/client-traitement2.php?tabCheckbox=Array

est'ce normal? et pourrais-je récupérer dans ma page client-traitement2.php
les valeurs de cet array transmissent dans l'url

ou vaut'il mieux directement faire un $SESSIOn de cet array

ou voyez-vous autre chose?

merci
artichaudd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 15h18   #2
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 249
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 249
Points : 1 510
Points : 1 510
je vote pour les sessions...
si ton array commence a avoir une dizaine d'entrees... tu vas te retrouver avec des url a rallonge

sinon, pour ton info, tu peux utiliser serialize() et unserialize() (si tu veux vraiment passer par l'url)
__________________
La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 17h54   #3
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
D'après ce que j'ai compris, serialize/unserialize, c'est pour transmettre des objets, et pour les tableaux, c'est implode/explode
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 30/12/2011, 19h08   #4
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

Citation:
serialize() acceptent tous les types sauf les ressources
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 20h20   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 727
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 727
Points : 3 294
Points : 3 294
Citation:
je vote pour les sessions...
Pourquoi pas.
Les sessions sont tous de même prévus pour stocker/mémoriser des données tout au long de la navigation de l'internaute.
Or, est-ce réellement le cas, n'est pas plutôt temporaire, juste le passage d'une ou 2 pages ?

Stocker en session de manière un peu abusive peu faire au qu'au bout cette session contienne beaucoup de données inutiles.

Si c'est juste pour transmettre le contenu d'un tableau, alors un formulaire serait tout aussi bien, suffit de faire une boucle sur ce tableau et mettre ces données dans des champs cachés.
Exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
<form action="client-traitement2.php" method="post">
<p>
<?php
foreach $array as $key => $value) {
    echo '<input type="hidden" name="tabCheckbox['.$key.']" value="'.$value.'" />';
}
?>
<input type="submit" value="Envoyer" />
</p>
</form>
Ceci va renvoyer en POST un tableau en 2 dimensions :
$_POST['tabCheckbox'][0] (valeur du 1er élément)
$_POST['tabCheckbox'][1] (valeur du 2ème élément)
etc ...
Donc il suffit de faire une boucle foreach() sur $_POST['tabCheckbox'] pour obtenir toutes les valeurs (même structure que celle d'origine).
Tout ceci en supposant que $array soit un tableau à 1 dimension.

On peu aussi le faire avec des tableaux à plusieurs dimensions, faut adapter un peu quand même.


Ou alors, si on tient à transmettre tout ça par un lien, alors la fonction http_build_query() est théoriquement faite pour ça.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2011, 23h00   #6
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
OK, mais les sessions, ça ne marche que si on reste sur le même serveur, donc si on veut (comme c'était mon cas lorsque j'ai dû le faire) transmettre sur un serveur différent, on peut recourir à un formulaire avec implode (ou serialize comme l'indique Eric2A) + un champ hidden (et du coup, pas besoin de boucle, comme le propose RuncodePHP, car on transfère en une seule variable (de type string) le tableau) ; le seul aléa, contrairement aux sessions, c'est qu'on a un bouton "transmettre".
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 06h04   #7
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 727
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 727
Points : 3 294
Points : 3 294
Citation:
Envoyé par laurentSc
car on transfère en une seule variable (de type string) le tableau
D'accord, pourquoi pas.
Le faire une ou deux fois, passe encore, mais si on généralise un peu trop cette façon de procéder, au bout d'un certain temps ça rend le code limite incompréhensible, difficile à comprendre, grosse perte de temps après, voir des maux de têtes.
De plus, si on sérialise, il faudra très certainement encoder la chaine, genre urlencode().
Le jour où il faudra soit faire évoluer cette partie, ou alors le déboguer, ça va être la croix et la bannière, et ça, rien que pour se remémorer ce qu'on a nous même fait.
N'en parlons pas pour celui qui passe derrière.

Un tableau c'est des couples de clés=valeurs, au même titre qu'une variable, elle a un nom et une valeur, au même titre qu'un input, un nom et une valeur.
De plus, faire une boucle, c'est franchement rien du tout, ça prend même pas 1 minute pour le faire, et à peine 1 minute de plus pour créer le formulaire.
Celui qui tentera de comprendre cette partie là, il prendra guère plus d'une minute tellement cela et simple est limpide.

Faut juste espérer que le tableau soit à une dimension.
S'il y en a plus, un format comme Json pourrait être une solution car Php intègre toutes les fonctions pour ça (json_encode, json_decode).

Ce que je veux dire par là, c'est que ce n'est pas parce qu'on a un tableau sous l'bras qu'il faille à tout prix le renvoyer comme il est, je drirais que ça dépend de ce qu'il doit être fait après.
S'il y a moyen de faire simple, pourquoi chercher compliquer ?


La dessus, BONNE ANNEE
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2011, 10h29   #8
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
Le faire une ou deux fois, passe encore, mais si on généralise un peu trop cette façon de procéder, au bout d'un certain temps ça rend le code limite incompréhensible, difficile à comprendre, grosse perte de temps après, voir des maux de têtes.
De plus, si on sérialise, il faudra très certainement encoder la chaine, genre urlencode().
Le jour où il faudra soit faire évoluer cette partie, ou alors le déboguer, ça va être la croix et la bannière, et ça, rien que pour se remémorer ce qu'on a nous même fait.
N'en parlons pas pour celui qui passe derrière.
Si on a peur de rendre le code incompréhensible, autant le commenter. (Cela dit, la boucle, même si je n'y avais pas pensé pour transmettre un tableau, c'est simple)
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 13h05   #9
Membre éclairé
 
Inscription : juin 2007
Messages : 336
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 336
Points : 392
Points : 392
Tu peu aussi imaginer générer un uniqueId ( propre à un visiteur) que tu passe par url, et stoker les données le concernant dans une base de donnée, pour ensuite pouvoir les faire évoluer

A voir
__________________
Conception / Dev
ascito est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h13.


 
 
 
 
Partenaires

Hébergement Web