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 :

Enregistrer les données dans la base de données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut Enregistrer les données dans la base de données
    bonjour a tout le monde
    bah enfin je le poste ici je pense ke c mieu que la page de chat, les msgs passent trop vite je px pas me consentrer pour lire les reponde.

    bon, j'ai créer deuxx champs le premièr est "titre" et l'autre "texte". maintenant je veux quand l'utilisateur remplit ces deux champs, il clique sur "Envoyer", les données s'envoient dans une table "topic" existent dans ma base donnée, intitulée "forum".
    voilà mon code qui ne marche pas :
    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
    <h2>Ajouter une discution :</h2>
     
        <?php
                   if (isset($_POST['titre']) AND isset($_POST['texte'])) // Si les variables existent
                       {
                            if ($_POST['titre'] != NULL AND $_POST['texte'] != NULL) // Si on a quelque chose à enregistrer
                                  {
            // D'abord, on se connecte à MySQL
            mysql_connect("localhost", "root", "") or die(mysql_error);
            mysql_select_db("forum");
     
            $titre = $_POST['titre'];
            $texte = $_POST['texte']; $texte = mysql_real_escape_string(htmlspecialchars($_POST['texte']));
              // $variable=$_POST['nom_de_ton_champ_a_recuperer'];
     
            // Ensuite on enregistre le message
            mysql_query("INSERT INTO topic(titre,texte) VALUES('$titre', '$texte')") or die (mysql_error());
     
            // On se déconnecte de MySQL
            mysql_close();
                                  }
                       }
                 ?>
     
     
                <form method="post" name="frm" action='forums.php'>
                  <p>            
                    <strong>Titre : </strong><input type="text" name="titre"> <br>
                    <strong>Texte : </strong> <br><textarea name="texte" id="ameliorer" rows="15" cols="40"></textarea> 
                    <center><input type="submit" value="Envoyer"><br><br></center>
                  </p>            
                </form>
    que je doi faire pour resoudre ce probleme ?
    merci d'avance

  2. #2
    Membre éclairé
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 71
    Par défaut
    essaie sans mes mysql_real_escape_string() dans un premier temps


    de plus essaie de voir les conditions sur l'id, null est logiquement interdit, met le en auto-incremente et suprime le de l'insert !


    edit: met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     or die('<br/> erreur mysql: '.mysql_error().'<br/>');
    pour y voire plus claire

  3. #3
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Si tu nous disais quelle est l'erreur
    J'ai pas de plugin boule de cristal ( Celira )

    PS: évite le sms

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par reckahomis1 Voir le message
    que je doi faire pour resoudre ce probleme ?
    1) nous dire ce qu'il se passe exactement. "ça ne marche pas" n'est pas un message d'erreur recevable. L'insertion ne se fait pas ? le formulaire n'est pas posté ? ton écran devient rouge et affiche "Tu m'a tuer" en caractères gothiques de 150 pixels de haut ?

    2) ajouter un echo ou quelque chose pour vérifier si ton script entre dans la boucle. et éventuellement un echo de la requete

    3) tenter un var_dump en début de script pour savoir ce que ton formulaire envoie vraiment.
    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
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    Citation Envoyé par Celira Voir le message
    3) tenter un var_dump en début de script pour savoir ce que ton formulaire envoie vraiment.
    baj j'ai modifié le code..

    A Celira : Var_dump, comment on déclare cette variable et quel est son reaction dans la pageweb?

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    var_dump te permet de voir (entre autres) le contenu d'un tableau. Donc un var_dump de la variable $_POST te permet de savoir le contenu des champs envoyés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<pre>';
    var_dump($_POST);
    echo '</pre>';
    Et on en sait toujours pas quel est le problème...
    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
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    Citation Envoyé par Celira Voir le message
    var_dump te permet de voir (entre autres) le contenu d'un tableau. Donc un var_dump de la variable $_POST te permet de savoir le contenu des champs envoyés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<pre>';
    var_dump($_POST);
    echo '</pre>';
    Et on en sait toujours pas quel est le problème...
    il ma donné array(0) {}
    en fait c quoi ?

  8. #8
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    Citation Envoyé par litllechicken Voir le message
    essaie sans mes mysql_real_escape_string() dans un premier temps


    de plus essaie de voir les conditions sur l'id, null est logiquement interdit, met le en auto-incremente et suprime le de l'insert !


    edit: met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     or die('<br/> erreur mysql: '.mysql_error().'<br/>');
    pour y voire plus claire
    Ca joue le meme rôle que or die(mysql_error); ??

  9. #9
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Salut! Mais c'est normal tu récupère un POST avant le formulaire! Donc l'array de ton var_dump est vide!

    Code php : 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
    <h2>Ajouter une discution :</h2>
                <form method="post" name="frm" action='forums.php'>
                  <p>            
                    <strong>Titre : </strong><input type="text" name="titre"> <br>
                    <strong>Texte : </strong> <br><textarea name="texte" id="ameliorer" rows="15" cols="40"></textarea> 
                    <center><input type="submit" value="Envoyer"><br><br></center>
                  </p>            
                </form>
        <?php
                   if (isset($_POST['titre']) AND isset($_POST['texte'])) // Si les variables existent
                       {
                            if ($_POST['titre'] != NULL AND $_POST['texte'] != NULL) // Si on a quelque chose à enregistrer
                                  {
                                      // D'abord, on se connecte à MySQL
                                         mysql_connect("localhost", "root", "") or die(mysql_error());
                                         mysql_select_db("forum");
     
                                        $titre = $_POST['titre'];
                                        $texte = $_POST['texte']; 
                                        $texte = mysql_real_escape_string(htmlspecialchars($_POST['texte']));
                                     // $variable=$_POST['nom_de_ton_champ_a_recuperer'];
     
                                      // Ensuite on enregistre le message
                                        mysql_query("INSERT INTO topic(titre,texte) VALUES('$titre', '$texte')") or die (mysql_error());
     
                                       // On se déconnecte de MySQL
                                     mysql_close();
                                  }
                       }
                 ?>

    Edit: Pour faire simple tu ne peux pas tester des variable que tu n'as pas encore récupéré, vu que tes POST tu les récupèrent à la soumission du formulaire, donc les test sont à faire après

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si la page sur laquelle se trouve le formulaire et l'insertion dans la base n'est pas forum.php c'est normal que ça ne fonctionne pas.
    Ce que tu dois faire, c'est diriger le formulaire vers la page courante, faire l'insertion puis rediriger vers forum.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
    <?php
                   if (isset($_POST['titre']) AND isset($_POST['texte'])) // Si les variables existent
                       {
                            if ($_POST['titre'] != NULL AND $_POST['texte'] != NULL) // Si on a quelque chose à enregistrer
                                  {
                                      // D'abord, on se connecte à MySQL
                                         mysql_connect("localhost", "root", "") or die(mysql_error());
                                         mysql_select_db("forum");
     
                                        $titre = $_POST['titre'];
                                        $texte = $_POST['texte']; 
     
                                      // Ensuite on enregistre le message
                                        mysql_query("INSERT INTO topic(titre,texte) VALUES('$titre', '$texte')") or die (mysql_error());
     
                                       // On se déconnecte de MySQL
                                     mysql_close();
                                     header('Location: forums.php');
                                  }
                       }
                 ?>
    <h2>Ajouter une discution :</h2>
                <form method="post" name="frm" action=''>
                  <p>            
                    <strong>Titre : </strong><input type="text" name="titre"> <br>
                    <strong>Texte : </strong> <br><textarea name="texte" id="ameliorer" rows="15" cols="40"></textarea> 
                    <center><input type="submit" value="Envoyer"><br><br></center>
                  </p>            
                </form>
    Attention pour que ce code fonctionne, il ne doit y avoir aucun echo ou code en dehors de <?php ?> avant la ligne header...
    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]

  11. #11
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Par défaut
    Citation Envoyé par Celira Voir le message
    Si la page sur laquelle se trouve le formulaire et l'insertion dans la base n'est pas forum.php c'est normal que ça ne fonctionne pas.
    Ce que tu dois faire, c'est diriger le formulaire vers la page courante, faire l'insertion puis rediriger vers forum.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
    <?php
                   if (isset($_POST['titre']) AND isset($_POST['texte'])) // Si les variables existent
                       {
                            if ($_POST['titre'] != NULL AND $_POST['texte'] != NULL) // Si on a quelque chose à enregistrer
                                  {
                                      // D'abord, on se connecte à MySQL
                                         mysql_connect("localhost", "root", "") or die(mysql_error());
                                         mysql_select_db("forum");
     
                                        $titre = $_POST['titre'];
                                        $texte = $_POST['texte']; 
     
                                      // Ensuite on enregistre le message
                                        mysql_query("INSERT INTO topic(titre,texte) VALUES('$titre', '$texte')") or die (mysql_error());
     
                                       // On se déconnecte de MySQL
                                     mysql_close();
                                     header('Location: forums.php');
                                  }
                       }
                 ?>
    <h2>Ajouter une discution :</h2>
                <form method="post" name="frm" action=''>
                  <p>            
                    <strong>Titre : </strong><input type="text" name="titre"> <br>
                    <strong>Texte : </strong> <br><textarea name="texte" id="ameliorer" rows="15" cols="40"></textarea> 
                    <center><input type="submit" value="Envoyer"><br><br></center>
                  </p>            
                </form>
    Attention pour que ce code fonctionne, il ne doit y avoir aucun echo ou code en dehors de <?php ?> avant la ligne header...
    Merci bcp Celira pour m'avoir aider, ca m'a fait mal n'est ce pa !¡ et merci pour les liens, ce sont vrement utiles et interessents

    Bah dernière question
    header('Location: forums.php'); explique quoi ?
    et quel est le rôle de action='PageQuelquonque'

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/06/2013, 17h21
  2. Stocker les sessions dans une base de données
    Par mic79 dans le forum Langage
    Réponses: 7
    Dernier message: 06/04/2006, 21h57
  3. Réponses: 4
    Dernier message: 29/11/2004, 16h51
  4. les images dans une base de données
    Par houhou dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/06/2004, 14h27

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