Requète sql

Bonjour à tous,

J'ai un big prob. En faire j'ai deux tables reliées entre elles par "id" .
La 1ère table s'appelle Matières dans une matière il y a plusieurs matières.
id Matières
1 mathématique
2 informatique
3 histoire

La 2ème table s'appelle cour dans une matière je peux avoir plusieurs cours.

id Cour
1 probabilité
1 équation du 2nd degré
2 Base de donnée
2 Java
3 L'esclavage

Je dois 'associé un cour à chaque matière par exemple mathématique(matière)=probabilité(cour).

En faite je cherche une requète sql pour associé cette requète à mon programme php afin d'insérer des cours dans chaque matière.

J'espère avoir bienb expliqué.

Merci j'attend de vos news!!!
Configuration: Windows Vista
Internet Explorer 7.0

38 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Deux tables, Matières et Cours, doivent être reliées par une clé étrangère afin d’associer chaque cours à une matière et d’insérer ces données depuis un formulaire PHP. Plusieurs propositions préconisent de créer id_matiere dans Matières et d’ajouter id_mat dans Cours comme clé étrangère, puis de définir FOREIGN KEY(id_mat) REFERENCES Matières(id_matiere) pour lier les deux tables. Des exemples d’insertion montrent d’utiliser INSERT INTO cours(nom_cours, id_mat) VALUES ('probabilite', 1) et de corriger les noms de colonnes ou les fautes de frappe dans le formulaire PHP. En cas d’erreurs PHP, les messages d’erreur comme errno 150 sur les clés étrangères apparaissent et exigent une correspondance exacte des types et des noms de colonnes.

