Page 1 sur 2
Enregistrer plusieurs variables dans une seule variable et l
Posté : 28 déc. 2007, 13:43
par machinerie11
Bonjour,
Je cherche un moyen d'enregistrer des variables dans une seule variable et ensuite de lire une de ces variables par exemple. j'ai trouvé un exemple de ce ty pe sur internet :
$variable1= variable1 : ".$variable1'." - variable2 : ".$variable2."; ou quelque chose comme sa.
j'aurai donc voulu savoir la ligne exacte à utiliser pour enregistrer plusieurs variables dans une seule et comment lire à partir de $variable variable1 ou variable2. Merci d'avance
Posté : 28 déc. 2007, 13:47
par Sékiltoyai
re
Posté : 28 déc. 2007, 14:03
par machinerie111
Donc en fait si je fais sa :
$variable=array(1=>$variable1, 2=>$variable2); echo $variable[1]; cela m'affichera $variable1?
Posté : 28 déc. 2007, 14:05
par Truc
Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Débuter en PHP".
Re: re
Posté : 28 déc. 2007, 19:23
par Ryle
Donc en fait si je fais sa :
$variable=array(1=>$variable1, 2=>$variable2); echo $variable[1]; cela m'affichera $variable1?
Le plus simple aurait été de l'essayer pour le constater
Pour être précis, cela t'affichera uniquement la valeur qu'avait $variable1 au moment où tu l'as enregistrée dans le tableau. La nuance est faible, mais cela veut dire que si ta variable $variable1 est modifiée par la suite cela n'impactera pas la valeur de $variable[1] contenue dans le tableau.
Mais sinon, c'est bien ça

re
Posté : 28 déc. 2007, 22:11
par machinerie111
Bonsoir et merci,
En fait mon problème avec cette solution de tableau c'est que je ne peux transmètre la variable principale en post pour ensutie pouvoir accèder sur les autres pages aux variables de $variable... Que proposez-vous? merci
Posté : 28 déc. 2007, 22:27
par Kaoteknik
Admettons que ton tableau $tableau contienne plusieurs variables...
$var1 = 1;
$var2 = 2;
$var3 = 3;
$tableau = array (a => $var1, b => $var2, c => $var3);
$tableau pourrait aussi être décomposé comme suit :
$tableau['a'] = 1;
$tableau['b'] = 2;
$tableau['c'] = 3;
Si par la suite tu veux transmettre une variable qui contiendra les différentes valeurs du tableau, il te suffira de lui affecter chacune d'entre-elles en les concatenant :
$var_globale = $tableau['a'].$tableau['b'].$tableau['c'];
Ainsi tu pourras transmettre la valeur de toutes les variables à partir d'une variable "globale" unique.
re
Posté : 28 déc. 2007, 22:53
par machinerie111
Et pour lire sur les autres pages la variable a de var_global je fais comment dans ce cas là?
Posté : 28 déc. 2007, 22:55
par Genova
Pour cela tu dois la sauver quelque part si tu veux la lire ailleurs :
- En session
- Dans une base de donnée
- Dans un fichier
- La passer en GET ou en POST d'une page à l'autre
etc ..
re
Posté : 28 déc. 2007, 23:21
par machinerie111
pour la passer n'est pas mon soucis. Ma question est pour la lire si par exemple dans ton code je veux lire la variable a de $var_global je fais quoi une fois récupéré en post echo $var_global[a]; par exemple?
Posté : 28 déc. 2007, 23:44
par Kaoteknik
Déjà si tu utilises $var_globale['a'] tu n'obtiendras aucun résultat, puisque cette variable n'est pas un tableau (elle contient le résultat de plusieurs variables issues d'un tableau, mais est déclarée elle-même comme une simple variable scalaire).
Par conséquent si tu souhaites transmettre le contenu de la variable globale et l'afficher, ça pourrait donner ceci (ce n'est qu'un exemple) :
<?php
$var_globale = $tableau['a'].$tableau['b'].$tableau['c'];
?>
<form method="post" action="<?php echo $PHP_SELF; ?>">
<input type="hidden" name="mon_texte" value="<?php echo $var_globale; ?>" />
<input type="submit" name="submit" value="submit />
<?php
$resultat = $_POST['mon_texte'];
echo $resultat;
?>
re
Posté : 29 déc. 2007, 01:11
par machinerie111
Donc on revient bien, c'est pas possible avec cette méthode donc de faire passer un tableau en post puisque si je met $var_globale en value dans le formulaire je ne pourrai pas consulter une des 3 variables de $var_globale...
Posté : 29 déc. 2007, 01:27
par Kaoteknik
Si, c'est possible...
Etant donné que $var_globale contiendra
toutes les valeurs du tableau généré précedemment, tu pourras plus loin isoler chacune d'entre-elles. Une méthode serait d'utiliser la fonction explode sur la variable $resultat, ce qui génèrera un nouveau tableau :
<?php
$var_globale = $tableau['a'] .' '. $tableau['b'] .' '. $tableau['c'];
?>
<form method="post" action="<?php echo $PHP_SELF; ?>">
<input type="hidden" name="mon_texte" value="<?php echo $var_globale; ?>" />
<input type="submit" name="submit" value="submit />
<?php
$resultat = $_POST['mon_texte'];
echo $resultat;
$new_result = explode (' ', $resultat);
foreach ($new_result as $var_isolee) {
echo $var_isolee;
}
?>
Tout ceci devrait fonctionner, mais c'est plutôt tiré par les cheveux et j'avoue avoir un peu de mal à comprendre ce que tu souhaites obtenir comme résultat au final.
re
Posté : 29 déc. 2007, 11:42
par machinerie111
Je vais essayer un peu plus de t'expliquer
Je sors d'une base de donnée plein de variable $prenom $nom et $email par exemple. j'en fais un tableau :
$tableau=array(1=>$prenom, 2=>$nom, 3=>$email);
là sur cette page si je fais echo $tableau[1]; j'ai le prénom du type qui s'affiche.
Mon but et mon soucis est là, je veux transmètre $tableau en post afin de faire sur une autre page un echo $tableau[1] sorti en post...
mon soucis là est que si je fais un <input type="hidden" name="tableau" value="<?php echo $tableau;?>"> en post sur l'autre page mon $_POST['tableau'] me donne array et donc je ne peux faire echo $tableau[1]; tu comprends?
Posté : 29 déc. 2007, 12:05
par Ryle
La meilleure solution pour conserver des informations d'une page à une autre consiste à utiliser les sessions. Elles sont très simples à utiliser, il suffit de faire appel à start_session() pour la démarrer et tu peux ensuite utiliser le tableau $_SESSION comme s'il était commun à toutes tes pages (tu peux donc y stocker les données de ta base et les lire dans une autre page)
Tu peux aussi faire suivre les données en get ou en post, mais lorsqu'il s'agit d'un tableau, pour que cela fonctionne, il te faut linéariser celui-ci en utilisant la fonction serialize() (et unserialize() sur l'autre page pour le délinéariser), mais ça ne vaut pas la session
