cmt faire si fichier existe => ouvrir, sinon ouvrir un au

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : cmt faire si fichier existe => ouvrir, sinon ouvrir un au

par Nico128 » 17 juil. 2005, 14:26

Yes ca marche du tonnère ! Il me reste plus qu'à fignoler tous ça !

En tout ca merci beaucoup à tous !! :D :D

@++

par Invité » 17 juil. 2005, 14:00

Oui j'avai compris, je savais quon ne pouvais pas l'ouvrir comme un fichier text, et qu'on devais introduire la variable dans les balise html pour afficher l'image :lol: mais merci de me l'avoir quand meme dit ! :P

Je vais tester ton code, merci !

par kmeleon » 17 juil. 2005, 01:49

Alors deux question. Regarde bien ton code, est-ce que ta variable $type est déclarée ??? Est-ce que une image est un fichier texte ? :shock:
        if (file_exists($rep_i.$file.".gif"))
        {
            // Si l'image correspondant existe dans le répertoire $rep
            $open = fopen($rep_i.$file.".gif","r");
            while (!feof($open))
            { // Tant qu'on a pas atteind la fin du fichier
            echo "image existe";  // Affiche la qq'ch
            }
        }
        else
        { // Si pas de description
        echo "<br>image existe pas";
        }
Tu te rend compte le nombre de ligne qu'il y a dans une image jpeg ???
Lol d'accord tu comprend rien à ce que je dis, je vais t'expliquer. Tout vas bien !!! :wink:
Bon tu veut tester si l'image existe et l'afficher. Pour la description, tu veut vérifier si le fichier de description existe et l'afficher. Seulement le fichier de description est un fichier texte, et la fonction:
$open = fopen($rep_d.$file.".txt","r");
            while (!feof($open))
            { // Tant qu'on a pas atteind la fin du fichier
            echo "<br>".fgets($open, 4096);  // Affiche la description contenue dans le fichier $rep_d.$file.".txt"
            } 
Lit une par une les lignes du fichier texte et les affiche.
MAIS une image n'est pas un fichier texte (nan ! c'est vrai ?) et donc tu ne peut pas ouvrir l'image, afficher chaque ligne, puis dire que le fichier existe et ainsi de suite.

Donc malgré tout ce charabia, voici le code définitif (commenté :wink:):
<?php
$rep_i = "répertoire_des_images/"; // Le répertoire images
$rep_d = "répertoire_des_descriptions/"; // Le répertoire descriptions
$handle=opendir('.'); // On ouvre le répertoire courant
while (false !== ($file = readdir($handle))){ // Lit le contenu du dossier
    if (is_file($file)) { // Si $file est un fichier
        if (file_exists($rep_d.$file.".txt")) {  // Si le fichier correspondant existe dans le répertoire $rep
            $open = fopen($rep_d.$file.".txt","r"); // On ouvre le fichier texte
            while (!feof($open)) { // Tant qu'on a pas atteind la fin du fichier (dernière ligne)...
            echo "<br>".fgets($open, 4096);  // ... on lit ligne une ligne et on affiche le contenu.
            }
fclose($open); // On ferme le fichier texte
        }
        else
        { // Si pas de description correspondante
        echo "<br>Aucune description"; // Devine !
        }
        
        if (file_exists($rep_i.$file.".gif")) // Si l'image correspondante existe dans le dossier image
        {
echo "<img src=\"".$rep_i.$file.".gif"."\">"; // On affiche l'image
        }
        else
        { // Si pas d'image correspondante
        echo "<br>image existe pas"; // Redevine !
        }
        
    }
}
closedir($handle); // On ferme le dossier "." (dossier courant)
?>
Voilà j'espère que tu as compris... :wink:

Bonne soirée

par Invité » 16 juil. 2005, 01:15

Je viens de regarder le titre du sujet, enfaite il est pas encore totalement résolu...

par Nico128 » 15 juil. 2005, 22:06

J'aimerais vite faire encore quelque chose, c'est exactement la meme chose sauf qu'au lieu d'afficher avec un txt, jaimerais afficher une image.

