Requète sql

swatt Messages postés 26 Statut Membre -  
swatt Messages postés 26 Statut Membre -
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!!!

38 réponses

lxav Messages postés 189 Statut Membre 71
 
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.
0
swatt Messages postés 26 Statut Membre
 
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.
0
Thamior Messages postés 267 Statut Membre 47
 
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.
0
swatt Messages postés 26 Statut Membre
 
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Thamior Messages postés 267 Statut Membre 47
 
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.
0
lxav Messages postés 189 Statut Membre 71
 
ok ok déso j'ai jamais du php
0
swatt Messages postés 26 Statut Membre
 
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
0
Thamior Messages postés 267 Statut Membre 47
 
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.
0
swatt Messages postés 26 Statut Membre
 
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???
0
Thamior Messages postés 267 Statut Membre 47
 
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.
0
swatt Messages postés 26 Statut Membre
 
lol merci je le test de suite.
0
swatt Messages postés 26 Statut Membre
 
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????
0
Thamior Messages postés 267 Statut Membre 47
 
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é !";
}
}
}
?>
0
swatt Messages postés 26 Statut Membre
 
Mainteant sa m'affiche:
Parse error: syntax error, unexpected $end in C:\wamp\www\admin2\items_actions.php on line 45
0
Thamior Messages postés 267 Statut Membre 47
 
Tu peux me copier le code de ta page. Sur le code que je t'ai passé je ne compte que 43 lignes ^^.

Thamior.
0
Thamior Messages postés 267 Statut Membre 47
 
Tu peux me copier le code de ta page. Sur le code que je t'ai passé je ne compte que 43 lignes ^^.

Thamior.
0
Thamior Messages postés 267 Statut Membre 47
 
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.
0
swatt Messages postés 26 Statut Membre
 
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é !";
}
}
}
?>
0
lxav Messages postés 189 Statut Membre 71
 
A part une virgule manquante la requête est bonne
0
swatt Messages postés 26 Statut Membre
 
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
0