Mysql bases relationelle

Résolu/Fermé
Spykees Messages postés 16 Date d'inscription vendredi 15 octobre 2010 Statut Membre Dernière intervention 17 octobre 2010 - 15 oct. 2010 à 21:05
naruto-94 Messages postés 865 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 20 décembre 2012 - 16 oct. 2010 à 20:20
Bonjour,

je débute dans se "fabuleux" monde du code php mysql et la je planche sur un problème qui est certainement simple, mais je suis souvent à chercher compliquer alors qu'il y a simple. Je m'explique :

Dans ma base de donnée, j'ai deux tables que je souhaite mettre en relations (parmi d'autres) et je ne trouve pas le bon moyen de le faire.

J'ai une table contenant des articles avec leurs descriptions type ect... (nommée article) une autre table contenant la matière , plastique fer ...ect avec leur description (nommée type)

je dois pouvoir avoir un article de plusieurs matières exemple planche en bois et plastique


comment faire pour dire que l'artique A est en plastique et en Fer, en allant chercher l'id primaire de chaque matières désirée dans la table type .

j'ai d'abord penser à créer une 3 ème table contenant l'id de l'article et l'id de la matière, mais ca ne me change pas le problème, dans mon formulaire, j'ai une zone de case à coché avec les matière (zone créer en récupérant la table type) je ne sais donc pas comment faire une requête multiple pour faire une insertion id article = 1 et type = 1 et 2 et 3 .. ect

En me relisant j'ai même pas l'impression d'être très claire, amis je ne sais pas comment mieux expliquer

Merci d'avance de votre précieuse aide.



5 réponses

naruto-94 Messages postés 865 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 20 décembre 2012 188
Modifié par naruto-94 le 15/10/2010 à 21:29
Salut ,

tu as bon de dire qu'il faut 3 tables , voici comment je procèderais :

tu créer les 3 tables (articles,matiere,et la 3eme qui contient l'id des 2 tables) .

ensuite du coté html/php/sql tu fais les input de type checkbox pour cocher de quelles matieres est l'article .
pour afficher les checkbox pour chaque matiere tu fais en php :

$req = "SELECT id,libelle_matiere FROM matieres" ;

$sql = mysql_query($req);

while($data = mysql_fetch_array($sql))
{
echo $data['libelle_matiere']." <input type='checkbox' name='matiere[]' value='".$data['id']."'/>";
}

chaque checkbox a pour meme nom matiere[] , c'est un tableau qui stocke toutes les variable qui sont coché .

et pour récupérer toutes les valeur coché ( qui correspond au id des matière) et les inserer dans la bdd :

foreach($_POST["matiere"] as $key => $val)
{
mysql_query("INSERT INTO 3emetable VALUES(".$idarticle.",".$val.")");
// ça insert l'id de l'article et la valeur de chaque case du tableau ( qui correspond au id des matiere coché)
}

foreach est une boucle qui parcours le tableau matiere[] jusqu'a la derniere case .

pour plus d'info sur les tableau cherches a array php sur google
1
Spykees Messages postés 16 Date d'inscription vendredi 15 octobre 2010 Statut Membre Dernière intervention 17 octobre 2010
Modifié par Spykees le 15/10/2010 à 23:01
Merci beaucoup pour ta réponse, pourrais-je abusé en te demande la requête a effectuer pour afficher le nom de l'article et les matières associées ?

Encore merci

edit, j'ai essayer

$req = "SELECT article.titre, matiere.nom FROM article,matiere,artplat WHERE article.id_article = artplat.idarticle" ; 

$sql = mysql_query($req); 

while($data = mysql_fetch_array($sql)) 
{ 
echo 'Nom du matériaux: '.$data['titre'].' disponible en '.$data['nom'].'<br>'; 
} 

le problème c'est que ca me donne c'a m'affiche autemp de titre qu'il y a d'enregistrement dans la table artplat donc si j'ai deux matière, je me retrouve avec
planche en bois
planche en fer

au lieu de planche en bois et en fer

Merci d'avance
0
Spykees Messages postés 16 Date d'inscription vendredi 15 octobre 2010 Statut Membre Dernière intervention 17 octobre 2010
15 oct. 2010 à 23:03
c'est ou que je fais erreur ?
0
Spykees Messages postés 16 Date d'inscription vendredi 15 octobre 2010 Statut Membre Dernière intervention 17 octobre 2010
16 oct. 2010 à 09:12
un petit up,
Quelqu'un aurait la solution ?
0

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

Posez votre question
naruto-94 Messages postés 865 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 20 décembre 2012 188
Modifié par naruto-94 le 16/10/2010 à 20:24
Essaies la requete :

SELECT A.titre,M.nom FROM article A,matieres M,artplat Ar WHERE A.id_article = Ar.idarticle AND M.id_mateire = M.IN(Ar.idmatiere) ;
0