Alors jai un peu repris et ca donne :
<?php
$rep_i = "répertoire_des_images/";
$rep_d = "répertoire_des_descriptions/";
$handle=opendir('.');
echo "Pointeur de dossier: $handle<BR>\n";
echo "Fichiers:<BR>\n";
while (false !== ($file = readdir($handle)))
{
    if (is_file($file))
    {
        $taille = filesize($file);
        $date = filemtime($file);
        echo "<br /><img src = ".$type."><a href=\"".$file."\">".$file."</a> - $taille octets<br />";
        echo "$filename  modifier le : " . date ("d F Y H:i:s.", filemtime($file));
        echo "<br />";
        if (file_exists($rep_d.$file.".txt"))
        {
            // Si le fichier correspondant existe dans le répertoire $rep
            $open = fopen($rep_d.$file.".txt","r");
            while (!feof($open))
            { // Tant qu'on a pas atteind la fin du fichier
            echo "<br>".fgets($open, 4096);  // Affiche la description contenue dans le fichier $rep_d.$file.".txt"
            }
fclose($open); // Il fallait déplacer le fclose()
        }
        else
        { // Si pas de description
        echo "<br>Aucune description";
        }
		
		if (file_exists($rep_i.$file.".gif"))
        {
            // Si l'image correspondant existe dans le répertoire $rep
            $open = fopen($rep_i.$file.".gif","r");
            while (!feof($open))
            { // Tant qu'on a pas atteind la fin du fichier
            echo "image existe";  // Affiche la qq'ch
            }
        }
        else
        { // Si pas de description
        echo "<br>image existe pas";
        }
		
    }
}
closedir($handle);
?>
Ca marche, sauf quand l'image .gif existe, ca mets à l'infinie "image existe", jaimerais juste mettre ça une fois.

Sinon vous aller me dire que ca ne va pas afficher l'image, mais je fait pas-à-pas.

merci df'avance

par Invité » 15 juil. 2005, 20:39

Merci ca marche du tonnère !!!!! :D :D :D :D

Merci infiniment !!

par kmeleon » 15 juil. 2005, 19:59

Code : Tout sélectionner

