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 des données dans la base


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 30
    Points
    30
    Par défaut insertion des données dans la base
    Bonjour,

    Le but est d'insérer les données à partir d'un formulaire remplis par l'utilisateur dans la base. Si l'insertion échoue, affiche un message d'erreur. Pourriez-vous me dire ou sont les fautes, j'ai tjs un message d'erreur de l'enregistrement.

    j'ai écrit les fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function boutonsradio($nom, $tab){
    foreach($tab as $cle=>$val)  {
    echo "<BR><INPUT type=\"radio\" name=\"$nom\" value=\"$cle\" />$val \n" ; }    
    }
    function zonetexte($nom){
    echo "<BR><BR><TEXTAREA type=\"text\" name=\"$nom\" rows=\"5\" cols=\"70\">\n</TEXTAREA>";
    }
     
    function zonedate($date){
    echo "<INPUT type=\"date\" name=\"$date\" size=\"10\" />";
    }
    les formulaires:
    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
     
    $req_matiere = "SELECT * FROM enseignements";
    $res_matiere = mysql_query($req_matiere);
     
    while($ligne=mysql_fetch_object($res_matiere)){
    $tab_matiere[$ligne->id] = "$ligne->intitule";
    }
    mysql_close($connexion) ;
    echo "<CENTER><FORM action=\"test.php\" method=\"POST\">\n
          <BR><BR>\n
          <TABLE>\n
          <TR><TD> Enseignement : <br>";
    boutonsradio("enseignement", $tab_matiere);
    echo "</TD></TR>\n
          <TR><TD><BR>Énoncé du devoir : ";
    zonetexte("text");
    echo "</TD><TR>\n
          <TR><TD><BR>Date à rendre : ";
    zonedate("daterendu");
    echo " (ex. 2007-03-05)</TD></TR>\n
          <TR><TD><BR><INPUT type=\"submit\" value=\"Valider\"></TD></TR>\n
          </TABLE>\n</FORM></CENTER>";
    afficher un message si l'enregistrement est OK.
    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
     
    session_start() ;		
    $id = $_SESSION['id'] ;		
    $nom = $_SESSION['nom'] ;		
    $prenom = $_SESSION['prenom'] ;		
     
    require("fonction.php") ;
    $connexion = connexion() ;
     
    $matiere = $_POST['enseignement'];
    $enonce = $_POST['text'];
    $date = $_POST['daterendu'];
     
    $req_in = "INSERT INTO devoirs VALUES ($id, $matiere, $enonce, $date)";
    $res_in = mysql_query($req_in);
     
    if($res_in<>FALSE){
     
    echo "Vous avez enregistré les informations dans la base de donnée !!!";
    }
    else  { echo "Erreur lors de l'enregistrement !";       }
     
    mysql_close($connexion) ;
    La table de devoirs a 5 champs: 3 premiers champs sont le type int, 4e champs est le type texte, le dernier le type date.

    Merci beaucoup

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    Salut,
    pour avoir l'erreur exact, tu peux ajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql_query($req_in) or die (mysql_error ());
    la table a 5 champs alors que tu en enregistres que 4
    si le premier est de type auto_increment, vaux mieux mettre le nom des 4 autres champs avant le values.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    J'ai ajouté ce que vous m'avez proposé. J'ai essayé à remplir le formulaire et l'ai envoyé. Un message est affiché comme Champ 'zfdsdf' inconnu dans field list. Je pense que c'est le problème du champs de zone text, le type de ce formulaire est du texte. Je ne vois pas le pb.

    Vous dites si le premier est de type auto_increment, vaux mieux mettre le nom des 4 autres champs avant le values.

    Mon premier champs est de type auto_increment, que veut dire mettre le nom des 4 autres champs, je les ai mis, n'est pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_in = "INSERT INTO devoirs VALUES ($id, $matiere, $enonce, $date)";

  4. #4
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Si il y a des champs textes il faut les encadrer par des quotes et les traiter avec addslashes je crois, et il faut bien nommer les champs, l'idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req_in = "INSERT INTO devoirs (champ1, champ2, champ3, champ4) VALUES ($id, $matiere, '" . addslashes($enonce) . "', $date)";
    Pareil pour matiere et date si c'est du texte.
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    Merci beaucoup

    dans le dernier champs, c'est de type date, j'ai rempli une date format prédéfini dans la base comme 2007-01-01 , mais il s'affiche pas dans ma base, il s'affiche 0000-00-00, ou je dois vérifier pour savoir quel est le pb?

  6. #6
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    Tu as encadré cette date avec des quotes dans la requête ?
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    voici la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $req_in = "INSERT INTO devoirs (id_enseignant, id_ec, enonce, date_rendu) VALUES ($id, $matiere, '".addslashes($enonce)."', $date)";
    $res_in = mysql_query($req_in) or die (mysql_error ());
    Y a t il le pb de taille dans la fonction, j'ai ecrit 10, on dirait que c'est exact, bon, je ne sais pas pourquoi il a de pb.

  8. #8
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut
    La date n'est pas encadrée par des quotes là
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

Discussions similaires

  1. [Débutant] Problème d'insertion des données dans la base
    Par hugnka dans le forum VB.NET
    Réponses: 6
    Dernier message: 07/04/2012, 18h00
  2. Réponses: 1
    Dernier message: 16/06/2010, 19h14
  3. Insertion des données dans une base access 2007
    Par guy_antoine_mav dans le forum Accès aux données
    Réponses: 2
    Dernier message: 11/11/2009, 21h34
  4. nouveau problême d'insertion des données dans la base de données
    Par tchimou dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/03/2007, 15h32
  5. [VB6]problème d'insertion des donneés dans une base d'Access2003
    Par lanbok dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/05/2006, 12h17

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