Page 1 sur 1

Créer un zip avec des pdf issue d'une base de données

Posté : 11 juil. 2016, 13:56
par kevin254kl
Bonjour à tous, pourriez vous m'aider?

Je cherche à créer un zip depuis des fichier en base de données, exemple:

Code : Tout sélectionner

$req_fichier = "SELECT ID_FICHIER_DM,LABEL_FICHIER_DM FROM POP_FICHIER_DM WHERE ID_DM = ".$_GET['id_dm']." AND ID_TYPE_FICHIER_DM = 3"; $sta_fichier = oci_parse($conn, $req_fichier); oci_execute($sta_fichier,OCI_COMMIT_ON_SUCCESS); while($fichier= oci_fetch_assoc($sta_fichier)) { echo "<a href='document/dm.php?id_fichier=".$fichier['ID_FICHIER_DM']."' onclick='window.open(this.href); return false;'>"; echo "<label style='float:left;margin-top:8px;' class='lien'>".$fichier['LABEL_FICHIER_DM']."</label>"; echo "</a>"; echo "<br class='br'/>"; }
ici j'affiche le lien de mes fichier pour les télécharger.

Code : Tout sélectionner

$zip = new ZipArchive; if ($zip->open('test.zip') === TRUE) { $zip->addFile(); $zip->close(); } else { echo 'échec'; }
il faut j'utilise l'id pour qu'il récupère le fichier avec addfile? Merci à vous

Re: Créer un zip avec des pdf issue d'une base de données

Posté : 11 juil. 2016, 14:04
par moogli
salut,

le contenu du fichier est dans la base ? is oui http://php.net/manual/fr/ziparchive.addfromstring.php
Tu veux mettre un ou plusieurs fichiers dans l'archive ?

Le code fournit ne permet pas de lever le doute.
Si tes liens doivent mener vers la génération de l'archive alors oui il faut l'id dans l'url ou en post pour savoir quel fichier prendre.
si c'est pour plusieurs fichier ou faut utiliser la fonction que j'ai mis plus haut dans la boucle while de traitement de la requête SQL mais surtout pas mettre un zip->open() dans la boucle (inutile et anti performant ;) ).


@+

Re: Créer un zip avec des pdf issue d'une base de données

Posté : 11 juil. 2016, 14:36
par kevin254kl
Super merci, voilà mon code si ça peut servir

Code : Tout sélectionner

<?php $zip = new ZipArchive; $res = $zip->open('Fichiers_affaires.zip', ZipArchive::CREATE); ?> <fieldset class="fs couleur4"> <legend class="fs_legende"><?php echo T_("Fichier"); ?></legend> <div style="float:left;"> <label class="label4"><?php echo T_("Autre"); ?></label> <br class="br"/> <?php $req_fichier = "SELECT ID_FICHIER_DM,LABEL_FICHIER_DM FROM POP_FICHIER_DM WHERE ID_DM = ".$_GET['id_dm']." AND ID_TYPE_FICHIER_DM = 3"; $sta_fichier = oci_parse($conn, $req_fichier); oci_execute($sta_fichier,OCI_COMMIT_ON_SUCCESS); while($fichier= oci_fetch_assoc($sta_fichier)) { $zip->addFromString($fichier['LABEL_FICHIER_DM'], $fichier['ID_FICHIER_DM']); echo "<a href='document/dm.php?id_fichier=".$fichier['ID_FICHIER_DM']."' onclick='window.open(this.href); return false;'>"; echo "<label style='float:left;margin-top:8px;' class='lien'>".$fichier['LABEL_FICHIER_DM']."</label>"; echo "</a>"; echo "<br class='br'/>"; } ?> </div> </fieldset> <?php $zip->close(); echo "<a href='Fichiers_affaires.zip'>"; echo "<label style='float:left;margin-top:8px;' class='lien'>Fichiers affaires</label>"; echo "</a>"; ?>