IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

probleme avec $zip->addfile() ds une fonction


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 82
    Points : 114
    Points
    114
    Par défaut probleme avec $zip->addfile() ds une fonction
    Bonjour,
    J'espère poster au bon endroit, j'ai bien cherché, mais je ne trouve pas le truc qui coince :
    J'utilise zip.lib.php pour compresser un dossier , et quand je code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <?php 
    require_once('zip.lib.php');
    $dir = $_GET['fldr'];
    $zip = new zipfile();
    //function zipit($dir){
    	echo "<b><font color=#FF0000>".$dir."</font></b><br>";
    	$p = opendir($dir);
    	while($f=readdir($p)){
    		if(!is_dir($dir.$f)){
    			$fileVar = $dir.$f;
    			echo "".$fileVar."<br>"; 
    			$fp = fopen ($fileVar, 'r');
    			$content = fread($fp, filesize($fileVar));
    			fclose ($fp);
    			$zip->addfile($content, $fileVar);
    		}else if($f!="." && $f!="..")  {
    			$fileVar = $dir.$f."/";
    			echo "<b>".$fileVar."</b><br>";
    			//zipit($dir.$f."/");
    		}
    	}
    //} zipit($dir);
    /*	
    $archive = $zip->file();
    header('Content-Type: application/x-zip');
    header('Content-Disposition: inline; filename=Dump.zip');
    echo $archive;
    */
    ?>
    Cela fonctionne tres bien, mais si je met ça dans une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <?php 
    require_once('zip.lib.php');
    $dir = $_GET['fldr'];
    $zip = new zipfile();
    function zipit($dir){
    	echo "<b><font color=#FF0000>".$dir."</font></b><br>";
    	$p = opendir($dir);
    	while($f=readdir($p)){
    		if(!is_dir($dir.$f)){
    			$fileVar = $dir.$f;
    			echo "".$fileVar."<br>"; 
    			$fp = fopen ($fileVar, 'r');
    			$content = fread($fp, filesize($fileVar));
    			fclose ($fp);
    			$zip->addfile($content, $fileVar);
    		}else if($f!="." && $f!="..")  {
    			$fileVar = $dir.$f."/";
    			echo "<b>".$fileVar."</b><br>";
    			//zipit($dir.$f."/");
    		}
    	}
    } zipit($dir);
    /*	
    $archive = $zip->file();
    header('Content-Type: application/x-zip');
    header('Content-Disposition: inline; filename=Dump.zip');
    echo $archive;
    */
    ?>
    J'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /home/zozi/Desktop/Share/mnt/hdd1/SONS/Disco/
    /home/zozi/Desktop/Share/mnt/hdd1/SONS/Disco/168 The Temptations -- Papa Was a Rolling Stone (full version).mp3
     
    Fatal error: Call to a member function addfile() on a non-object in /home/zozi/Desktop/Share/mnt/37_gigollo/Negugoriak/home/zozizozu/www/supazoz.kicks-ass.org/upld.php on line 15
    J'a pô compris !°)
    C'est surement stupide pour pas voir ce qui ne va pas, j'y suis depuis 7h du mat et je ne comprend pas, j'espère que vous n'etes pas aussi fatigué que moi et que la solution est là, toute simple ....
    Merci de votre attention, et de votre indulgence,
    Cordialement,
    zoz

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 228
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 228
    Points : 8 487
    Points
    8 487
    Billets dans le blog
    17
    Par défaut
    $zip n'est pas défini dans ta fonction mais à l'extérieur de celle-ci, d'où le msg d'erreur.
    Il faut passer $zip en paramètre de la fonction ou l'initialiser à l'intérieur de la fonction.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 82
    Points : 114
    Points
    114
    Par défaut [RESOLU]
    Wahou, merci Seb,
    mais comment je suis passé à coté de ça ,j'ai les yeux ds la m...ouise .

    Voici donc le code qui fonctionne pour compresser tout un dossier en php (et pour référencer la réponse):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php 
    require_once('zip.lib.php');
    $dir = $_GET['fldr'];
    $zip = new zipfile();
    function zipit($zip, $dir){
    	//echo "<b><font color=#FF0000>".$dir."</font></b><br>";
    	$p = opendir($dir);
    	while($f=readdir($p)){
    		if(!is_dir($dir.$f)){
    			$fileVar = $dir.$f;
    			//echo "".$fileVar."<br>"; 
    			$fp = fopen ($fileVar, 'r');
    			$content = fread($fp, filesize($fileVar));
    			fclose ($fp);
    			$zip->addfile($content, $fileVar);
    		}else if($f!="." && $f!="..")  {
    			$fileVar = $dir.$f."/";
    			//echo "<b>".$fileVar."</b><br>";
    			zipit($zip, $dir.$f."/");
    		}
    	}
    } zipit($zip, $dir);
    $archive = $zip->file();
    header('Content-Type: application/x-zip');
    header('Content-Disposition: inline; filename=Dump.zip');
    echo $archive;
    ?>
    Merci encor, et promis, je dors avant mon prochain post.

    zoz

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 07/01/2008, 19h47
  2. [c#]probleme avec les menu toolStripItem dans une form mdi??
    Par must19 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/11/2006, 23h02
  3. Petit probleme avec les Border lors d'une sauvegarde
    Par Mike888 dans le forum Interfaces Graphiques en Java
    Réponses: 7
    Dernier message: 06/06/2006, 09h33
  4. Problème avec un .doc récupéré d'une BDD MySQL
    Par sansouna24 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/05/2006, 11h19
  5. Réponses: 7
    Dernier message: 20/03/2006, 12h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo