Appel de résultat de table

Résolu/Fermé
loutry06 Messages postés 11 Date d'inscription samedi 10 août 2013 Statut Membre Dernière intervention 7 mars 2014 - 26 août 2013 à 13:05
 Utilisateur anonyme - 26 août 2013 à 16:23
Bonjour,
je continue dans le développement de mon site et je reviens vers vous une nouvelle fois car je coince sur un nouveau problème.

Je vous explique :
Je cherche à faire un lien entre 2 tables.
La première contient tous mes personnages
id_perso; nom_perso


La seconde contient les techniques des personnages
id_tech;nom_tech;id_perso


Bien évidemment, je cherche à lier une technique à un personnage d'où le id_perso à la fin.

Jusque là, je pense pas avoir tort.

Le souci, c'est qu'un ou plusieurs personnages ont les mêmes techniques. Et j'aimerai savoir si déjà dans un premier temps, dans la colonne id_perso de ma deuxième table, on puisse mettre des valeurs comme 4;34;56 (ces nombres-là étant les id des personnages)
Si c'est le cas, dans la structure de ma table, le type de mon champ doit être un Varchar ? Ou alors autre chose ? (Je pense à Varchar, mais sans conviction)

Donc toujours si je mets dans ma table les différentes réponses dans ma table "4;34;56 ", comment les appeler sur ma page ?
J'ai tenté ça

<?php
	$sqlpersotechnique = "SELECT * FROM t_perso_technique WHERE id_perso LIKE '$id;%' 
	$resultpersotechnique = mysql_query( $sqlpersotechnique, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
?>


Sachant que le $id a été obtenu plus haut avec
$id = $_GET['id'];


Je bugue un peu car certaines fois, ça fonctionne et d'autres noms... Peut-on avoir quelque chose de plus propre svp ou alors une façon de mieux faire ?

Je vous remercie par avance.
Al'


4 réponses

Utilisateur anonyme
26 août 2013 à 13:32
salut !
Jusque là, je pense pas avoir tort. 

En effet, jusque là tout va bien ! Enfin presque, si tu souhaite faire une liaison n-n (ton cas : 1 user peu avoir n tech, et 1 tech peu être attribué a plusieurs users) le mieux est d'avoir une troisième table pour la liaison (histoire d'éviter des sous traitements pour récupérer les données) :

La première contient tous mes personnages
id_perso; nom_perso


La seconde contient toutes les techniques
id_tech;nom_tech


La troisième contient les couple technique/personnage : (ou nomera COUPLE pour l'exemple)
id_perso;id_tech


de cette manière ca sera plus simple de lire ou écrire/modifier les données, mais surtout tu pourra rajouter des contraintes (par exemple ne pas ajouter un couple technique/personnage si l'un des deux n'existe pas).
récupérer les résultats :

<?php
	$sqlpersotechnique = "SELECT personnages.nom_perso ,techniques.nom_tech FROM personnages , techniques , COUPLE WHERE COUPLE.id_perso =' . $id . ' AND techniques.id_tech = COUPLE.id_tech and personnages.id_perso = COUPLE.id_perso 
	$resultpersotechnique = mysql_query( $sqlpersotechnique, $cnx ) or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" );
?>



naga
1
loutry06 Messages postés 11 Date d'inscription samedi 10 août 2013 Statut Membre Dernière intervention 7 mars 2014
26 août 2013 à 14:05
Bonjour Naga et merci pour ta réponse rapide.
Du coup, dans ma troisième table je devrais insérer toutes les combinaisons possibles ?
Et la construire sous cette forme :
id_couple; id_perso; id_tech
avec id_couple INT Primary Auto
id_perso : int
id_tech : int ?

merci par avance =)
al'
0
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
26 août 2013 à 14:07
Salut,

id_couple n'est pas nécessaire, la clé primaire serait alors composée de id_perso et id_tech
0
Utilisateur anonyme
26 août 2013 à 14:15
alors l'id_couple n'est pas nécessaire dans le sens où tu peux déclarer le couple lui même comme unique , par exemple l'utilisateur 2 pour la technique 3 n'apparaîtra qu'une fois, il n'est donc pas indispensable de générer un identifiant unique de couple (sauf bien sûr si tu en as un intérêt par la suite, comme une tâche à effectuer par exemple, et du coup tu peux attribuer ton coulpe).

Ensuite, ta troisième table contiendra les combinaisons possibles EXISTANTES (pas toutes 'toutes' ), c'est à dire que si tu veux attribuer à l'utilisateur 1 la tâche 2, tu insère ton couple dans cette table (1;2). Et ensuite, pour retirer une technique d'un utilisateur, il te suffira de donner les deux identifiants (user+tech)
0
loutry06 Messages postés 11 Date d'inscription samedi 10 août 2013 Statut Membre Dernière intervention 7 mars 2014
26 août 2013 à 14:16
Ok je pense avoir compris.
Je vais essayer et si j'ai tout bien compris, je mettrai le sujet en Résolu.
En tout cas merci bcp de vos aides =)
0
Utilisateur anonyme
26 août 2013 à 14:27
pas de soucis, bonne aprem.
naga
0
loutry06 Messages postés 11 Date d'inscription samedi 10 août 2013 Statut Membre Dernière intervention 7 mars 2014
26 août 2013 à 14:58
Super ça a l'air de fonctionner.
Merci bcp encore et encore =)
0
Utilisateur anonyme
26 août 2013 à 16:23
ok c'est cool =)
bon dev !
0