Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Futur Membre du Club
    Ajouter une image à ma bdd. Elle ne s'enregistre pas dans le fichier "images"
    Bonjour,

    J'aimerai ajouter une image dans ma base de donnée ainsi qu'un titre et une catégorie.
    Après avoir envoyé mon fichier, le lien qui donne le nom de la photo s'enregistre bien dans ma table 'realisations' dans 'image' mais l'image uploadée ne s'ajoute pas dans mon fichier 'images/...' du coup, rien ne s'affiche.

    Pouvez-vous m'aider ?

    J'ai mon formulaire :
    Code HTML :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            <form action="test2.php" method="post" enctype="multipart/form-data">
            <p>
                    Formulaire d'envoi de fichier :<br />
                    <input type="file" name="image" /><br />
    			<p><input type="text" name="categorie"></p>
          <p><input type="text" name="titre"></p>
                    <input type="submit" value="Envoyer le fichier" />
            </p>
    </form>


    Et le fichier d'envoi :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'root', $pdo_options);
     
    $categorie = $_POST['categorie'];
     $titre = $_POST['titre'];    
     $nom = md5(uniqid("realisations_", true));
     $name = "images/".str_replace(' ','',$nom);
     
    if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0)
    {
     
    	if ($_FILES['image']['size'] <= 1000000)
            {
     
    		$infosfichier = pathinfo($_FILES['images']['name']);
                    $extension_upload = $infosfichier['extension'];
                    $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                    if (in_array($extension_upload, $extensions_autorisees))
                    {
     
     
                           $result = move_uploaded_file($_FILES['image']['tmp_name'],$name);
    if ($result) echo "Transfert réussi"; else { echo 'echec transfert';}
     
     
                    }
            }
    }
     
     
    try
    {
     
        $reponse = $bdd->query('SELECT * FROM realisations');
     
      $req = $bdd->prepare('INSERT INTO realisations (image, categorie, titre) VALUES(?, ?, ?)');
    $req->execute(array($nom, $_POST['categorie'], $_POST['titre']));
     
     
        while ($donnees = $reponse->fetch())
        {
        ?>
            <p>
             <img src="images/<?php echo $nom; ?>" ><br />
            </p>
        <?php
        }
     
        $reponse->closeCursor(); 
     
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
     
     
    ?>

  2. #2
    Expert confirmé
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    if ($result) echo "Transfert réussi"; else { echo 'echec transfert';}

    L'un ou l'autre s'affiche ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Futur Membre du Club
    Bonjour,

    Désolé pour la réponse tardive, le covid est passé par là.

    Il n'affiche aucun des deux messages bizarrement. J'ai juste les petites icônes 'image' vide à la place de l'image téléchargée vu qu'elle ne s'enregistre dans la bdd.

    Dans la BDD, il enregistre bien toutes les données (en mode test pour le moment)


  4. #4
    Modératrice

    Citation Envoyé par LEM4000 Voir le message

    Il n'affiche aucun des deux messages bizarrement.
    Si il n'affiche rien, c'est qu'il n'arrive pas dans cette condition. Tu peux ajouter une alternative d'affichage sur le transfert du fichier proprement dit :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0)
    { 
    // ...
    } else {
        // cas d'erreur : 
        if (!isset($_FILES['image'])) { 
            echo "image non envoyée !"; 
        } else {
            echo "Erreur sur l'envoi de l'image : ".$_FILES['image']['error'];
        }
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Futur Membre du Club
    J'ai modifié mais toujours pareil. Juste les icônes images qui s'affichent (il n'y a pas encore de CSS)



    Voici le code :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <?php
    $categorie = $_POST['categorie'];
     $titre = $_POST['titre'];    
     $nom = md5(uniqid("realisations_", true));
     $name = "images/".str_replace(' ','',$nom);
     
    if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0)
    {
     
    	if ($_FILES['image']['size'] <= 1000000)
            {
     
    		$infosfichier = pathinfo($_FILES['images']['name']);
                    $extension_upload = $infosfichier['extension'];
                    $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
                    if (in_array($extension_upload, $extensions_autorisees))
                    {
     
     
                           $result = move_uploaded_file($_FILES['image']['tmp_name'],$name);
    if ($result) echo "Transfert réussi"; else { echo 'echec transfert';}
     
     
                    }
            }
    } else {
        // cas d'erreur : 
        if (!isset($_FILES['image'])) { 
            echo "image non envoyée !"; 
        } else {
            echo "Erreur sur l'envoi de l'image : ".$_FILES['image']['error'];
        }
    }
     
     
    try
    {
     
        $reponse = $bdd->query('SELECT * FROM realisations');
     
      $req = $bdd->prepare('INSERT INTO realisations (image, categorie, titre) VALUES(?, ?, ?)');
    $req->execute(array($nom, $_POST['categorie'], $_POST['titre']));
     
     
        while ($donnees = $reponse->fetch())
        {
        ?>
            <p>
             <img src="images/<?php echo $nom; ?>" ><br />
            </p>
        <?php
        }
     
        $reponse->closeCursor(); 
     
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
     
     
    ?>

  6. #6
    Modératrice

    Question bête : tu as vérifié si les images sont créées dans le dossier images ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Futur Membre du Club
    Citation Envoyé par Celira Voir le message
    Question bête : tu as vérifié si les images sont créées dans le dossier images ?
    C'est justement ça qui pose problème. Quand je les télécharge, elles ne vont pas dans le dossier images. Il y a juste le nom dans la base...

  8. #8
    Futur Membre du Club
    Citation Envoyé par LEM4000 Voir le message
    C'est justement ça qui pose problème. Quand je les télécharge, elles ne vont pas dans le dossier images. Il y a juste le nom dans la base...
    Est-ce qu'il y a du coup quelque chose de manquant dans mon code ?

###raw>template_hook.ano_emploi###