Enregistrer plusieurs variables dans une seule variable et les lire

Petit nouveau ! | 1 Messages

28 déc. 2007, 13:43

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

ViPHP
ViPHP | 5924 Messages

28 déc. 2007, 13:47


machinerie111
Invité n'ayant pas de compte PHPfrance

28 déc. 2007, 14:03

Donc en fait si je fais sa :
$variable=array(1=>$variable1, 2=>$variable2); echo $variable[1]; cela m'affichera $variable1?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 déc. 2007, 14:05

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Débuter en PHP".

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 déc. 2007, 19:23

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 :P

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

machinerie111
Invité n'ayant pas de compte PHPfrance

28 déc. 2007, 22:11

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

Eléphant du PHP | 185 Messages

28 déc. 2007, 22:27

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.

machinerie111
Invité n'ayant pas de compte PHPfrance

28 déc. 2007, 22:53

Et pour lire sur les autres pages la variable a de var_global je fais comment dans ce cas là?

ViPHP
ViPHP | 928 Messages

28 déc. 2007, 22:55

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 ..

machinerie111
Invité n'ayant pas de compte PHPfrance

28 déc. 2007, 23:21

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?

Eléphant du PHP | 185 Messages

28 déc. 2007, 23:44

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;
?>

machinerie111
Invité n'ayant pas de compte PHPfrance

29 déc. 2007, 01:11

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...

Eléphant du PHP | 185 Messages

29 déc. 2007, 01:27

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.

machinerie111
Invité n'ayant pas de compte PHPfrance

29 déc. 2007, 11:42

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?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

29 déc. 2007, 12:05

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...