<?php $rep_d = "répertoire_des_descriptions/"; $handle=opendir('.'); echo "Pointeur de dossier: $handle<BR>\n"; echo "Fichiers:<BR>\n"; while (false !== ($file = readdir($handle))) { if (is_file($file)) { $taille = filesize($file); $date = filemtime($file); echo "<br /><img src = ".$type."><a href=\"".$file."\">".$file."</a> - $taille octets<br />"; echo "$filename modifier le : " . date ("d F Y H:i:s.", filemtime($file)); echo "<br />"; if (file_exists($rep_d.$file.".txt")) { // Si le fichier correspondant existe dans le répertoire $rep $open = fopen($rep_d.$file.".txt","r"); while (!feof($open)) { // Tant qu'on a pas atteind la fin du fichier echo "<br>".fgets($open, 4096); // Affiche la description contenue dans le fichier $rep_d.$file.".txt" } fclose($open); // Il fallait déplacer le fclose() } else { // Si pas de description echo "<br>Aucune description"; } } } closedir($handle); ?>
Voilà il suffisait juste de déplacer le fclose() du fichier de description.

Bonne soirée :wink:

par Invité » 15 juil. 2005, 19:28

Jai rajouté la parentèse qui manquais. Quand j'ajoute pas de fichier ca majoute bien "aucune description" mais dès que je mets un fichier txt ca m'affiche son contenu, + encore une liste d'erreur qui n'en fini pas :
Warning: feof(): 3 is not a valid stream resource in /home/www/517421f0ca8e8940110726410aa45186/web/test/fichiers-descriptions/fichier-desc.php on line 27

Warning: fgets(): 3 is not a valid stream resource in /home/www/517421f0ca8e8940110726410aa45186/web/test/fichiers-descriptions/fichier-desc.php on line 29


Warning: fclose(): 3 is not a valid stream resource in /home/www/517421f0ca8e8940110726410aa45186/web/test/fichiers-descriptions/fichier-desc.php on line 30
Merci beaucoup pour ce que vous faite ! C'est super sympa :D

par rami » 15 juil. 2005, 18:21

Personnellement, je préfère utiliser la fonction glob.
Ca fait gagner quelques lignes de code et permet de sélectionner plus rapidement les fichiers à sélectionner par un pattern.

par Cyrano » 15 juil. 2005, 18:17

Indentez donc proprement votre code et vous trouverez beaucoup plus rapidement l'erreur.
<?php
$rep_d = "répertoire_des_descriptions/";
$handle=opendir('.');
echo "Pointeur de dossier: $handle<BR>\n";
echo "Fichiers:<BR>\n";
while (false !== ($file = readdir($handle)))
{
    if (is_file($file))
    {
        $taille = filesize($file);
        $date = filemtime($file);
        echo "<br /><img src = ".$type."><a href=\"".$file."\">".$file."</a> - $taille octets<br />";
        echo "$filename  modifier le : " . date ("d F Y H:i:s.", filemtime($file));
        echo "<br />";
        if (file_exists($rep_d.$file.".txt") //<== Ce n'est pas l'accolade suivante qui est en trop, il manque une parenthèse
        {
            // Si le fichier correspondant existe dans le répertoire $rep
            $open = fopen($rep_d.$file.".txt","r");
            while (!feof($open))
            { // Tant qu'on a pas atteind la fin du fichier
            echo "<br>".fgets($open, 4096);  // Affiche la descriptions contenue dans le fichier $rep_d.$file.".txt"
            fclose($open);
            }
        }
        else
        { // Si pas de description
        echo "<br>Aucune description";
        }
    }
}
closedir($handle);
?>

par kmeleon » 15 juil. 2005, 17:40

Désolé mais j'ai pas le temps de vérifier le code.
C'est pas dur tu regarde si chaque { a son }, et plus particulièrement à la ligne 23 :wink:

Bonne journée

par NoNos » 15 juil. 2005, 17:39

Il me semble qu'il faut que tu vire la dernière accolade elle est en trop. Si tu veux comprendre quelque chose en php il faut commencé par des truc simple (pas la gestion de fichier) visiter les sites comme phpdebutant et peut etre aller faire un tour chez un libraire acheter un bouquin (pour moi c le meilleur moyen de comprendre.

par Nico128 » 15 juil. 2005, 17:29

Merci ! J'ai essayer, mais ya une ptite erreur :
Parse error: parse error, unexpected '{' in /home/www/517421f0ca8e8940110726410aa45186/web/test/fichiers-descriptions/fichier-desc.php on line 23
Ca doit pas etre grand chose...mais je suis tellement nul que j'arrive pas a la résoudre :cry:

par kmeleon » 12 juil. 2005, 13:33

<?php
$rep_d = "répertoire_des_descriptions/";
$handle=opendir('.');
echo "Pointeur de dossier: $handle<BR>\n";
echo "Fichiers:<BR>\n";
while (false !== ($file = readdir($handle)))
{
  if (is_file($file)) {
    $taille = filesize($file);
    $date = filemtime($file);
    echo "<br /><img src = ".$type."><a href=\"".$file."\">".$file."</a> -
    $taille octets<br />";
    echo "$filename  modifier le : " . date ("d F Y H:i:s.", filemtime($file));
    echo "<br />";
    if (file_exists($rep_d.$file.".txt"){ // Si le fichier correspondant existe dans le répertoire $rep
      $open = fopen($rep_d.$file.".txt","r");
      while (!feof($open)) { // Tant qu'on a pas atteind la fin du fichier
        echo "<br>".fgets($open, 4096);  // Affiche la descriptions contenue dans le fichier $rep_d.$file.".txt"
        fclose($open);
      }
    } else { // Si pas de description
      echo "<br>Aucune description";
    }      
}
      
}
closedir($handle);
?>
Bon c'est vite fait, donc c'est pas sur que ca marche.
Tu doit renseigner la variable $rep_d qui dit quel est le répertoire contenant les descriptions. Chaque fichier doit avoir son équivalent avec un .txt ajouté:
Exemple => fichier: "programme.exe", description "répertoire/programme.exe.txt"

Voilà ! Bonne journée

par Invité » 12 juil. 2005, 13:12

Salut. Alors enfaite j'ai quelques dizaines de centaines que j'aimerais metre en téléchargement. Mais tous faire en html c'est lont. Et passé par un script de Gestion de téléchargement aussi.

Alors ce que j'aimerais faire, c'est que ça liste tous les fichiers (c'est le script que jai mis + haut). Puis après dans la page a côté de chaque fichier qui est en téléchargement j'aimerais metre une description, alors si il existe un fichier txt qui porte le meme nom que le fichier, ca l'affiche dans la page, ou sinon ca affiche un autre fichier txt avec le contenu "pas de description".

Je sais pas si c'est possible de vérifier l'existance d'un fichier ?