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
A voir également:

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 37523 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 juin 2023 4 584
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