Insérer image php bdd

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Insérer image php bdd

Re: [RESOLU] Insérer image php bdd

par Invité » 06 oct. 2021, 14:56

Bon alors finalement j'ai deux problèmes. Le premier c'est que j'ai ajouté un dossier de réception nommé "avatar" pour stocker les photos, et depuis qu'elles sont stockées dedans, je n'arrive plus à les afficher sur le site, malgré le fait qu'elles soient bien entrées dans ma base de donnée et que je les récupère avec l'ID de l'utilisateur :/

Le problème c'est que je n'arrive pas à appliquer des filtres pour sécuriser les images ... j'essaye avec le bout de code en dessous mais peu importe ce que je rentre, tout est accepté :/
        $user_image = ($_FILES['image']['name']);
        move_uploaded_file($_FILES['image']['tmp_name'], 'avatars/' . $_FILES['image']['name']);
        $extension = pathinfo($user_image, PATHINFO_EXTENSION);
       
        if ($extension != "jpg" && $extension != "jpeg" && $extension != "png" && $extension != "gif") {
        }else{
            $errorMsg = "Extension non valide";
        };

Re: Insérer image php bdd

par Noobiephp » 06 oct. 2021, 12:44

move_uploaded_file($_FILES['image']['tmp_name'], '' .$_FILES['image']['name']);
donc le nom de l'image dans le répertoire est $_FILES['image']['name']

$user_image = ($_FILES['image']['tmp_name']);
donc le nom de l'image sauvé dans le bdd est $_FILES['image']['tmp_name']
Je suis désolé je ne comprend pas ce que tu veux dire 8-|

edit: j'ai peut être compris, tu veux dire que j'enregistre dans ma bdd un nom temporaire ?

edit 2 j'ai trouvé !!!!!!!!!!!!!!!!! Il suffisait de rempacer le premier tmp_name par name !!!

Merci!!

Re: Insérer image php bdd

par or 1 » 06 oct. 2021, 12:42

move_uploaded_file($_FILES['image']['tmp_name'], '' .$_FILES['image']['name']);
donc le nom de l'image dans le répertoire est $_FILES['image']['name']

$user_image = ($_FILES['image']['tmp_name']);
donc le nom de l'image sauvé dans le bdd est $_FILES['image']['tmp_name']

Insérer image php bdd

par Noobiephp » 06 oct. 2021, 12:34

Bonjour,

Je sais que c'est une question courante mais j'ai beau chercher un peu partout je ne trouve pas de solution à mon problème...
J'essaye d'insérer une image pour simuler un utilisateur sur un site que je crée, et je n'arrive pas à insérer une image.

J'arrive à insérer le nom de l'image à travers ($_POST) mais pas avec ($_FILES). Autrement dit, quand j'insère une image, je la retrouve bien dans ma base de données sous forme de "exemple.jpg" mais elle ne s'affiche pas sur mon site.
Quand j'insère une URL d'image par contre, j'arrive à afficher l'image sur mon site.

Je me dis alors que le problème vient du fait que ma base de données n'arrive pas à afficher des images qui ne sont pas enregistrées dans le bon dossier. J'ai alors essayé de l'enregistrer correctement mais je n'y arrive pas...

Merci d'avance pour votre aide
<form method="POST" action="" enctype="multipart/form-data">
 <div class="form-outline mb-4">
 <input class="form-control form-control-lg" name="image" type="file"/>
 <div class="small text-muted mt-2">Choisissez une image pour votre profil</div>
 </div>
<div class="button group" style="text-align:center; margin-bottom:25px">
<a class="btn btn-primary btn-block btn-lg gradient-custom-4" href="index.php">Retour</a>
<button type="submit" class="btn btn-success btn-block btn-lg gradient-custom-4" name="validate">Mettre à jour</button>
 </div>
 </form>

   //Validation du formulaire
   if(isset($_POST['validate'])){

    //Récupérer l'identifiant de l'utilisateur
    if(isset($_GET['id']) AND !empty($_GET['id'])){

    //L'id de l'utilisateur
    $idOfUser = $_GET['id'];
     
        //Les données de l'user
        $user_image = ($_FILES['image']['tmp_name']);
        move_uploaded_file($_FILES['image']['tmp_name'], '' .$_FILES['image']['name']);

            
            //Mettre à jour l'utilisateur dans la bdd
            $insertUserOnWebsite = $bdd->prepare('UPDATE users SET  image = ? WHERE id = ?');
            $insertUserOnWebsite->execute(
                array( 
                    $user_image,
                    $idOfUser
                ));
        
        }else{
            $errorMsg = "L'utilisateur existe déjà sur le site";
        }
    }