Renommer ces images avant l insertion en base de donnée

Résolu/Fermé
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 - 4 juin 2021 à 15:21
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 5 juin 2021 à 00:27
bonjour a tous
lors de l upload des images dans ma base de donnée les images ne sont pas renommées et je pense que cela va poser des problèmes

j ai bien un système qui évite d avoir des doublons mais cela n est pas ce qu il y a de mieux

en effet si jean a sur son pc une image image 1.jpg et qu il l upload
j aurais dans mon dossier uploads sur mon serveur l image 1.jpg

si André a aussi une image image1.jpg et qu il veux l envoyer dans le dossier upload
il ne va pas comprendre pourquoi je lui informe qu elle existe déjà

donc est il possible de renommer les images par exemple en aaaaaaa001 pour la première
en aaaaaaa002 pour la deuxième
et ainsi de suite

je souhaiterais savoir si il existe un moyen pour éviter les doublons
A voir également:

10 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 juin 2021 à 15:25
Bonjour,

Tu peux préfixer le nom des images par l'ID de ton utilisateur et utiliser, en plus, la fonction UNIQID pour générer une string aléatoire.
Par exemple, Ton fichier serait de la forme 1-78fsdf465.png

1
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
4 juin 2021 à 15:36
bonjour jordane

merci pour la réponse aussi rapide
c est super
oui cela n a aucune importance du moment que cela est une chose simple a mettre en place et qu il soit impossible d avoir deux fois la même dénomination pour une image
l idéal comme tu connais mon code serait par exemple d avoir par exemple son pseudo et l id de la journée de pêche et bien sur le string aléatoire

juste pour m y retrouver dans les images
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
4 juin 2021 à 17:06
voila je viens d essayer avec ce code
amis j ai un soucis avec l extension
comment je pourrais ajouter les extensions

j ai ajouter la ligne 41

<?php
// Démarrage SESSION
session_start();
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//Connexion à la bdd
require_once 'base.php';

// Variables/constantes...
  $allowed = array(
            "jpg" => "image/jpg",
            "JPG" => "image/JPG",
            "jpeg" => "image/jpeg",
            "JPEG" => "image/JPEG",
            "gif" => "image/gif",
            "png" => "image/png",
            "PNG" => "image/PNG"
        );

$res = array();// variable qui contiendra les infos à retourner au script JS
        
// récupération PROPRE des variables de type "array" AVANT de les utiliser  (j'ai l'impression de radoter vu le nombre de fois que je t'ai déjà donné ce genre de code !!!! )
$getpseudo = !empty($_COOKIE['pseudo']) ? $_COOKIE['pseudo'] : NULL;
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo']: $getpseudo;
$id = !empty($_POST['id']) ? $_POST['id']: NULL;
$photos = !empty($_FILES["photo"]) ? $_FILES["photo"] : NULL;    
$contenu = !empty($_POST["contenu"]) ? $_POST["contenu"] : "";  

// Vérifier si le formulaire a été soumis
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Vérifie si le fichier a été uploadé sans erreur.
   
    if ($photos ){
      if( $photos["error"] != 0 ){
        $err = 'Erreur : ' . $photo['error']; 
      }else{
        $filename = $photos["name"];
        $filetype = $photos["type"];
        $filesize = $photos["size"];
        
        
        $filename = uniqid("img_",true) ;
        
        // Vérifie l'extension du fichier
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        if (!array_key_exists($ext, $allowed)) {
          $err = 'Erreur : Veuillez sélectionner un format de fichier valide.</br> <a href="javascript:history.back()">Pour recommencer</a>';
        }
        // Vérifie la taille du fichier - 5Mo maximum
        $maxsize = 5 * 1024 * 1024;
        if ($filesize > $maxsize){
            $err = 'Error: La taille du fichier est supérieure à la limite autorisée.</br> <a href="javascript:history.back()">Pour recommencer</a>';
        }else{
          // Vérifie le type MIME du fichier
          if (in_array($filetype, $allowed)) {
              // Vérifie si le fichier existe avant de le télécharger.
              if (file_exists("uploads/" . $photos["name"])) {
                  $err =  $photos["name"] . ' existe déjà.</br> <a href="javascript:history.back()">Pour recommencer</a>';
              } else {
                if(! move_uploaded_file($photos["tmp_name"], "uploads/" . $photos["name"])){
                  $err = "Erreur lors de l'upload du fichier";
                }else{
                  $res['message'] = '<style="font-size:22px; margin-left:20%; margin-top:90px;text-align: center;">Votre fichier a été téléchargé avec succès.>';
                  
                   //préparation de la requête et des variables
                  $sql = 'INSERT INTO galerie_images (pseudo, id_img, nom_img, nom_min, contenu ) VALUES (:pseudo, :id_img, :nom_img, :nom_min, :contenu)';
                  $datas = array(
                      ':pseudo' => $pseudo,
                      ':id_img' => $id,
                      ':nom_img' => $filename,
                      ':nom_min' => $filename,
					  ':contenu' => $contenu
                  );
                  //exécution de la requêete préparée
                  try{
                    $req = $bdd->prepare($sql);
                    $req->execute($datas);
                  }catch(Exception $e){
                    $err = " Erreur dans la requête : " . $e->getMessage();
                  }
                }
              }
          } else {
            $err = 'Error: Il y a eu un problème de téléchargement de votre fichier. Veuillez réessayer.</br> <a href="javascript:history.back()">Pour recommencer</a>';
          }
        }
      }
    } else  {
      $debug = ['POST'=>$_POST,'FILE'=>$_FILES];
      $err =  "Error: " . $photos["error"] . "   ---  " . print_r($debug,true);
    } 
  } else {
    $err = "Méthode invalide"; 
  }
  
  $res['error'] = $err;
  
  // On renvoi la réponse au format JSON
  echo json_encode($res);
 exit;
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 4 juin 2021 à 21:32

        $filename . "." . $ext


