[Résolu] : Nommer un fichier avec variable de session

Petit nouveau ! | 6 Messages

30 janv. 2011, 20:53

Bonjour à vous,
Je serai reconnaissant à la personne qui pourra m'aider à résoudre ce problème.
je vous donne une idée sur mon soucis, je souhaite nommer des fichiers excel que je crée à travers une variable de session déclarée auparavant qui vient d'un formulaire.
La variable de session est dèja déclarée précedement dans le script :
$_SESSION['raisonsociale']=$_POST['raisonsociale'];

je vous donne le bout de code qui correspond à ça :

Code : Tout sélectionner

if(isset($_POST['submit2'])){ $xls=".xls"; $nomfichierexcel2='partenaires/contacts_' . $_SESSION['raisonsociale'] . $xls . ''; $fp = fopen("$nomfichierexcel2",'w+'); file_put_contents("$nomfichierexcel2","contenu du fichier",FILE_APPEND | LOCK_EX); $z2 = new PHPZip(); $files[]=$nomfichierexcel2; $z2 -> Zip($files, 'partenaires/' . $_SESSION['raisonsociale'] . '.zip'); @unlink("$nomfichierexcel2"); }
Le problème c'est que, quand je consulte les fichiers créés sur serveur, j'ai un blanc à la place de la variable de session.

Merci beaucoup pour l'aide que vous pouvez m'apporter.
Modifié en dernier par hardose le 31 janv. 2011, 02:30, modifié 1 fois.

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

30 janv. 2011, 23:14

salut,

1/ fil_put_content ne prend pas de ressource fichier en paramètre mais une chaine de caractère la doc
2/ton code peut largement être réduit
<?php
if(isset($_POST['submit2'])){
file_put_contents('partenaires/contacts_' . $_SESSION['raisonsociale'] . '.xls' ,"contenu du fichier",FILE_APPEND | LOCK_EX);              
   $z2 = new PHPZip();
   $z2 -> Zip(array('partenaires/contacts_' . $_SESSION['raisonsociale'] . '.xls'), 'partenaires/' . $_SESSION['raisonsociale'] . '.zip');
   @unlink("$nomfichierexcel2");
}
?>
je ne connais pas ta classe PHPZip (et n'ai pas cherché) mais faut iol vraiment passer un tableau en paramètre ? au pire tu peut faire comme ci dessus.

le problème des noms de fichier pas bon est donc dû à la mauvaise utilisation de fil_put_contents ;)


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 6 Messages

30 janv. 2011, 23:41

Merci beaucoup pour ta réponse, alors je viens de tester le code que tu m'as mis et ça ne change toujours rien je suis sûr et certain que le problème vient de la récupération de la variable de session, je sais pas pourquoi il la met pas dans le nom du fichier, et pourtant ça signale pas d'erreur !, il me semble que l'affichage de la variable de session renvois pas la valeur récupérée mais ça renvoit un vide, puisque sur le nom du fichier j'ai que l'extension precedée d'un vide.

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

31 janv. 2011, 00:38

dasn ce cas un var_dump($_SESSION); te donnera une idée du contenu.

a tu mis le session_start()?

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 6 Messages

31 janv. 2011, 00:56

pour session_start() oui bien sur je l'ai mis au début de ma page avant tout code php ou html.
j'ai testé sur l'id de session et j'ai trouvé le même id.
là je vais voir sur var_dump et te dire ce que ça va donner.
Merci beaucoup.

Petit nouveau ! | 6 Messages

31 janv. 2011, 01:02

une information de plus là, les formulaires se trouvent sur la même page mais dans des onglets differents, et je me sert d'une valeur du premier formulaire pour nommer des fichiers et les mettre dans le même fichier zip que celui du premier formulaire.

j'ai testé avec la valeur du champ de text advancia
ça a donné à la validation du premier formulaire : array(1) { ["raisonsociale"]=> string(8) "advancia" }

mais quand j'ai validé le deuxième formulaire ça a donné : array(1) { ["raisonsociale"]=> NULL }

là y a un soucis !!

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

31 janv. 2011, 01:15

donc y a un problème dans la gestion des formulaires.

je ne vois pas l’enchaînement, faudrait nous mettre le code complet afin que l'on puisse jeter un oeil.


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 6 Messages

31 janv. 2011, 01:49

OUUfff problème résoluuu partiellement

la solution était de mettre la variable de session à l'interieur du submit du premier formulaire.
maintenant il me reste un seul soucis, c'est qu'au lieu que les fichiers des formulaires se mettent à l'interieur du même zip, le zip est remplacé après chaque création de fichier :s

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

31 janv. 2011, 02:00

sans code on ne pourras t'aider +


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 6 Messages

31 janv. 2011, 02:28

Merci infiniment à toi moogli, tu m'as mis sur la bonne route, je marque le sujet comme résolu, pour toute personne qui autre le même problème que moi :
la solution était de mettre ma variable de session à l'interieur du submit :
je note un exemple de code :

Code : Tout sélectionner

if(isset($_POST['submit']){ $_SESSION['raisonsociale']=$_POST['raisonsociale']; }
Quant à la solution pour le deuxième problème du fichier zip qui se remplace au lieu de se mettre à jour, j'ai récupéré les noms de fichiers créés à la validation de chaque formulaire et je les ai mises dans des variables de session, et j'ai réservé la compression jusqu'à la dernière étape pour les compresser tous en une seule fois.

voilà, un trés grand merci à moogli qui m'a vraiment mis sur le bon chemin =D>