Appel de résultat de table

Résolu
loutry06 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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'


A voir également:

4 réponses

Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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 8411 Date d'inscription   Statut Contributeur Dernière intervention   1 566
 
Salut,

id_couple n'est pas nécessaire, la clé primaire serait alors composée de id_perso et id_tech
0
Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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
 
pas de soucis, bonne aprem.
naga
0
loutry06 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Super ça a l'air de fonctionner.
Merci bcp encore et encore =)
0
Utilisateur anonyme
 
ok c'est cool =)
bon dev !
0