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

Eléphant du PHP | 385 Messages

11 juil. 2016, 13:56

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

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

11 juil. 2016, 14:04

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


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

Eléphant du PHP | 385 Messages

11 juil. 2016, 14:36

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