Problème PHP !

Résolu/Fermé
zeelox
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019
- Modifié par baladur13 le 22/01/2016 à 10:03
zeelox
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019
- 22 janv. 2016 à 12:15
Salut ! :)
j'ai depuis hier un petit soucis sur mon site que je suis en train de coder, je veux ajouter un fichier a un dossier mais vu que je ne change pas le nom, sa me remplace le fichier que j'avais mit avant. Je pense donc que je pourais appeler le fichier 1.jpg par exemple, et que si il existe deja, on ajoute 1 donc 2.jpg puis 3.jpg et ainsi de suite.
hors j'ai quelques petits soucis :

$fileNumber = 1;
$fileName = $fileNumber . ".jpg";

if(file_exists($fileName))
{
 $fileName = $fileNumber + 1 . $fileNumber;
 $road = "pattern/work/banners/".$filename;
 $result = move_uploaded_file($_FILES['addbanner']['tmp_name'], $road);   
}
else
{
 echo $fileName;
}



MERCI D'AVANCE pour ceux qui prendront le temps de m'aider :)
Zeelox(TM) | Graphic Designer

3 réponses

zeelox
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019

22 janv. 2016 à 10:02
:up: personne ...?
0
MrAkiroKun
Messages postés
29
Date d'inscription
vendredi 8 août 2014
Statut
Membre
Dernière intervention
22 janvier 2016

22 janv. 2016 à 10:36
Salut à toi développeur,

Premièrement, la patience est une vertus, pense-y, inutile de "up" 45 minutes après avoir posté.

Et pour ton problème, cette ligne me chiffonne:
 $fileName = $fileNumber + 1 . $fileNumber;


Si j'ai bien compris ton code, elle va retourner "21"...
d'ailleur, attention au majuscules, ta variable filename est tout en minuscule dans cette ligne :
 $road = "pattern/work/banners/".$filename;

alors qu'elle est écrite avec un N majuscule dans les autres variable.

J'espère t'avoir aidé, sinon dis le moi, on verra ce qu'on peu faire !
0
zeelox
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019

Modifié par zeelox le 22/01/2016 à 10:52
entre-temps j'ai bidouillé le code php, je te montre le nouveau code :

     $fileNumber = 1;
     $fileName = "pattern/work/banners/" . $fileNumber . ".jpg";
     if(file_exists($fileName))
     {     
      while(file_exists($fileName))
      {
       $fileNumber = $fileNumber + 1;
       $fileName = $fileNumber . "." . $uploaded_extensions;
       $road = "pattern/work/banners/" . $fileName;
       $result = move_uploaded_file($_FILES['addbanner']['tmp_name'], $road);
       echo "okkkk";  
      }
     }
     else
     {
      echo "noraj";       
     }

0
MrAkiroKun
Messages postés
29
Date d'inscription
vendredi 8 août 2014
Statut
Membre
Dernière intervention
22 janvier 2016

22 janv. 2016 à 10:58
Qu'est ce qui ne marche pas ? personnellement je ne vois pas d'erreur à part que c'est difficilement lisible.
0
zeelox
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019
> MrAkiroKun
Messages postés
29
Date d'inscription
vendredi 8 août 2014
Statut
Membre
Dernière intervention
22 janvier 2016

22 janv. 2016 à 11:05
bah en gros j'upload le fichier, sa me créé 1.jpg, parfait.
je remet un autre fichier, sa me créé 2.jpg, parfait aussi.
je remet encore un autre fichier, ça me remplace 2.jpg par 2.jpg mais avec une nouvelle image.
en gros je veux juste pouvoir mettre des images à l'infini dans mon dossier.
0
zeelox
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019
> MrAkiroKun
Messages postés
29
Date d'inscription
vendredi 8 août 2014
Statut
Membre
Dernière intervention
22 janvier 2016

22 janv. 2016 à 11:10
après je pense que c'est peut-être pas une erreur de code, juste de la logique mais c'est bizarre car on ajoute 1 à chaque fois donc normalement ça devrait créer 3.jpg nan ?
0
MrAkiroKun
Messages postés
29
Date d'inscription
vendredi 8 août 2014
Statut
Membre
Dernière intervention
22 janvier 2016

22 janv. 2016 à 11:13
AAAAAAH, d'accord, eh bien, en gros, au début, de ton script, tu dois vérifier si il éxiste déja un fichier... si le dossier est vide (donc pas de fichier dedans) tu fais ce qui marche déja. Ensuite si il y a déja un fichier, tu récupère le nom du fichier qui à le nombre le plus elevé, tu le met dans une variable, que tu incrémente avec ++ et le tour est joué, à chaque fois tu fais ça ;)
0
jordane45
Messages postés
35714
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 juin 2022
4 193
22 janv. 2016 à 11:51
Bonjour,



Une boucle WHILE avec la fonction file_exists et l'incrémentation d'une variable et le tour est joué.

Un truc du genre :
//initialisation des variables
$fileNumber = 1;
 $fileName = "pattern/work/banners/" . $fileNumber . ".jpg";

 //début de la boucle
 while (file_exists($fileName)){
 //on incrémente les valeurs   
 $fileNumber ++;
 $fileName = "pattern/work/banners/" . $fileNumber . ".jpg";  
 }
 
 //normalement... une fois sorti de la boucle.... ta variable $fileNumber  contiendra un "nouveau" numéro.

 //le reste de ton code.



Par contre, perso , ... plutot que de nommer les fichiers 1 2 3 ... et de devoir gérer avec ce genre de mécanisme si le fichier existe déjà ou non... je préfères leur générer des noms automatiques UNIQUES.
Pour se faire... tu peux tout simplement utiliser uniqid():
https://www.php.net/manual/fr/function.uniqid.php

et ce qui donne tout simplement :
 $fileName = "pattern/work/banners/" . uniqid() . ".jpg";  


0
zeelox
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019

Modifié par zeelox le 22/01/2016 à 12:06
et quel est l'avantage de l'uniqid(); ?
0
zeelox
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019

22 janv. 2016 à 12:07
je pense quand même utiliser les nombres car je vais les mettres dans la bdd et les appeler par ordre alphabétique...
0
zeelox
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019
> zeelox
Messages postés
119
Date d'inscription
samedi 30 mai 2015
Statut
Membre
Dernière intervention
8 mars 2019

22 janv. 2016 à 12:15
en tout cas merci énormément !!!
0