[RESOLU] comparer dossier image avec csv

Eléphanteau du PHP | 13 Messages

08 juil. 2024, 00:02

Bonjour, j'ai besoin de votre aide j'essaie de pouvoir afficher seulement les images qui ne sont pas présentes dans un dossier
en ouvrant un fichier .csv

pour ouvrir mon fichier csv j'ai ceci:
if (($csv= fopen("mon.csv", "r"))) {

	 while (($data = fgetcsv($csv, 0, "|")) !== FALSE) {
    $num = count($data);
//echo $data[1] . $data[19] . "<br />\n";
 
le 1 c'est la référence et le 10 c'est le nom de l'image avec .jpg exemple 123456.jpg

j'aimerais afficher la référence des images qui ne sont pas présent dans le dossier.
pour lister le dossier je fais cela mais ca plante:
$scandir = scandir("./../modules/ba_importer/images/");

foreach($scandir as $fichier){
  
  if(preg_match("#\.(jpg)$#i", $fichier)){
    
    
   echo "$fichier<br>";
  }
}
mais après pour comparer les fichiers qui ne sont pas présent je fais comment?

Merci pour votre aide

Mammouth du PHP | 2703 Messages

08 juil. 2024, 00:23

https://www.php.net/manual/fr/function.file-exists.php
dans la boucle de parcours du csv, c'est plus simple.

Eléphanteau du PHP | 13 Messages

08 juil. 2024, 02:52

Merci pour ton aide j'ai réussi avec cela:
<?php

if (($csv= fopen("monfichier.csv", "r"))) {

	 while (($data = fgetcsv($csv, 0, "|")) !== FALSE) {
    $num = count($data);
//echo $data[1] . $data[19] . "<br />\n";
 
$filename = './images/'. $data[19];

if (file_exists($filename)) {
    //echo "Le fichier $filename existe. <br />\n";
} else {
    echo "Le fichier $filename n'existe pas. Référence: $data[1]<br />\n";
}
	
 }
 fclose($csv);
}

  ?>
j'ai encore une question, dans mon fichier csv j'ai plusieurs même nom d'images qui coresponde à des références différente. actuelement j'ai ceci:
Le fichier image ./images/5815.jpg n'existe pas. Référence: 10BR18560R160H-0250
Le fichier image ./images/5920.jpg n'existe pas. Référence: 10BR18565R150V-6012
Le fichier image ./images/6814.jpg n'existe pas. Référence: 10BR20580R160T-5000
Le fichier image ./images/6814.jpg n'existe pas. Référence: 10BR21565R160H-5000
Le fichier image ./images/6814.jpg n'existe pas. Référence: 10BR21570R160T-5000
Le fichier image .images/6814.jpg n'existe pas. Référence: 10BR21575R150T-5000
Le fichier image ./images/6814.jpg n'existe pas. Référence: 10BR21580R160S-5000
Le fichier image ./images/6264.jpg n'existe pas. Référence: 10BR22550R170V-4020I21
l'image 6814.jpg est présente plusieurs fois, comment je peux l'afficher seulement une fois?

Merci pour votre aide

Avatar du membre
Mammouth du PHP | 1609 Messages

08 juil. 2024, 13:27

Salut, par exemple en mémorisant chaque image en erreur dans un tableau et en vérifiant si l'image n'est pas déjà dans le tableau avant d'afficher le message et mémoriser l'image (conseil : utiliser le nom d'image comme clé et isset).
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 13 Messages

08 juil. 2024, 16:46

ok merci je vais creuser de ce coté. Merci pour ton aide.