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 de données dans 3 tables liées [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Guinée

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 112
    Par défaut Insertion de données dans 3 tables liées
    Voilà, je dispose de trois tables en relation avec les champs suivants: cours (id_cours, nom_cours) ; chapitres (id_chapitre, nom_chapitre, num_chapitre, id_cours, id_contenu) ; contenu (id_contenu, text_contenu, date_creation, date_modification) ;
    Et je voudrais faire une requête pour insérer les données dans ces trois tables en relation et là suis planté ! Si quelqu’un pouvait m’aider ????

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    bonjour,

    faites 3 insert différents ?

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    1) Insérer dans la table cours et récupérer l'identifiant auto-incrémenté (mysql_insert_id en PHP).
    2) Idem avec la table contenu.
    3) Insérer dans la table chapitres en utilisant les identifiants récupérés.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Guinée

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 112
    Par défaut
    J'apprécie bien ton aide CinePhil mais j'avoue là suis vraiment planté par ce que je ne sais pas me servir de cette fonction ou propriété (mysql_insert_id en PHP) et un exemple avec les codes pour mon cas m'aidera beaucoup!
    Et pour ce qui est de la proposition de punkoff j'y avait pensé mais sa ne ma pas donné le résultat es-conte par ce que les clefs étrangères (id_cours, id_contenu) de la table chapitre étaient tous null (ont pris pour valeur 0) voici mon 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
    <?php
    $contenu=$_POST['editor1'];
    $ncours=$_POST['ncours'];
    $nchapitre=$_POST['nchapitre'];
    $numchapitre=$_POST['numchapitre'];
    $today=date('y-m-d,h-m-s');
    $datemod=date('y-m-d,h-m-s');
    $connexion=mysql_connect("localhost", "root", "" )or die("cannot connect" );
    	mysql_select_db("basedugenie",$connexion )or die("cannot select DB" );
    	mysql_query("SET NAMES 'utf8'" );
     
    $requete="INSERT INTO cours (id_cours,nom_cours) VALUES('','$ncours')";
    $resultat=mysql_query($requete);
     
    $requete1="INSERT INTO chapitres (id_chapitre,nom_chapitres,num_chapitres,id_contenu,id_cours) VALUES('','$nchapitre','$numchapitre','$contenu','$ncours')";
    $resultat1=mysql_query($requete1);
     
    $requete2="INSERT INTO contenu (id_contenu,text_contenu,date_creation,date_modification) VALUES('','$contenu','$today','$datemod')";
    $resultat2=mysql_query($requete2);
    $erreur=mysql_error();
    				print ($erreur);
    				header("location: ajouterchap.php");
    ?>

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Tu n'es pas très loin de la solution.

    Quelques remarques tout de même...

    1) Il semble que tes identifiants soient, comme il se doit, des entiers auto-incrémentés.
    Inutile de vouloir leur donner une valeur, encore moins une chaîne vide puisque ce sont des entiers !

    2) Protège tes variables utilisées dans les requêtes pour éviter les injections SQL avec mysql_real_escape_string et intval.

    3) Comme dit dans mon précédent message, utilise mysql_insert_id() pour récupérer la valeur de l'identifiant qui a été créé par l'insertion.

    4) Insère d'abord dans cours et dans contenu avant d'insérer dans chapitre puisque chapitre doit accueillir les clés étrangères référençant le cours et le contenu.

    5) Aère ton code ; il sera plus agréable à lire quand tu auras à revenir dessus.

    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
    31
    32
    33
    <?php
    $contenu = mysql_real_escape_string($_POST['editor1']);
    $ncours = mysql_real_escape_string($_POST['ncours']);
    $nchapitre = mysql_real_escape_string($_POST['nchapitre']);
    $numchapitre = mysql_real_escape_string($_POST['numchapitre']); // si c'est un entier, utilise plutôt intval($_POST['numchapitre'])
    $today = date('y-m-d,h-m-s');
    $datemod = date('y-m-d,h-m-s');
    $connexion = mysql_connect("localhost", "root", "" ) OR die('cannot connect' );
    mysql_select_db('basedugenie', $connexion ) OR die('cannot select DB' );
    mysql_query("SET NAMES 'utf8'" );
     
    $requete = "
      INSERT INTO cours (nom_cours) 
      VALUES('".mysql_real_escape_string($ncours)."')
    ";
    mysql_query($requete) or die("Erreur à l'insertion du cours : ".mysql_error().'<br />'.$requete);
    $id_cours = mysql_insert_id($connexion);
     
    $requete = "
      INSERT INTO contenu (text_contenu, date_creation, date_modification) 
      VALUES('$contenu', '$today', '$datemod')
    ";
    mysql_query($requete) or die("Erreur à l'insertion du contenu : ".mysql_error().'<br />'.$requete);
    $id_contenu = mysql_insert_id($connexion);
     
    $requete = "
      INSERT INTO chapitres (nom_chapitres, num_chapitres, id_contenu, id_cours) 
      VALUES('$nchapitre', '$numchapitre', $id_contenu, $id_cours)
    ";
    $resultat1 = mysql_query($requete1) or die("Erreur à l'insertion du chapitre : ".mysql_error().'<br />'.$requete);
     
    header("location: ajouterchap.php");
    ?>

    Une dernière chose qui m'intrigue quand même dans ton code : à chaque nouvelle association de contenu et de cours pour constituer un chapitre, tu vas ajouter de nouveau le cours et le contenu !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Guinée

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 112
    Par défaut
    Ok! l'utilisation de mysql_insert_id() a bien fonctionner comme je le voulais seulement avec mysql_real_escape_string pour éviter les injections SQL ne fonctionne pas à merveille du tout par ce que sa poste les données mais avec un contenu vide! Et je ne sais pas ce qui manque ou ce qu'il me faut faire!

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Je serais étonné que ça soit la fonction mysql_real_escape_string() qui provoquerait ces erreur de contenu vide.
    Quelles sont les données qui présentes des problèmes ? Toutes ?


    Je verrais plutôt que :
    Soit les informations ne seraient pas saisies au niveau du formulaire (étape juste avant)
    Soit le formulaire (toujours l'étape d'avant) contient des erreurs, ce qui fait que le $_POST ne contiendrait pas toutes les données souhaitées.

    Dans des cas comme ça, il ne faut pas hésiter de faire un peu de débogage afin d'avoir des informations plus précises/pertinentes.

    Exemple : (dès la 1ère de code de cette page qui effectue les insertions)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Ceci
    var_dump($_POST);
     
    // Ou alors
    print_r($_POST);
     
    exit(); // Ici, on stop net le code à cette ligne.
    // Ca évite de faire des insertions inutilement, donc de polluer la Bdd.
    Ensuite suffit de vérifier que toutes les données attendues soient là, et quelles correspondent à celles attendues aussi.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $datemod = date('y-m-d,h-m-s');
    Est tu certain de ce bon format de date (datetime) ?

    Ceci me semble plus standard : (fait un essai, ça ne mange pas d'pain)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $datemod = date('Y-m-d H:m:s');

  8. #8
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Guinée

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 112
    Par défaut
    Voici les données qui me provoquent les erreurs de contenu vide:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $contenu =mysql_real_escape_string($_POST['editor1']);
    $ncours =mysql_real_escape_string($_POST['ncours']);
    $nchapitre =mysql_real_escape_string($_POST['nchapitre']);
    Et pour plus d'information toutes les informations sont saisi au niveau du formulaire tels que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $contenu =mysql_real_escape_string($_POST['editor1']);
    est le contenu d'un texte area de ckeditor et son type de champs dans la base de donnée est longtext
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ncours =mysql_real_escape_string($_POST['ncours']);
    est le contenu d'une liste de choix et son type de champs dans la base de donnée est varchar(255)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nchapitre =mysql_real_escape_string($_POST['nchapitre']);
    est le contenu d'un champ input et son type de champs dans la base de donnée est varchar(255)
    Et voilà!

  9. #9
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Voici les données qui me provoquent les erreurs de contenu vide:
    Sur un forum comme ça, il ne faut pas hésiter à être plus précis, quitte à se répéter.

    Ici, tu parles de contenu vide, certes, mais est-ce vide car comme plus haut elles sont vide dans la Bdd, où est-ce parce que tu l'as remarqué grâce au var_dump() que je t'avais suggérer de faire ?

    On ne sait, du coup, il existe plein de cas d'erreurs possible.
    Impossible de toutes les évoqués.

    Je vais juste donner un exemple typique d'erreur.
    On fais un var_dump($_POST), ce qui va afficher toutes les données contenu dans ce tableau qui n'est qu'autres que les données renvoyées par l'étape d'avant : le formulaire.
    On constate (hypothèse toujours) que l'élément "editor1" n'y se trouve pas, cependant, il y a un élément "editor" avec les données saisies.
    Et bien on peu conclure qu'il y tout simplement erreur sur le nom.
    -> Soit on corrige cette page en récupérant avec comme nom "editor"
    -> Soit on renomme le champ "editor" coté formulaire par "editor1".


    Si dans le var_dump() il y rien qui pourrait correspondre à cet donnée "editor", alors c'est peut être l'intégration de ckeditor qui ne va pas.
    Faudrait revoir les tutoriels de ce Soft pour tenter de voir où ça ne va pas.
    Autre hypothèse encore.

    Toujours est il que tant qu'une données est inexistante dans le var_dump($_POST), c'est au niveau du formulaire où ça ne va pas.


    Au passage, active la gestion des erreurs Php, car si c'était le cas tu aurais dû obtenir des erreurs renvoyés par Php.
    Dans le php.ini -> display_error à On

  10. #10
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Guinée

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 112
    Par défaut
    Ok RunCodePhp voilà j'ai suivis vos conseils et j'ai utilisé pour avoir ce ci:
    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
    <?php
    $contenu =mysql_real_escape_string($_POST['editor1']);
    $ncours =mysql_real_escape_string($_POST['ncours']);
    $nchapitre =mysql_real_escape_string($_POST['nchapitre']);
    $numchapitre =mysql_real_escape_string($_POST['numchapitre']); // si c'est un entier, utilise plutôt intval($_POST['numchapitre'])
    $today = date('y-m-d,h-m-s');
    $datemod = date('y-m-d,h-m-s');
    $connexion = mysql_connect("localhost", "root", "" ) OR die('cannot connect' );
    mysql_select_db('basedugenie', $connexion ) OR die('cannot select DB' );
    mysql_query("SET NAMES 'utf8'" );
     
    $requete = "
      INSERT INTO cours (nom_cours) 
      VALUES('".mysql_real_escape_string($ncours)."')
    ";
    mysql_query($requete) or die("Erreur à l'insertion du cours : ".mysql_error().'<br />'.$requete);
    $id_cours = mysql_insert_id($connexion);
     
    $requete = "
      INSERT INTO contenu (text_contenu, date_creation, date_modification) 
      VALUES('$contenu', '$today', '$datemod')
    ";
    mysql_query($requete) or die("Erreur à l'insertion du contenu : ".mysql_error().'<br />'.$requete);
    $id_contenu = mysql_insert_id($connexion);
     
    $requete = "
      INSERT INTO chapitres (nom_chapitres, num_chapitres, id_contenu, id_cours) 
      VALUES('$nchapitre', '$numchapitre', $id_contenu, $id_cours)
    ";
    $resultat1 = mysql_query($requete) or die("Erreur à l'insertion du chapitre : ".mysql_error().'<br />'.$requete);
     
    print_r($_POST[ncours]);
    print_r($_POST[nchapitre]);
    print_r($_POST[editor1]);
     
    //header("location: ajouterchap.php");
     
    ?>
    Et voici le code d'erreur correspondant lorsque j'ai envoyé les données:
    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
    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'Système'@'localhost' (using password: NO) in C:\wamp\www\sitedugenie\administrator\envoi.php on line 25
     
    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\sitedugenie\administrator\envoi.php on line 25
     
    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'Système'@'localhost' (using password: NO) in C:\wamp\www\sitedugenie\administrator\envoi.php on line 26
     
    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\sitedugenie\administrator\envoi.php on line 26
     
    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'Système'@'localhost' (using password: NO) in C:\wamp\www\sitedugenie\administrator\envoi.php on line 27
     
    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\sitedugenie\administrator\envoi.php on line 27
     
    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'Système'@'localhost' (using password: NO) in C:\wamp\www\sitedugenie\administrator\envoi.php on line 28
     
    Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\wamp\www\sitedugenie\administrator\envoi.php on line 28
     
    Notice: Use of undefined constant ncours - assumed 'ncours' in C:\wamp\www\sitedugenie\administrator\envoi.php on line 55
    JavaScript
    Notice: Use of undefined constant nchapitre - assumed 'nchapitre' in C:\wamp\www\sitedugenie\administrator\envoi.php on line 56
    Introduction
    Notice: Use of undefined constant editor1 - assumed 'editor1' in C:\wamp\www\sitedugenie\administrator\envoi.php on line 57
    Définition JavaScript est un langage de programmation de scripts principalement utilisé dans les pages web interactives mais aussi côté serveur. C'est un langage orienté objet à prototype, c'est-à-dire que les bases du langage et ses principales interfaces sont fournies par des objets qui ne sont pas des instances de classes, mais qui sont chacun équipés de constructeurs permettant de générer leurs propriétés, et notamment une propriété de prototypage qui permet d'en générer des objets héritiers personnalisés.
    et suis planté moi par ce que je ne sais pas comment le débogué

  11. #11
    Membre éclairé
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 26
    Par défaut
    je ne connais pas cette fonction: mysql_real_escape_string mais vu son nom elle ne devrai pas être appelée après la connexion à la base de donnée?

  12. #12
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    PtiteA2 a raison, il faut d'abord se connecter à la base de données et ensuite créer la requête SQL en faisant appel à mysql_real_escape_string() sinon erreur.
    Ton code devrait démarrer ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $connexion = mysql_connect("localhost", "root", "" ) OR die('cannot connect' );
    mysql_select_db('basedugenie', $connexion ) OR die('cannot select DB' );
    mysql_query("SET NAMES 'utf8'" );
    ...
    ...
    ...
    ?>

  13. #13
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Guinée

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 112
    Par défaut
    voilà il y a toujours d'autre code d'erreur comme tu me la suggérer j'ai effectuer le changement pour avoir ce ci:
    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
    <?php
    $connexion = mysql_connect("localhost", "root", "" ) OR die('cannot connect' );
    mysql_select_db('basedugenie', $connexion ) OR die('cannot select DB' );
    mysql_query("SET NAMES 'utf8'" );
     
    $contenu =mysql_real_escape_string($_POST['editor1']);
    $ncours =mysql_real_escape_string($_POST['ncours']);
    $nchapitre =mysql_real_escape_string($_POST['nchapitre']);
    $numchapitre =mysql_real_escape_string($_POST['numchapitre']); // si c'est un entier, utilise plutôt intval($_POST['numchapitre'])
    $today = date('y-m-d,h-m-s');
    $datemod = date('y-m-d,h-m-s');
     
    $requete = "
      INSERT INTO cours (nom_cours) 
      VALUES('".mysql_real_escape_string($ncours)."')
    ";
    mysql_query($requete) or die("Erreur à l'insertion du cours : ".mysql_error().'<br />'.$requete);
    $id_cours = mysql_insert_id($connexion);
     
    $requete = "
      INSERT INTO contenu (text_contenu, date_creation, date_modification) 
      VALUES('$contenu', '$today', '$datemod')
    ";
    mysql_query($requete) or die("Erreur à l'insertion du contenu : ".mysql_error().'<br />'.$requete);
    $id_contenu = mysql_insert_id($connexion);
     
    $requete = "
      INSERT INTO chapitres (nom_chapitres, num_chapitres, id_contenu, id_cours) 
      VALUES('$nchapitre', '$numchapitre', $id_contenu, $id_cours)
    ";
    $resultat1 = mysql_query($requete) or die("Erreur à l'insertion du chapitre : ".mysql_error().'<br />'.$requete);
     
    print_r($_POST[ncours]);
    print_r($_POST[nchapitre]);
    print_r($_POST[editor1]);
     
    //header("location: ajouterchap.php");
     
    ?>
    Et voilà le code d'erreur que j'ai obtenu cette fois ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Notice: Use of undefined constant ncours - assumed 'ncours' in C:\wamp\www\sitedugenie\administrator\envoi.php on line 56
    JavaScript
    Notice: Use of undefined constant nchapitre - assumed 'nchapitre' in C:\wamp\www\sitedugenie\administrator\envoi.php on line 57
    Introduction
    Notice: Use of undefined constant editor1 - assumed 'editor1' in C:\wamp\www\sitedugenie\administrator\envoi.php on line 58
    JavaScript est un langage de programmation de scripts principalement utilisé dans les pages web

  14. #14
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Guinée

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 112
    Par défaut
    J'ai juste oublier de mettre ces deux signes pour avoir ce ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r($_POST['editor1']);
    et voici le bon 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
    <?php
    $connexion = mysql_connect("localhost", "root", "" ) OR die('cannot connect' );
    mysql_select_db('basedugenie', $connexion ) OR die('cannot select DB' );
    mysql_query("SET NAMES 'utf8'" );
     
    $contenu =mysql_real_escape_string($_POST['editor1']);
    $ncours =mysql_real_escape_string($_POST['ncours']);
    $nchapitre =mysql_real_escape_string($_POST['nchapitre']);
    $numchapitre =mysql_real_escape_string($_POST['numchapitre']); // si c'est un entier, utilise plutôt intval($_POST['numchapitre'])
    $today = date('y-m-d,h-m-s');
    $datemod = date('y-m-d,h-m-s');
     
    $requete = "
      INSERT INTO cours (nom_cours) 
      VALUES('".mysql_real_escape_string($ncours)."')
    ";
    mysql_query($requete) or die("Erreur à l'insertion du cours : ".mysql_error().'<br />'.$requete);
    $id_cours = mysql_insert_id($connexion);
     
    $requete = "
      INSERT INTO contenu (text_contenu, date_creation, date_modification) 
      VALUES('$contenu', '$today', '$datemod')
    ";
    mysql_query($requete) or die("Erreur à l'insertion du contenu : ".mysql_error().'<br />'.$requete);
    $id_contenu = mysql_insert_id($connexion);
     
    $requete = "
      INSERT INTO chapitres (nom_chapitres, num_chapitres, id_contenu, id_cours) 
      VALUES('$nchapitre', '$numchapitre', $id_contenu, $id_cours)
    ";
    $resultat1 = mysql_query($requete) or die("Erreur à l'insertion du chapitre : ".mysql_error().'<br />'.$requete);
     
    print_r($_POST['ncours']);
    print_r($_POST['nchapitre']);
    print_r($_POST['editor1']);
     
    //header("location: ajouterchap.php");
     
    ?>
    oh la la la

  15. #15
    Membre éclairé
    Femme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 26
    Par défaut
    pourquoi dans ta requête tu as :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $requete = "
      INSERT INTO cours (nom_cours) 
      VALUES('".mysql_real_escape_string($ncours)."')
    ";
    pourquoi avoir encore appelé mysql_real_escape_string sur $ncours tu l'as déjà fait à la ligne 7:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $ncours =mysql_real_escape_string($_POST['ncours']);

    Et à mon avis tes erreurs viennent de tes 3 dernières lignes les trois print_r tu n'as pas mis de ' ' autour des noms des variables.

  16. #16
    Membre confirmé
    Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Guinée

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 112
    Par défaut
    Ok PetiteA2 j'ai bien noté!
    révenons a nos moutons CinePhil
    Une dernière chose qui m'intrigue quand même dans ton code : à chaque nouvelle association de contenu et de cours pour constituer un chapitre, tu vas ajouter de nouveau le cours et le contenu !
    pour répondre à cette question je dirais bien OUI par ce que j'ai fais de telle sorte que si je veux envoyé un cours dans ma base de données je dois choisir le nom du cours après mettre un chapitre suivis du numéro de chapitre plus le contenu et qu'est ce que tu me suggère de faire pour palier a ce problème????

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

Discussions similaires

  1. Insertion de données dans 2 tables différentes.
    Par anthony_rexis dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 24/07/2007, 10h29
  2. Insertion de données dans différentes tables.
    Par zeugzeug dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 21/04/2007, 21h00
  3. insertion de donnée dans une table (2 bd)
    Par robert_trudel dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/01/2007, 17h41
  4. Réponses: 5
    Dernier message: 26/01/2007, 08h11
  5. Réponses: 7
    Dernier message: 12/10/2004, 16h43

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