Attention à bien le faire pour la sauvegarde en bdd ET lors du move_uploaded_file
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
4 juin 2021 à 19:35
merci jordane
es ce que je ne devrais pas réaliser cela lors de l upload
j ai trouve ce code sur cette page
https://stackoverflow.com/questions/8810656/change-file-name-to-uniqid-in-php/8810759

$fileInfo = pathinfo($_photos["file"]["name"]);

move_uploaded_file($_photos["file"]["tmp_name"],
    "uploads/" . uniqid() . '.' . $fileInfo['extension']);
0

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

Posez votre question
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
4 juin 2021 à 20:23
voila je viens de refaire des essais

donc a présent j ai bien l image dans la base de donnée avec un non généré
dans le dossier uploads j ai aussi l image mais malheureusement c est le nom original du fichier

donc il faut pouvoir modifier le nom aussi dans l upload
et de ce cote je sèche

voici le code que j ai ajoute pour l instant pour avoir le résultat explique

  $ext = pathinfo($filename, PATHINFO_EXTENSION);
        
        $filename = uniqid("img_",true).$ext ;
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
4 juin 2021 à 20:28
voila avec ce code j ai les noms des images qui ont été mortifiées
par contre c est pas bon avec l extension

le nom de mon image est ainsi

img_60ba6e9dba9472.30017962JPG
<?php
// Démarrage SESSION
session_start();
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//Connexion à la bdd
require_once 'base.php';

// Variables/constantes...
  $allowed = array(
            "jpg" => "image/jpg",
            "JPG" => "image/JPG",
            "jpeg" => "image/jpeg",
            "JPEG" => "image/JPEG",
            "gif" => "image/gif",
            "png" => "image/png",
            "PNG" => "image/PNG"
        );

$res = array();// variable qui contiendra les infos à retourner au script JS
        
// récupération PROPRE des variables de type "array" AVANT de les utiliser  (j'ai l'impression de radoter vu le nombre de fois que je t'ai déjà donné ce genre de code !!!! )
$getpseudo = !empty($_COOKIE['pseudo']) ? $_COOKIE['pseudo'] : NULL;
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo']: $getpseudo;
$id = !empty($_POST['id']) ? $_POST['id']: NULL;
$photos = !empty($_FILES["photo"]) ? $_FILES["photo"] : NULL;    
$contenu = !empty($_POST["contenu"]) ? $_POST["contenu"] : "";  

