Mysql bases relationelle
Résolu
Spykees
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
naruto-94 Messages postés 865 Date d'inscription Statut Membre Dernière intervention -
naruto-94 Messages postés 865 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- Mysql bases relationelle
- Mysql community server - Télécharger - Bases de données
- Mysql gratuit ou payant - Forum MySQL
- Could not connect to mysql! please check your database settings! - Forum Redhat
- Mysql error 1 ✓ - Forum Réseaux sociaux
- Phpmyadmin a tenté de se connecter au serveur mysql, et le serveur a rejeté la connexion. merci de vérifier les valeurs de host, username et password dans la configuration et de s'assurer qu'elles correspondent aux informations fournies par l'administrateur du serveur mysql. ✓ - Forum PHP
5 réponses
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question