Tester si existe upload

Fermé
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 - 23 août 2012 à 17:40
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 - 25 août 2012 à 22:54
Bonjour à vous,

J'aimerai savoir, comment, lors d'un upload d'image, vérifier si une image ne porte pas déja
le même nom et refuser le cas échéant.

Au alors mettre un place un système de rename auto.

Je ne sais pas trop par ou commencer.

Merci à vous
A voir également:

6 réponses

Utilisateur anonyme
23 août 2012 à 17:52
Bonjour

Tu enregistres bien tes images dans un dossier, et leur nom dans une base ?
Tu peux tester si l'image existe dans le dossier avec la fonction is_file.
Tu peux tester si le nom existe dans ta base avec une requête genre :
"SELECT count(*) FROM matable WHERE nomimage='$nomimage'"

Pour la renommer, il y a beaucoup de possibilités. Par exemple, tu ajoutes un texte aléatoire (ou un compteur, peu importe) au début du nom et tu recommences jusqu'à ce que tu trouves un nom inutilisé.
0
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
23 août 2012 à 18:08
Merci beaucoup pour la réponse,

Sans vouloir abuser, vous auriez un petit tuto ou un exemple de script pour changer le nom et tester si non utilisé ( la dernière solution )

Merci à vous
0
Utilisateur anonyme
23 août 2012 à 22:48
En supposant que tu testes en vérifiant dans la base de données :

// d'abord la fonction qui teste si le fichier existe déjà ou pas
function existedeja($nomimage) {
  $req="SELECT count(*) FROM matable WHERE nomimage='".mysql_real_escape_char($nomimage)."'" 
  $rep=mysql_query($req);
  $lgn=mysql_fetch_row($rep);
  return ($lgn[0]>0 ? true : false);
}

// boucle jusqu'à trouver un nom qui n'existe pas déjà

$nom=... // qq chose comme $_FILE['fichier']['name'];
$nomok=$nom;
while (existedeja($nomok)) {
  $nomok='a'.$cpt.$nom;  // crée un nouveau nom en ajoutant un compteur au début
  $cpt++;  
}
// rendu ici, $nomok est un nom de fichier qui n'existe pas déjà
0
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
25 août 2012 à 17:31
Bonjour, j'ai fait ceci mais ça n'a pas marché:

  $req="SELECT count(*) FROM images_news"; 
  $rep=mysql_query($req);
  $lgn=mysql_fetch_row($rep);
  $count = $lgn['url_image'];
  
  if ('images/news/images/'.'$nFile' == $count){
	  
	  echo "Erreur !";
  }


$nfile correspond au nom de mon image auquel je rajoute le chemin vers le dossier.
En gros je compare les chemins des images pour voir si ce sont les mêmes.

Mais j'ai une erreur à $count, il ne fait une erreur d'index.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
25 août 2012 à 21:00
Bien sûr qu'il y a une erreur d'index.
$lgn est un tableau dont les éléments son les diverses valeurs de chaque enregistrement renvoyé par ta requête
Mais ici, la requête renvoie COUNT(*) c'est à dire le nombre de ligne de ta table
Elle ne renvoie aucun champ 'url_image' car on ne le lui a pas demandé, c'est donc normal que $lgn['url_image'] n'existe pas.

Tu m'avais demandé de t'écrire un script, je l'ai fait et tu n'en parles même pas. Tu comprendras que j'ai l'impression d'avoir perdu mon temps et que désormais je n'en perde pas plus avec toi.
0
TRUNCKS Messages postés 1030 Date d'inscription vendredi 10 août 2007 Statut Membre Dernière intervention 3 juin 2023 7
25 août 2012 à 22:54
Bonsoir,

Je suis désolé, je ne voulais absolument pas vous vexer :(

J'ai vraiment un petit niveau et je n'avais pas bien compris la
nuance du count.
Je me suis rendu compte que je ne stockais pas le nom de l'image dans ma
bdd mais le chemin vers l'image.

Et avant de passer à la suite, je voulais déja arriver à faire la comparaison.

J'ai bien pris en considération votre travail, soyez assuré que si j'ai fait quelque chose de vexant ce n'était pas du tout volontaire.

Merci encore dans tous les cas
0