// Vérifier si le formulaire a été soumis
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Vérifie si le fichier a été uploadé sans erreur.
   
    if ($photos ){
      if( $photos["error"] != 0 ){
        $err = 'Erreur : ' . $photo['error']; 
      }else{
        $filename = $photos["name"];
        $filetype = $photos["type"];
        $filesize = $photos["size"];
         $ext = pathinfo($filename, PATHINFO_EXTENSION);
        
        $filename = uniqid("img_",true).$ext ;
        
        // Vérifie l'extension du fichier
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        if (!array_key_exists($ext, $allowed)) {
          $err = 'Erreur : Veuillez sélectionner un format de fichier valide.</br> <a href="javascript:history.back()">Pour recommencer</a>';
        }
        // Vérifie la taille du fichier - 5Mo maximum
        $maxsize = 5 * 1024 * 1024;
        if ($filesize > $maxsize){
            $err = 'Error: La taille du fichier est supérieure à la limite autorisée.</br> <a href="javascript:history.back()">Pour recommencer</a>';
        }else{
          // Vérifie le type MIME du fichier
          if (in_array($filetype, $allowed)) {
              // Vérifie si le fichier existe avant de le télécharger.
              $photos["name"]= $filename;
              if (file_exists("uploads/" . $photos["name"])) {
                  $err =  $photos["name"] . ' existe déjà.</br> <a href="javascript:history.back()">Pour recommencer</a>';
              } else {
                if(! move_uploaded_file($photos["tmp_name"], "uploads/" . $photos["name"])){
                  $err = "Erreur lors de l'upload du fichier";
                }else{
                  $res['message'] = '<style="font-size:22px; margin-left:20%; margin-top:90px;text-align: center;">Votre fichier a été téléchargé avec succès.>';
                  
                   //préparation de la requête et des variables
                  $sql = 'INSERT INTO galerie_images (pseudo, id_img, nom_img, nom_min, contenu ) VALUES (:pseudo, :id_img, :nom_img, :nom_min, :contenu)';
                  $datas = array(
                      ':pseudo' => $pseudo,
                      ':id_img' => $id,
                      ':nom_img' => $filename,
                      ':nom_min' => $filename,
					  ':contenu' => $contenu
                  );
                  //exécution de la requêete préparée
                  try{
                    $req = $bdd->prepare($sql);
                    $req->execute($datas);
                  }catch(Exception $e){
                    $err = " Erreur dans la requête : " . $e->getMessage();
                  }
                }
              }
          } else {
            $err = 'Error: Il y a eu un problème de téléchargement de votre fichier. Veuillez réessayer.</br> <a href="javascript:history.back()">Pour recommencer</a>';
          }
        }
      }
    } else  {
      $debug = ['POST'=>$_POST,'FILE'=>$_FILES];
      $err =  "Error: " . $photos["error"] . "   ---  " . print_r($debug,true);
    } 
  } else {
    $err = "Méthode invalide"; 
  }
  
  $res['error'] = $err;
  
  // On renvoi la réponse au format JSON
  echo json_encode($res);
 exit;
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 juin 2021 à 21:57
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
4 juin 2021 à 21:59
en complément, tu devrais forcer en minuscule la variable filename

 $filename = strtolower ( uniqid("img_",true) . "." . $ext ) ;
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
4 juin 2021 à 23:36
bonsoir Jordane
un grand merci pour ton aide
c est vraiment la dernière difficultés pour mon site
enfin je pense

voila j ai applique les corrections

mais cela ne fonctionne pas
pourtant j ai suivi pas a pas le code ...
je te joins une copie du code modifie
et une copie d écran de la réponse

<?php
// Démarrage SESSION
session_start();
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//Connexion à la bdd
require_once 'base.php';

// Variables/constantes...
  $allowed = array(
            "jpg" => "image/jpg",
            "JPG" => "image/JPG",
            "jpeg" => "image/jpeg",
            "JPEG" => "image/JPEG",
            "gif" => "image/gif",
            "png" => "image/png",
            "PNG" => "image/PNG"
        );

$res = array();// variable qui contiendra les infos à retourner au script JS
        
// récupération PROPRE des variables de type "array" AVANT de les utiliser  (j'ai l'impression de radoter vu le nombre de fois que je t'ai déjà donné ce genre de code !!!! )
$getpseudo = !empty($_COOKIE['pseudo']) ? $_COOKIE['pseudo'] : NULL;
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo']: $getpseudo;
$id = !empty($_POST['id']) ? $_POST['id']: NULL;
$photos = !empty($_FILES["photo"]) ? $_FILES["photo"] : NULL;    
$contenu = !empty($_POST["contenu"]) ? $_POST["contenu"] : "";  

