IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

PHP & Base de données Discussion :

Insertion du lien de l'image dan la BdD


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Par défaut Insertion du lien de l'image dan la BdD
    Bonjour,

    Je me retrouve avec une problématique avec mon formulaire. Le but de ce dernier est la possibilité d'ajouter un commentaire + l'upload d'une image. L'ajout du commentaire et l'upload du fichier se passe bien mais je n'arrive pas à rajouter le lien de l'image dans la BDD.

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    <meta charset="utf-8" />
    <?php
    $bdd = new PDO('mysql:host=127.0.0.1;dbname=panel;charset=utf8','root','');
    if(isset($_GET['id']) AND !empty($_GET['id'])) {
       $getid = htmlspecialchars($_GET['id']);
       $article = $bdd->prepare('SELECT * FROM customers WHERE id = ?');
       $article->execute(array($getid));
       $article = $article->fetch();
       setlocale (LC_TIME, 'fr_FR');
    setlocale (LC_TIME, 'fr_FR','fra');
    $date2 = strftime("%A %d %B %Y %T");
    $date = "24 Janvier 2021";
       if(isset($_POST['submit_commentaire'])) {
          if(isset($_POST['pseudo'],$_POST['commentaire']) AND !empty($_POST['pseudo']) AND !empty($_POST['commentaire'])) {
             $tmpName = $_FILES['file']['tmp_name'];
        $photo = $_FILES['file']['name'];
        $size = $_FILES['file']['size'];
        $error = $_FILES['file']['error'];
     
        $tabExtension = explode('.', $photo);
        $extension = strtolower(end($tabExtension));
     
        $extensions = ['jpg', 'png', 'jpeg', 'gif'];
        $maxSize = 400000;
     
        if(in_array($extension, $extensions) && $size <= $maxSize && $error == 0){
     
            $uniqueName = uniqid('', true);
            //uniqid génère quelque chose comme ca : 5f586bf96dcd38.73540086
            $file = $uniqueName.".".$extension;
            //$file = 5f586bf96dcd38.73540086.jpg
     
            move_uploaded_file($tmpName, './upload/'.$file);
            echo "Image enregistrée";
        }
        else{
            echo "Une erreur est survenue";
        }
     
             $pseudo = htmlspecialchars($_POST['pseudo']);
             $commentaire = htmlspecialchars($_POST['commentaire']);
             if(strlen($pseudo) < 25) {
                $ins = $bdd->prepare("INSERT INTO commentaires (user, commentaire, id_customers, photo) VALUES (?,?,?,?)");
                $ins->execute(array($pseudo,$commentaire,$getid,$file,));
                $c_msg = "<span style='color:green'>Votre commentaire a bien été posté</span>";
             } else {
                $c_msg = "Erreur: Le pseudo doit faire moins de 25 caractères";
             }
          } else {
             $c_msg = "Erreur: Tous les champs doivent être complétés";
          }
       }
     
     
       $commentaires = $bdd->prepare('SELECT * FROM commentaires WHERE id_customers= ? ORDER BY id DESC');
       $commentaires->execute(array($getid));
     
     
    ?>
    <h2>Article:</h2>
    <p><?= $article['f_name'] ?></p>
    <br />
    <h2>Commentaires:</h2>
    <form method="POST" enctype="multipart/form-data">
     
       <input type="text" name="pseudo" placeholder="Votre pseudo" /><br />
       <textarea name="commentaire" placeholder="Votre commentaire..."></textarea><br />
       <h2>Ajouter une image</h2>
        <form action="upload.php" method="POST" enctype="multipart/form-data">
     
            <label for="file">Fichier</label>
            <input type="file" name="file">
       <input type="submit" value="Poster mon commentaire" name="submit_commentaire" />
     
    </form>
    <?php if(isset($c_msg)) { echo $c_msg; } ?>
    <br /><br />
    <?php while($c = $commentaires->fetch()) { ?>
       <b><?= $c['date_commentaire'] ?> <b/> <?= $c['user'] ?>: <?= $c['commentaire'] ?><br />
    <?php } ?>
    <?php
    }
    ?>
    Envois remerciant d'avance de votre aide

  2. #2
    Membre Expert Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Par défaut
    Bonjour,
    Déjà là une virgule en trop
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ins->execute(array($pseudo,$commentaire,$getid,$file,));
    A remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ins->execute(array($pseudo,$commentaire,$getid,$file));

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    vttman a raison pour la virgule en trop.

    Tu parles de difficulté à insérer le lien de l'image dans la bdd, mais dans ton code, y a rien à ce sujet...

    D'autre part, quand tu fais un SELECT en SQL, évite les SELECT * et fais plutôt $req = "SELECT nom_var_1, nom_var_2, (etc)"; et ensuite pour récupérer les valeurs :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $stmt = $bdd->prepare($sql);
    $stmt->execute();
    $var1=$stmt->fetch();
    $var2=$stmt->fetch();
    etc
    et également pour les requêtes préparées, utilise plutôt les marqueurs nommés au lieu des marqueurs interrogatifs (c'est plus clair) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req = "SELECT nom_var1, nom_var2 FROM ma_table WHERE nom_var3=:val_var3";
    $stmt = $bdd->prepare($sql);
    $stmt->execute([':val_var3'=>$val3]);

Discussions similaires

  1. insertion et affichage d'une image dans une page web
    Par Hucpuh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 19/08/2008, 12h07
  2. inserer un lien vers une image dans une news
    Par jerrypeeren dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 22/07/2008, 22h51
  3. [HTML] Lien sur une image dans un span
    Par acta49xf dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/03/2008, 09h01
  4. avec click sur un lien, ouvrir une image dans une page html
    Par Bydouille dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 17/10/2007, 20h40
  5. Insertion des boutons et des images dans une JTable
    Par anouar dans le forum Composants
    Réponses: 2
    Dernier message: 17/11/2005, 20h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo