Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 16/08/2011, 10h52   #1
Invité de passage
 
Homme Gérard Philipo
Étudiant
Inscription : juillet 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Gérard Philipo
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juillet 2011
Messages : 10
Points : 3
Points : 3
Par défaut Multi download .text

Bonjour,

Mon probleme est que je récupere des donnés par une requete SQL qui dépent de ce que l'utilisateur à cocher dans une 1ere page (à savoir une ou plusieurs langues et des données particulieres dans ces langues).
J'aimerais créer pour chacune des langues un fichier texte avec les traductions selon les critères de l'utilisateur.
Pour l'instant je récupere toutes ces données dans un unique fichier.

J'ai essayé de faire une boucle de telle façon a ce que la commande pour creer le fichier soit réutilisé mais en vain...
Avec ce code, mon unique fichier est bel est bien implémenter de toute les données mais un seul fichier créé...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
$d=0;
while ($d<sizeof($id_langue))
{
RECOVERING OF DATA
 
		header('Content-Description: File Transfer');
		header('Content-Type: application/octet-stream');
		header('Content-Disposition: attachment; filename="'.ucfirst($id_lange[$d]).'.text";');
 
$output_text .= $data[$element];
}
$d++;
J'ai tenté de regénéré la page avec un header('Refresh: 5'); mais sans succès.
L'url de la page dépent des choix de l'utilisateur donc faire un header(Location) serait quasi infaisable.

Cordialement.
gege48 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 11h26   #2
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 772
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 772
Points : 2 329
Points : 2 329
Bonjour,

Que contient $id_langue ?
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 11h55   #3
Invité de passage
 
Homme Gérard Philipo
Étudiant
Inscription : juillet 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Gérard Philipo
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juillet 2011
Messages : 10
Points : 3
Points : 3
$id_langue est un array contenant les id des langues sélectionnés à la page précedente.
gege48 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 12h07   #4
Membre régulier
 
Inscription : avril 2009
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 83
Points : 96
Points : 96
Bonjour,

tu pourrais créer une archive zippée contenant tous les fichiers de langue, ainsi tu n'auras qu'un seul fichier à télécharger mais qui contient tous tes fichiers.

cette solution te convient-elle ?
anthony89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 12h10   #5
Membre régulier
 
Inscription : avril 2009
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 83
Points : 96
Points : 96
re,

je viens de regarder ton code, es-tu certain qu'il fonctionne ?
en effet, tu fais une boucle while mais ton incrémentation $d se trouve en dehors de la boucle
anthony89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 12h36   #6
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
anthony89 est pas loin de la vérité. Il est impossible de renvoyer plusieurs fichiers avec une seule requete. L'archive zip est la seule solution.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 15h11   #7
Invité de passage
 
Homme Gérard Philipo
Étudiant
Inscription : juillet 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Gérard Philipo
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juillet 2011
Messages : 10
Points : 3
Points : 3
Oui pardon, j'ai changé de code entre temps mais sans succès.

La solution du fichier .zip me va a merveille, cependant, je ne sais pas comment faire pour le créer et l'implémenter de chaque .text selon les choix de l'utilisateur.

Pouvez vous m'aider ?
gege48 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 15h29   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
tu peux faire ça grâce a ZipArchive et addFromString
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 17h48   #9
Invité de passage
 
Homme Gérard Philipo
Étudiant
Inscription : juillet 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Gérard Philipo
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juillet 2011
Messages : 10
Points : 3
Points : 3
Merci.

Je dois rater quelque chose :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
$zip = new ZipArchive;
$d=0;
while ($d<sizeof($id_langue))
{
$filename = "test.zip";
$res = $zip->open($filename, ZipArchive::CREATE);	
 
DATA SQL
 
$zip->addFromString('"'.$id_lange[$d].'".text',"'.$output_text.'");
$d++;
}
header('Content-type: application/zip'); 
header('Content-Disposition: attachment; filename="' . $filename . '"'); 
header("Content-length: " . filesize($filename)); 
 
$zip->close();
Je telecharge une archive test.zip corrompue...
Une idée ?
Merci encore.
gege48 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 17h52   #10
Membre confirmé
 
Inscription : juillet 2011
Messages : 146
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2011
Messages : 146
Points : 253
Points : 253
Ton fichier zip doit être enregistrer quelque part puis tu renvoie le contenu de ce fichier zip.
Tolriq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 17h53   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
et ton ouverture de zip doit se faire avant la boucle, je te conseil de parcourir ton tableau avec un foreach
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 12h30   #12
Invité de passage
 
Homme Gérard Philipo
Étudiant
Inscription : juillet 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Gérard Philipo
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juillet 2011
Messages : 10
Points : 3
Points : 3
Tout d'abord, merci de vos aides

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$zip = new ZipArchive;
$filename = "Langues.zip";
$res = $zip->open($filename, ZipArchive::CREATE);
foreach($id_langue as $value)
{
$sql ="SELECT...
 
$file2 = "$value.text";
$zip->addFromString($file2, $output_text);
header('Content-type: application/zip'); 
header("Content-Transfer-Encoding: binary"); 
header("Content-length: ".filesize($filename)); 
header('Content-Disposition: attachment; filename="'.$filename.'"');
}
$zip->close();
readfile($filename);
Le 2eme code me donne le meme resultat...
Code :
1
2
3
4
5
6
7
8
9
10
 
$file2 = "$value.text";
$zip->addFromString($file2, $output_text);
}
$zip->close();
header('Content-type: application/zip'); 
header("Content-Transfer-Encoding: binary"); 
header("Content-length: ".filesize($filename)); 
header('Content-Disposition: attachment; filename="'.$filename.'"');
readfile($filename);
Mon fichier se télécharge bien dans Téléchargement, donc je ne pense pas devoir définir un emplacement si?
Le problème est que mon .zip garde en mémoire tout ce qu'il a intégré comme fichier...
Si je change le $filename, le resultat est bon.. mais si je refais en changeant les langues, les nouvelles langues s'ajoutent à ma nouvelle archive $filename(1).zip
Un flush(); après le readfile n'y fait rien...
gege48 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 12h54   #13
Membre régulier
 
Inscription : avril 2009
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 83
Points : 96
Points : 96
Bonjour,

as-tu essayé de supprimer le fichier zip avant de l'utiliser ?
la fonction est unlink()
tu dois la passer avant l'appel du constructeur ZipArchive

pourras-tu nous tenir informé ?
anthony89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 14h23   #14
Invité de passage
 
Homme Gérard Philipo
Étudiant
Inscription : juillet 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Gérard Philipo
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Matériel informatique

Informations forums :
Inscription : juillet 2011
Messages : 10
Points : 3
Points : 3
Impeccable.

Code :
1
2
3
4
5
 
$filename = "Langues.zip";
unlink($filename);
$zip = new ZipArchive;
$res = $zip->open($filename, ZipArchive::CREATE);
Plus de problème (enfin.. Il me reste à changer les ID en nom pour le nom du fichier).

Merci à tous.
gege48 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h44   #15
Membre régulier
 
Inscription : avril 2009
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 83
Points : 96
Points : 96
re-bonjour,

de rien, on est là pour ca.
oublies pas le bouton "résolu".
Merci.
anthony89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h17.


 
 
 
 
Partenaires

Hébergement Web