[RESOLU] file_exists renvoi toujours true...

Petit nouveau ! | 5 Messages

25 mars 2014, 18:27

Bonjour à tous, et merci pour les éventuelles aides !

Voilà, je réalisais tranquillement une visionneuse de produit façon amazon, c'est a dire avec des mini vignette sur la gauche d'une grosse vignette, lorsque j'ai commencé à buter sur le test pour savoir si le nom de fichier entré dans ma BDD existait vraiment physiquement sur le serveur (8 images possibles).

Le souci ? file_exists me renvoi toujours 'true', et du coup ma variable censée récupérer uniquement les noms de fichiers existant physiquement récupère aussi les chemins qui ne mènent à rien.

En espérant que quelqu'un voit la lumière à ma place, et me fasse ainsi gagner un précieux temps demain matin ! :) merci d'avance !

ps : je précise que le dossier "8" ne contient bien que les 4 images présentes dans le résultat ci-dessous.

Code : Tout sélectionner

//gestion vue produit $chemin_destination = "img_prod/".$_GET['id_produit']."/"; $all_img = array($chemin_destination.$infos_produit[img_produit_1], $chemin_destination.$infos_produit[img_produit_2], $chemin_destination.$infos_produit[img_produit_3], $chemin_destination.$infos_produit[img_produit_4], $chemin_destination.$infos_produit[img_produit_5], $chemin_destination.$infos_produit[img_produit_6], $chemin_destination.$infos_produit[img_produit_7], $chemin_destination.$infos_produit[img_produit_8]); $i = 0; foreach ($all_img as $key => $is_img){ echo "$is_img".$is_img."<br>"; // test de variable if(file_exists($is_img)){ $img[$i] = $is_img; $i++; } } print_r ($img); // affichage du tableau censé ne rcuperer que les chemins d'image existant physiquement

Code : Tout sélectionner

//ci-dessous le résultat du test de variable img_prod/8/8_Cubes2014_HD-1.jpg img_prod/8/8_Femme-plage_HD-1.jpg img_prod/8/8_couv_chevalet_6f.jpg img_prod/8/8_pocket6.jpg img_prod/8/ img_prod/8/ img_prod/8/ img_prod/8/ //et ici le resultat de print_r ($img) Array ( [0] => img_prod/8/8_Cubes2014_HD-1.jpg [1] => img_prod/8/8_Femme-plage_HD-1.jpg [2] => img_prod/8/8_couv_chevalet_6f.jpg [3] => img_prod/8/8_pocket6.jpg [4] => img_prod/8/ [5] => img_prod/8/ [6] => img_prod/8/ [7] => img_prod/8/ )

ViPHP
xTG
ViPHP | 7331 Messages

25 mars 2014, 19:25

Le dossier 8 existe donc je ne vois pas en quoi la fonction se plante. :)
Pour rappel sous unix tout est fichier.
PHP applique une philosophie unix.

Améliores ton test en rajoutant : http://fr2.php.net/manual/en/function.is-file.php
Cette fonction vérifie que le type de fichier (dossier est un type de fichier) est bien "fichier".

Petit nouveau ! | 5 Messages

26 mars 2014, 10:14

Effectivement :D Comme toujours le souci est juste la sous les yeux, et on a beau savoir que la solution résulte d'un problème de logique qu'on a pas dû bien intégrer. Une bonne nuit ou un bon coup de main permettent de trouver la solution !

Merci !

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

26 mars 2014, 11:46

si tu considère ton sujet résolus, peut tu indiquer une solution( pour les personnes qui te liront en utilisant la recherche du forum) ;)
et cliquer sur le bouton résolus en haut a droite du titre ;)


merci


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

Petit nouveau ! | 5 Messages

26 mars 2014, 13:47

En résumé

file_exists — Vérifie si un fichier ou un dossier existe. ex : (img_prod/8/8_pocket6.jpg = true; img_prod/8/ = true)

is_file — Indique si le fichier est un véritable fichier. ex : (img_prod/8/8_pocket6.jpg = true; img_prod/8/ = false)