// Vérifier si le formulaire a été soumis
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Vérifie si le fichier a été uploadé sans erreur.
   
    if ($photos ){
      if( $photos["error"] != 0 ){
        $err = 'Erreur : ' . $photo['error']; 
      }else{
        $filename = $photos["name"];
        $filetype = $photos["type"];
        $filesize = $photos["size"];
        
        
         $ext = pathinfo($filename, PATHINFO_EXTENSION);
        
     $filename = strtolower ( uniqid("img_",true) . "." . $ext ) ;
    
        // Vérifie l'extension du fichier
      
        if (!array_key_exists($ext, $allowed)) {
          $err = 'Erreur : Veuillez sélectionner un format de fichier valide.</br> <a href="javascript:history.back()">Pour recommencer</a>';
        }
        // Vérifie la taille du fichier - 5Mo maximum
        $maxsize = 5 * 1024 * 1024;
        if ($filesize > $maxsize){
            $err = 'Error: La taille du fichier est supérieure à la limite autorisée.</br> <a href="javascript:history.back()">Pour recommencer</a>';
        }else{
          // Vérifie le type MIME du fichier
          if (in_array($filetype, $allowed)) {
              // Vérifie si le fichier existe avant de le télécharger.
           
              if (file_exists("uploads/" . $filename)) {
                  $err =  $filename . ' existe déjà.</br> <a href="javascript:history.back()">Pour recommencer</a>';
              } else {
                if(! move_uploaded_file($photos["tmp_name"], "uploads/" . $filename)){
                  $err = "Erreur lors de l'upload du fichier";
                }else{
                  $res['message'] = '<style="font-size:22px; margin-left:20%; margin-top:90px;text-align: center;">Votre fichier a été téléchargé avec succès.>';
                  
                   //préparation de la requête et des variables
                  $sql = 'INSERT INTO galerie_images (pseudo, id_img, nom_img, nom_min, contenu ) VALUES (:pseudo, :id_img, :nom_img, :nom_min, :contenu)';
                  $datas = array(
                      ':pseudo' => $pseudo,
                      ':id_img' => $id,
                      ':nom_img' => $filename,
                      ':nom_min' => $filename,
					  ':contenu' => $contenu
                  );
                  //exécution de la requêete préparée
                  try{
                    $req = $bdd->prepare($sql);
                    $req->execute($datas);
                  }catch(Exception $e){
                    $err = " Erreur dans la requête : " . $e->getMessage();
                  }
                }
              }
          } else {
            $err = 'Error: Il y a eu un problème de téléchargement de votre fichier. Veuillez réessayer.</br> <a href="javascript:history.back()">Pour recommencer</a>';
          }
        }
      }
    } else  {
      $debug = ['POST'=>$_POST,'FILE'=>$_FILES];
      $err =  "Error: " . $photos["error"] . "   ---  " . print_r($debug,true);
    } 
  } else {
    $err = "Méthode invalide"; 
  }
  
  $res['error'] = $err;
  
  // On renvoi la réponse au format JSON
  echo json_encode($res);
 exit; 
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
4 juin 2021 à 23:56
ça ne marche pas... c'est à dire ?
par ce que la réponse ajax te dit bien que c'est sauvegardé ...
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
5 juin 2021 à 00:03
Ah oui, l'erreur javascript à la fin...
étrange..

Tu peux, dans la fenêtre de réponse, tout à droit, cliquer sur le bouton "Brut" et nous montrer ce que ça contient ?
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
5 juin 2021 à 00:04
ouppsss désolé jordane
cela fonctionne , c est vraiment magique , encore un grand merci
sauf qu'avant j avais le message
que le fichier était bien enregistre
a présent l écran reste figé de avec ce message

0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
5 juin 2021 à 00:05
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
5 juin 2021 à 00:14
oui voici la capture
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
5 juin 2021 à 00:16
Vu que tu peux voir le message d'erreur.... Je te laisse chercher ( vu que la dernière fois tu m'as indiqué que je t'avais répondu trop vite )
ou tu veux la réponse maintenant ?
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
Modifié le 5 juin 2021 à 00:23
bon,
je te donne la réponse maintenant, je ne vais pas tarder à aller me coucher ..

Donc,
ligne 23 initialise la variable $err
par exemple
$err = NULL;


Autre solution, utiliser un ternaire à la ligne indiquée par l'erreur
 $res['error'] = !empty($err) ? $err : NULL;


(tu peux faire les deux si tu veux )
0
flexi2202 Messages postés 3784 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 30 mars 2024 179
5 juin 2021 à 00:25
c est merveilleux jordane cela fonctionne a ravir
non j aurais pas trouver , du moins pas avant plusieurs jours
je tenais a te remercier très sincèrement de ton aide a travers tous mes petits soucis
cela a été vraiment gentil
passe une bonne nuit
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
5 juin 2021 à 00:27
Bonne nuit à toi également,
Pense à marquer le sujet en RESOLU.
0