Bobot (l’IA à votre service)
  1. Moi je m'y connais en php mais malheureusement pas trop d'après ce que je voi.
    1. Là j'ai essayer une table avec plusieur attribut mais j'ai une erreur de phpmyadmin il me met sa:
      #1005 - Can't create table '.\giggles\test.frm' (errno: 150)

      Voici ma table:

      CREATE TABLE test
      (
      id_kids int(10) unsigned not null auto_increment,
      description varchar(200) NULL,
      description_fr varchar(200) NULL,
      quantity smallint(4) unsigned NOT NULL default '1',
      price decimal(6,2) unsigned NOT NULL default '0.00',
      instock enum('y','n') NOT NULL default 'y',
      visible enum('true','false') NOT NULL default 'true',
      id_mat int(5) not null,
      Primary Key (id_kids),
      FOREIGN KEY(id_mat) REFERENCES kids(id_kids1)
      )
      1. ok merci thamior je vais jeté un coup d'oeil du coté de l'ajax mais j'y connè rien en ajax.
        Donc essaye de m'adapter le code mème si c'est pour demain soir, sa fait rien.

        Merci
        David
        1. Je vois ce que tu veux faire.

          Je te conseil de regarder du côté de l'Ajax.

          Si tu ne trouves pas, je t'adapterai du code que j'ai pour que ça fonctionne mais pas avant demain soir.

          Thamior.
          1. cool la sa m'affiche bien les données que j'ai rajoté manuellement a phpmyadmin c'est a dire les matière dans le 1er cadre déroulant mè kan je veu entré le cour que je veu associé a une matière sa le rajoute pas.

            Eh ben lorsqu'un problème est réglé un autre appareil.
            lol
            1. Le correctif que j'ai testé avec un jeu d'essais :

              if($page == null)
              {
              ?>
              <form action="test.php?page=ajout_cours" method="post">
              <select name="matiere">
              <?php
              $sql = "select id_matiere, nom_matiere from matiere";
              $exe = mysql_query($sql, $connexion); // tu executes la requete
              $rt = mysql_fetch_assoc($exe);

              if($rt)
              {
              while($rt)
              {
              echo "<option value='$rt[id_matiere]'>$rt[nom_matiere]</option>";
              $rt = mysql_fetch_assoc($exe);
              }
              }
              ?>
              </select>
              <input type="text" name="cours" />
              <input type="submit" value="Envoyer" />
              <?php
              }
              1. Non sa me di pas ce que ces phrase, on faite sa m'affiche ma page avec mon formulaire avec 2 cadres, dans le premiers cadre il doit apparaitre les matières et dans le second cadres je dois mettre le cours que je veux associé avec la matière.

                Comme je te disais précédemment j'ai ajouté des données a ma table matière manuellement mais le truc cè que les données que j'ai rajouté apparaisse pas dans le cadre matière.

                Je pense que c'est un prob de connexion avec la bd c'est bizarre car je pense que ton programme est bon
                1. As tu as l'une des phrase suivante qui s'affiche :
                  - Désolé, connexion à localhost impossible
                  ou
                  - Désolé accès à la base g impossible

                  Si c'est le cas, vérifie les données concernant le message d'erreur.

                  Thamior.
                  1. En faite il y a pas de connexion avec ma data base sa me donne le menu déroulant sans rien dedans alors k jè déja entré des données dans ma db via phpmyadmin
                    1. Reslt thamior j'ai fait les changement que tu ma di et sa ne fait tj rien
                      1. Modifie les lignes suivantes :

                        $exe = mysql_query($sql); // tu executes la requete

                        par :

                        $exe = mysql_query($sql, $connexion); // tu executes la requete

                        et

                        $exe = mysql_query($sql); // tu executes la requete

                        par

                        $exe = mysql_query($sql, $connexion); // tu executes la requete

                        Normalement avec ça, tout devrait marché.

                        Thamior.
                        1. jè fè mon programme comme ceci:
                          <?php
                          $connexion = mysql_connect(localhost,swatt_971,dfoxys);

                          if(!$connexion)
                          {
                          echo "Désolé, connexion à $serveur impossible\n";
                          exit;
                          }

                          if(!mysql_select_db(g,$connexion))
                          {
                          echo "Désolé accès à la base $base impossible\n";
                          exit;
                          }

                          if($page == null)
                          {
                          ?>
                          <form action="items_actions.php?page=ajout_cours" method="post">
                          <select name="matiere">
                          <?php
                          $sql = "select * from matiere";
                          $exe = mysql_query($sql); // tu executes la requete
                          $rt = mysql_fetch_assoc($rt);

                          if($rt)
                          {
                          ?>
                          <option value="<?php echo $rt["id_matiere"]; ?>"><?php echo $rt["nom_materie"]; ?></option>
                          <?php
                          }
                          ?>
                          </select>
                          <input type="text" name="cours" />
                          <input type="submit" value="Envoyer" />
                          <?php
                          }

                          if($page == "ajout_cours")
                          {
                          if($_POST["materiere"] != null && $_POST["cours"] != null)
                          {
                          $cours = $_POST["cours"];
                          $id_mat = $_POST["materiere"];
                          $sql = "INSERT INTO cours(nom_cour,id_mat) VALUES ('$cours', '$id_matiere')" ;
                          $exe = mysql_query($sql); // tu executes la requete

                          if($exe)
                          {
                          echo "La requete a bien été ajouté";
                          }
                          else
                          {
                          echo "La requete a mal été executé !";
                          }
                          }
                          }
                          ?>

                          J'ai rajouté par phpmyadmin des données dans la table matières, mais elle ne me l'affiche pa dans le cadre roulant de ma page.

                          Pourquoi????
                          1. Pour te connecter à la base de données :

                            $connexion = mysql_connect($serveur,$nom,$password);

                            if(!$connexion)
                            {
                            echo "Désolé, connexion à $serveur impossible\n";
                            exit;
                            }

                            if(!mysql_select_db($base,$connexion))
                            {
                            echo "Désolé accès à la base $base impossible\n";
                            exit;
                            }

                            avec :
                            $serveur : le serveur de ta base de données (en local, localhost)
                            $nom : ton login (en local, root)
                            $password : le password qui va avec (en local, "")
                            $base : le nom de la base

                            Thamior.
                            1. Merci sa fonctionne là et maintenant comment je fait ou dans le programme je dois mettre le code pour accéder à ma base de donnée
                              1. Petit correctif :

                                <?php
                                if($page == null)
                                {
                                ?>
                                <form action="index.php?page=ajout_cours" method="post">
                                <select name="matiere">
                                <?php
                                $sql = "select * from matiere";
                                $exe = mysql_query($sql); // tu executes la requete
                                $rt = mysql_fetch_assoc($rt);

                                if($rt)
                                {
                                ?>
                                <option value="<?php echo $rt["id_matiere"]; ?>"><?php echo $rt["nom_materie"]; ?></option>
                                <?php
                                }
                                ?>
                                </select>
                                <input type="text" name="cours" />
                                <input type="submit" value="Envoyer" />
                                <?php
                                }

                                if($page == "ajout_cours")
                                {
                                if($_POST["materiere"] != null && $_POST["cours"] != null)
                                {
                                $cours = $_POST["cours"];
                                $id_mat = $_POST["materiere"];
                                $sql = "INSERT INTO cours(nom_cour,id_mat) VALUES ('$cours', '$id_matiere')"
                                $exe = mysql_query($sql); // tu executes la requete

                                if($exe)
                                {
                                echo "La requete a bien été ajouté";
                                }
                                else
                                {
                                echo "La requete a mal été executé !";
                                }
                                }
                                ?>

                                [Désolé pour le flood, j'ai un petit soucis avec le navigateur...]
                                1. Merci lxav

                                  J'ai rajouté la virgule qu'il manquait à $sql = "INSERT INTO cours(_nom_cour,id_mat) VALUES ('$cours', '$id_matiere')"
                                  mais sa m'affiche tjs le mème message
                                  • 1
                                  • 2