[RESOLU] mettre variables en tableau

Eléphant du PHP | 67 Messages

03 janv. 2013, 19:23

Bonjour à tous ...
Je me permets une fois encore de vous solliciter pour un petit problème ...
J'ai une petite procédure d'affichage du résultat de fichiers envoyés sur un serveur où les deux variables sont les suivantes:
$i : le nombre de fichiers envoyés (variable de 1 à 11)
$msg : le message correspondant au résultat de l'envoi (pas de fichier, ou fichier envoyé avec succès ou fichier trop volumineux, etc ...)
Je voudrais remplacer l'affichage echo "<br>$msg[$i]"; ci dessous par une mise en tableau des variables (en fonction du nombre de fichiers $i) et l'envoi de ce tableau dans l'url "majdb2.php?tableau" afin de l'afficher sur cette nouvelle page.
Par quelle instruction puis-je remplacer mon echo ... et comment récupérer ces données sur la nouvelle page ?
	// affichage confirmation
	for($i=0; $i<=count($msg); $i++)
		echo "<br>$msg[$i]";

echo "<SCRIPT language=javascript>document.location.href='majdb2.php';</SCRIPT>";
Un grand merci d'avance pour vos réponses et bonne année à tous
Philippe

ViPHP
xTG
ViPHP | 7331 Messages

03 janv. 2013, 20:38

Pour envoyer des variables PHP d'une page à une autre regardes du côté des sessions. ;)

Eléphant du PHP | 267 Messages

03 janv. 2013, 22:10

y a les fonctions serialize() et unserialize()

Eléphant du PHP | 67 Messages

04 janv. 2013, 01:28

Merci pour vos réponses ...
En fait, j'ai déjà un tableau : $msg[$i] puisque quand je fait un 'echo $msg[$i]' j'ai tous les messages qui s'affichent mais sur la page actuelle.
Je voulais juste passer ce tableau en variable url vers une seconde page et l'afficher sur cette seconde page.
J'ai testé serialize() / unserialize et urlencode() / urldecode() mais je ne m'en sort pas dans la syntaxe. L'echo (j'ai essayé r_print() aussi) sur la seconde page me renvoie soit ... rien, soit un truc du style array[12] ... normalement, j'ai presque toujours 10 ou 11 entrées dans cette table (jamais 12).
Un p'tit coup de pouce ?

Merci d'avance
Phil

ViPHP
xTG
ViPHP | 7331 Messages

04 janv. 2013, 09:16

Si tu as réussi à avoir un array c'est que cela a fonctionné.
Donc après faut plutôt regarder ce qu'il y a dedans et comprendre pourquoi tu as deux index de plus que ce que tu pensais. ;)

Eléphant du PHP | 67 Messages

04 janv. 2013, 13:10

Si tu as réussi à avoir un array c'est que cela a fonctionné.
Donc après faut plutôt regarder ce qu'il y a dedans et comprendre pourquoi tu as deux index de plus que ce que tu pensais. ;)
Merci xTG ... J'avance tout doucement ...
A présent j'ai un résultat :
Page source :
for($i=0; $i<=count($msg); $i++)
$var=serialize($msg);
echo "<SCRIPT language=javascript>
       document.location.href='majdb2.php?passage=$var';
</SCRIPT>";

Page target :
<?
$affich=unserialize($_GET['passage']);
echo $affich ;
?>
ne me renvoie rien mais
<?
$affich=$_GET['passage'];
echo $affich ;
?>
me renvoie ceci :
a:11:{i:0;s:15:\"Aucun fichier !\";i:1;s:15:\"Aucun fichier !\";i:2;s:15:\"Aucun fichier !\";i:3;s:15:\"Aucun fichier !\";i:4;s:15:\"Aucun fichier !\";i:5;s:15:\"Aucun fichier !\";i:6;s:15:\"Aucun fichier !\";i:7;s:15:\"Aucun fichier !\";i:8;s:15:\"Aucun fichier !\";i:9;s:15:\"Aucun fichier !\";i:10;s:15:\"Aucun fichier !\";}

Il y a bien mes 11 messages "Aucun fichier!" ... ce qui est normal.
Je dois juste savoir à présent comment faire pour n'afficher que les messages, sans leurs en-têtes (si on peut appeler ça comma ca)
Je continue à chercher mais si quelqu'un peut me dire où sont mes erreurs, ça fera avancer le schmilblick ... Merci d'avance

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

04 janv. 2013, 13:48

salut,

vu ton echo il te manque le début de la chaîne ( { par exemple) donc unserialize ne sais pas faire :).
Tu as quoi exactement dans ton url ?


pourquoi est ce que tu n'utilise pas les sessions php ?
c'est plus simple, tu ne t'emmerde pas avec la sérialisation.

il te "suffit" de mettre le tableau dans une variables de sessions, puis de la réutiliser ensuite.

coté code
1/ les tags php c'est <?php et pas <? si tu veux que ton application survive quelque soit le serveur (les tags courts n'étant pas le paramétrage par défaut ;) )
2/
<?php
for($i=0; $i<=count($msg); $i++)
$var=serialize($msg);
?>
la boucle n'a pas d’intérêt tu va faire la même action (sérialisation du tableau) autant de fois que tu as d'entrées dans ce tableau (s'il y en a 100000 c'est 99999 fois de trop ;) )
=> juste $var=serialize($msg);

3/ avec les sessions (sans oublier le session_start())
simplement : $_SESSION['resultat'] = $var;

sur la seconde page majdb2.php (pour affichage)
<?php
if( !empty($_SESSION['resultat'])) {
	foreach($_SESSION['resultat'] as $key => $result) {
		echo 'Le fichier N° '.$key . ' a poru résultat : ' . $result . '<br />';
	}
}
?>
@+
Il en faut peu pour être heureux ......

ViPHP
xTG
ViPHP | 7331 Messages

04 janv. 2013, 13:50

for($i=0; $i<=count($msg); $i++)
$var=serialize($msg);
est équivalent à :
$var=serialize($msg);
Ensuite vérifies plutôt de la sorte :
$affich=unserialize($_GET['passage']);
var_dump($affich);
Car tu as serialisé un array et donc tu récupères un array après la transformation.

Ton souci vient du fait que tu passes avec la chaîne serialisée des caractères qui ne sont pas fait pour une url.
url_encode() et url_decode() sont là pour ça.

Mais la méthode n'est pas faite pour cela, donc suis plutôt la méthode énoncée par moogli. ;)

Eléphant du PHP | 67 Messages

04 janv. 2013, 16:57

Merci à tous ...
Ca roule avec les sessions ... nickel
... et je ne vais pas oublier de modifier toutes mes balises <? par <?php ... j'ignorais qu'il y avait une différence. Merci pour l'info

Philippe