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 :

inserer donnée dans base de donnée [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut inserer donnée dans base de donnée
    Bonjour

    Je voudrais faire un systeme de commentaires pour mon site, mais je bloque pour ajouter des données depuis un formulaire...

    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
    <?php
    mysql_connect("localhost", "celine", "");
    mysql_select_db("celine");
    mysql_query('SELECT id,comment,nom FROM commentaires');
     
    $nom = 'nom';
    $comment = 'commentaire';
    $id ='';
    ?>
      <form action="commentaires.php" method="post">
    <p><h3>Nom :</h3> <input type="text" size="60" name="nom" value="<?php echo $nom; ?>" /></p><br>
    <p>
        <h3>Contenu :</h3>
        <textarea name="comment" cols="60" rows="10" value="<?php echo $comment; ?>">
     
        </textarea><br />
     
        <input type="hidden" name="id" value="<?php echo $id; ?>" />
        <input type="submit" value="Mettre une connerie sur le blog !" />
    </p>
    </div>
    </form>
    La base s'appelle bien celine, la table commentaires, mais rien ne rentre et je ne vois pas pourquoi....

  2. #2
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Si tu ne demande pas d'insertion ou de modification, c'est certain il ne se passera rien !!

    La SQL commande de création est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO 'commentaires' (comment) VALUES $POST['comment'] WHERE id=$POST['id']
    Fais attention SELECT te permet seulement de lire la table.
    Je te conseil fortement soit d'acheter un bon bouquin soit de lire de bon tuto ou les 2
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    merci pour vos réponses..

    j'ai donc fait un ca :

    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
    <?php
     
           // connexion à la base
    $db = mysql_connect('localhost', 'patatesa_celine', 'celine')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
     
        mysql_select_db('patatesa_celine',$db)  or die('Erreur de selection '.mysql_error());
     
        // on écrit la requête sql
        $sql = "INSERT INTO commentaires(id, nom, email, comment) VALUES('','$nom','$email','$comment')";
     
        // on insère les informations du formulaire dans la table
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
      $nom = '';
      $email = '';
      $comment ='';  
     
    ?> 
     
     <form action="comment.php" method="post">
    <p><h3>Nom :</h3> <input type="text" size="60" name="nom" value="<?php echo $nom; ?>" /></p><br>
    <input type="text" size="60" name="nom" value="<?php echo $email; ?>" /></p>
    <p>
        <h3>Contenu :</h3>
        <textarea name="comment" cols="60" rows="10" value="<?php echo $comment; ?>">
     
        </textarea><br />
     
        <input type="hidden" name="id" value="<?php echo $id; ?>" />
        <input type="submit" value="envoyer" />
    </p>
    </form>  
    <?php // on insère les informations du formulaire dans la table
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());?>
    aucune erreur, sauf que cela me provoque deux enregistrement dans la table, et qu'a part l'id (auto-incrementer) rien ne rentre... !

  4. #4
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    A lire ton code, je pense que tu n'as pas encore bien compris comment fonctionne le mécanisme de soumission de formulaire en HTML, alors je vais essayé de l'expliquer simplement avec un exemple.
    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
    <?php
    if($_POST){
    	echo "le formuaire a été soumis:<br>";
    	print_r($_POST);
    	// ... Tu fais ici ta salade SQL ...
    }
    else{
    	echo "il faut remplir et soumettre le formuaire.<br>";
    }
    ?> 
    <form action="comment.php" method="post">
    <p><h3>Nom :</h3> <input type="text" size="60" name="nom" value="<?php echo $nom; ?>" /></p><br>
    <input type="text" size="60" name="nom" value="<?php echo $email; ?>" /></p>
    <p>
        <h3>Contenu :</h3>
        <textarea name="comment" cols="60" rows="10" value="<?php echo $comment; ?>">
     
        </textarea><br />
     
        <input type="hidden" name="id" value="<?php echo $id; ?>" />
        <input type="submit" value="envoyer" />
    </p>
    </form>
    Il y a d'autres modifs à faire, mais c'est un début.
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    bon la je suis perdu..

    Le $_post sert a indiqué que l'on va envoyez des données par formulaires (si c'est pas ca dites le moi )

    mais meme comme ca, cela ne fonctionne pas, il m'envoie toujours deux entrer dans la base au lieu d'une, et vide

    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
    <?php
    if($_POST){
    	echo "le formuaire a été soumis:<br>";
     
     
           // connexion à la base
    $db = mysql_connect('localhost', 'patatesa_celine', 'celine')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
     
        mysql_select_db('patatesa_celine',$db)  or die('Erreur de selection '.mysql_error());
     
        // on écrit la requête sql
        $sql = "INSERT INTO commentaires(id, nom, email, comment) VALUES('','$nom','$email','$comment')";
     
        // on insère les informations du formulaire dans la table
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
      $nom = 'nom';
      $email = 'Email';
      $comment ='Votre commentaire';  
    }
    else{
    	echo "il faut remplir et soumettre le formuaire.<br>";
    }
    // on insère les informations du formulaire dans la table
     
    ?> 
     
     <form action="comment.php" method="post">
    <p><input type="text" size="50" name="nom" value="<?php echo $nom; ?>" /></p><br>
    <input type="text" size="50" name="email" value="<?php echo $email; ?>" /></p>
    <p>
        <h3>Contenu :</h3>
        <textarea name="comment" cols="40" rows="10" value="<?php echo $comment; ?>">
     
        </textarea><br />
     
        <input type="hidden" name="id" value="<?php echo $id; ?>" />
        <input type="submit" value="envoyer" />
    </p>
    </form>

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2004
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 304
    Points : 405
    Points
    405
    Par défaut
    Pour vérifier si on est dans le cas d'un $_POST, on vérifie sur un des variables de notre formulaire, dans ton cas, on pourrai vérifié la présence du nom, de email, ou de commentaire et meme de id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(isset($_POST["id"]))
    {
    //On est dans le cas, d'un envoie, on ajoute nos données à la BDD
     
    }
    S'il n'y a pas de Solution, c'est qu'il n'y a pas de Problème.
    ----------------------------------------------------------------------------------------
    Pour se protéger, un bon préservatif pour votre PC : AntiVir et SpyBot - Search & Destroy

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    ca nous donne donc ceci :

    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
    <?php
    if($_POST){
    	echo "le formuaire a été soumis:<br>";
    if(isset($_POST["comment"]));
     
     
     
           // connexion à la base
    $db = mysql_connect('localhost', 'patatesa_celine', 'celine')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
     
        mysql_select_db('patatesa_celine',$db)  or die('Erreur de selection '.mysql_error());
     
        // on écrit la requête sql
        $sql = "INSERT INTO commentaires(id, nom, email, comment) VALUES('','$nom','$email','$comment')";
     
        // on insère les informations du formulaire dans la table
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
      $nom = 'nom';
      $email = 'Email';
      $comment ='Votre commentaire';  
    }
    else{
    	echo "il faut remplir et soumettre le formuaire.<br>";
    }
    // on insère les informations du formulaire dans la table
     
    ?> 
     
     <form action="comment.php" method="post">
    <p><input type="text" size="50" name="nom" value="<?php echo $nom; ?>" /></p><br>
    <input type="text" size="50" name="email" value="<?php echo $email; ?>" /></p>
    <p>
        <h3>Contenu :</h3>
        <textarea name="comment" cols="40" rows="10" value="<?php echo $comment; ?>">
     
        </textarea><br />
     
        <input type="hidden" name="id" value="<?php echo $id; ?>" />
        <input type="submit" value="envoyer" />
    </p>
    </form>
    il rentre l'info une seule fois maintenant (c'est deja mieux) mais toujours pareil que l'id.. pas le reste...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 265
    Points : 53
    Points
    53
    Par défaut
    j'ai fini par trouvé

    j'ai décider de separer le code en deux (c'est ca qui me fait des entrées en double, chaque fois que la page s'actualise...)

    le formulaire :

    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
    <form name="insertion" action="commentaires.php" method="POST">
      <table border="0" align="center" cellspacing="2" cellpadding="2">
        <tr align="center">
          <td>nom</td>
          <td><input type="text" name="nom"></td>
        </tr>
        <tr align="center">
          <td>prenom</td>
          <td><input type="text" name="email"></td>
        </tr>
        <tr align="center">
          <td>commentaires</td>
          <td><textarea type="textarea" cols="40" rows="10" name="comment"> </textarea></td>
        </tr>
     
     
        <tr align="center">
          <td colspan="2"><input type="submit" value="insérer"></td>
        </tr>
      </table>
    </form>
    et la partie php

    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
    <?php
      //connection au serveur
      $cnx = mysql_connect( "localhost", "root", "" ) ;
     
      //sélection de la base de données:
      $db  = mysql_select_db( "base" ) ;
     
      //récupération des valeurs des champs:
      //nom:
      $nom     = $_POST["nom"] ;
      //prenom:
      $email        = $_POST["email"] ;
      //numéro de téléphone:
      $comment       = $_POST["comment"] ;
     
      //création de la requête SQL:
      $sql = "INSERT  INTO commentaires (nom, email, comment)
                VALUES ( '$nom', '$email', '$comment') " ;
     
      //exécution de la requête SQL:
      $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
     
      //affichage des résultats, pour savoir si l'insertion a marchée:
      if($requete)
      {
        echo("L'insertion a été correctement effectuée") ;
      }
      else
      {
        echo("L'insertion à échouée") ;
      }
    ?>

  9. #9
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    C'est bien que tu sois parvenu à faire fonctionner ton code.
    Mais la séparation du code formulaire HTML et sont traitement en php n'est absoluement pas nécessaire, surtout dans le cas d'un formulaire simple.
    Si tu traite bien le if($_POST), il n'y a aucun risque de double insertion dans la base (sauf en cas de rechargement de la page, ce qui est aussi possible dans le cas de code séparés).
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] erreur doublon dans base de données sans trouver les données
    Par warrios dans le forum Access
    Réponses: 3
    Dernier message: 04/11/2014, 18h19
  2. erreur récupération des données depuis base de données dans une liste
    Par amintoraa dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 25/04/2014, 23h41
  3. Impossible d'ajouter données dans base de données
    Par spartaxhit dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/01/2008, 02h58
  4. methodologie pour Supprimer données dans base de données
    Par elkhy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 26/04/2006, 18h30
  5. insertion de données dans Base de données Oracle 9
    Par hottnikks_79 dans le forum SQL
    Réponses: 2
    Dernier message: 16/03/2006, 00h07

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