Requète sql
swatt Messages postés 26 Statut Membre -
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
- 1
- 2
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.
-
En mysql,ca donne
Select Matières,Cour
From cour c,Matières M
where M.id = c.id;
MAis ceci dit donne d'autres nom a tes tables car ca reste ambigüe de donner un nom de table et le même nom pour un de ses attributs.
JE sais pas si le Sql ressemble fort au Mysql mais la base est bonne, il suffit d'ajuster le langage. -
ok merci de ta réponse rapide lxav, mais moi je veux pas selectionner je veux juste insérer un cour dans la matière.
-
Bonsoir,
Il te faut rajouter un champ dans la table cours appelé id_mat fessant référence à id de matière. Cela te permet d'avoir la référence de la matière dans la table cour ce qui te permet de liés les deux tables comme tu le montres dans ton exemple.
Tu dois ensuite définir le champ id_mat comme clé étrangère dans la table :
Alter table cour
Foreign key fk_id_mat_c (id_mat) REFERENCES matiere(id);
Lors de la requête d'insertion :
INSERT INTO cour(id,cour,id_mat) VALUES ('1', 'probabilite', '1')
En espèrant avoir répondu à ta question,
Thamior. -
ok thamior, j'ai déja essayé ta solution.
Mais moi en faite ma requète je dois l'intégré a un programme en php.
Je m'explique: Par un petit formulaire l'ulilisateur choisi premièrement sa matière et ensuite il insert le cour qu'il souhaite associé à sa matière. En faite je cherche un petit programme avec uen requète ou dès que l'utilisteur entre le cour et click sur valider, elle insère le cour automatiquement dans la table cour. Et l'id cour doit ètre associé a l'id matière pour que quand l'utilisateur veux affiché les cours qui se trouve dans une matières elle va le chercher. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Je te propose un petit script en prenant en compte ce que je t'ai mit dans ma précédante réponse :
Je te conseil de mettre les champs id en auto_increment si ce n'est pas déjà fait.
Ensuite, tu créais un menu déroulant :
<?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"]; ?>"><?php echo $rt["materie"]; ?></option>
<?php
}
?>
</select>
<input type="text" name="cours" />
<input type="submit" value="Envoyer" />
}
if($apge == "ajout_cours")
{
if($_POST["materiere] != null && $_POST["cours"] != null)
{
$cours = $_POST["cours"];
$id_mat = $_POST["materiere];
$sql = "INSERT INTO cour(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é !";
}
}
}
?>
En espérant que ça t'aide.
Thamior. -
-
excuse thamior, je m'embrouille dans mes propres données que je t'est fourni.
On va reprendre car le nom de ma table est pareil que mon attribu sa ml'embrouille.
Si j'ai
Ma 1ère table va s'appellé table1
id et Matière comme précédemment.
Ma 2ème table s'appelle table2
id et cour comme précédemment
est ce que tu peux me redonné ton script avec les nouvelles données.
Je me demande comment tu as pu t'y retrouvé dans ceci.
Merci -
Bonjour,
Tu es obligé de mettre un champ fessant référence à la matière dans cours.
Je te propose donc :
CREATE TABLE matiere
(
id_matiere int(5) not null auto_increment,
nom_matiere varchar(60) not null,
Primary Key(id_matiere)
)
CREATE TABLE cours
(
id_cours int(10) not null auto_increment,
nom_cours varchar(120) not null,
id_mat int(5) not null
Primary Key (id_cours),
Foreign Key (id_mat) REFERENCES matiere(id_matiere)
)
Je ne vois pas d'autres solutions pour liés car une matière a un ou plusieurs cours et un cours dépend d'une et une seule matière si j'ai bien compris.
Mon script avec les modifications :
<?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" />
}
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é !";
}
}
}
?>
Je pense qu'avec ça tu devrais t'en sortir ;).
Thamior. -
Merci thamior de ton aide,
mais quand je crée la table cour je rentre la requète avec phpmyadmin sa m'affiche une erreur:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(id_cours),
Foreign Key (id_mat) REFERENCES matiere(id_matiere)
)' at line 6
Pourquoi sa me met ceci selon toi??? -
Petit correctif :
CREATE TABLE cours
(
id_cours int(10) not null auto_increment,
nom_cours varchar(120) not null,
id_mat int(5) not null,
Primary Key (id_cours),
FOREIGN KEY(id_mat) REFERENCES matiere(id_matiere)
)
J'ai oublié une virgule sur la ligne id_mat int(5) not null.
Je viens de tester les requêtes et ça marche impec.
Thamior. -
-
Quand je test le programme que tu m'a donné que je trouve finalement assez simple sa me di:
Parse error: syntax error, unexpected '<' in C:\wamp\www\admin2\items_actions.php on line 4
Pourquoi sa me met sa???
Et a quek moment je dois faire appelle a ma base de donné dont ton programme???? -
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" />
}
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é !";
}
}
}
?> -
Mainteant sa m'affiche:
Parse error: syntax error, unexpected $end in C:\wamp\www\admin2\items_actions.php on line 45 -
Tu peux me copier le code de ta page. Sur le code que je t'ai passé je ne compte que 43 lignes ^^.
Thamior. -
Tu peux me copier le code de ta page. Sur le code que je t'ai passé je ne compte que 43 lignes ^^.
Thamior. -
Le code que je t'ai passé n'a que 43 lignes...
Peux tu me montrer le code que tu as utilisés ?
La comme ça, je ne vois pas ou ce trouve l'erreur.
Thamior. -
Voici mon code:
<?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" />
}
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é !";
}
}
}
?> -
-
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