Problème PHP !

Résolu
zeelox Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   -  
zeelox Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. zeelox Messages postés 119 Date d'inscription   Statut Membre Dernière intervention  
     
    :up: personne ...?
    0
  2. MrAkiroKun Messages postés 35 Statut Membre
     
    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
    1. zeelox Messages postés 119 Date d'inscription   Statut Membre Dernière intervention  
       
      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
    2. MrAkiroKun Messages postés 35 Statut Membre
       
      Qu'est ce qui ne marche pas ? personnellement je ne vois pas d'erreur à part que c'est difficilement lisible.
      0
    3. zeelox Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   > MrAkiroKun Messages postés 35 Statut Membre
       
      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
    4. zeelox Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   > MrAkiroKun Messages postés 35 Statut Membre
       
      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
    5. MrAkiroKun Messages postés 35 Statut Membre
       
      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
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
    1. zeelox Messages postés 119 Date d'inscription   Statut Membre Dernière intervention  
       
      et quel est l'avantage de l'uniqid(); ?
      0
    2. zeelox Messages postés 119 Date d'inscription   Statut Membre Dernière intervention  
       
      je pense quand même utiliser les nombres car je vais les mettres dans la bdd et les appeler par ordre alphabétique...
      0
      1. zeelox Messages postés 119 Date d'inscription   Statut Membre Dernière intervention   > zeelox Messages postés 119 Date d'inscription   Statut Membre Dernière intervention  
         
        en tout cas merci énormément !!!
        0