Bonjour, voila je réalise enfin j'essaye de réaliser un système d'ami
donc mes colonnes de la table ami sont comme cela :
id
amis
1
2
et les colonnes de ma table users comme ceci (je n'ai pas tout mis )
id
username
password
1
cenker
test
2
test
passe
donc mon problème c'est le suivant :
comment redonner à la valeur de la colonne id de la table ami son nom qui se trouve dans la table users..
pareil pour la colonne ami
SELECT username
FROM ami a
JOIN users u ON a.amis = u.id
Il y a des conventions à respecter par contre, ce que tu ne fais pas du tout !
Un PRIMARY KEY (abrégé PK) ou clé primaire se nomme généralement xID où x représente la première lettre du nom de la table
Une FOREIGN KEY (abrégé FK) ou clé étrangère se nomme toujours pareil que la PK à laquelle elle fait référence
A l'exception d'une table comme un système d'amis puisqu'il faut référencé 2 FK sur une même colonne. Mais une table ne peut avoir 2 colonnes au nom identique.
Table amis
aID
uID_from
uID_to
1
1
2
Table users
uID
username
1
User 1
1
User 2
SELECT u1.username AS user_to, u2.username AS user_to
FROM amis a
JOIN users u1 ON uID_to = u1.uID
JOIN users u2 ON uID_from = u2.uID
WHERE :session IN (uID_to, uID_from)
Le message qui suit est une réponse automatique activée par un modérateur.
Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.
Veuillez modifier le titre du sujet
Bonjour,
Ce sujet a un titre qui ne décrit pas correctement le sujet, ou il est écrit en majuscules.
La présentation de votre message étant néanmoins correcte, nous ne fermons pas le sujet, mais vous êtes invité(e) à modifier son titre en éditant votre premier message.
Cette modification doit être faite dans les plus brefs délais, sans quoi nous serons dans l’obligation de clore le sujet .
Voici quelques correspondances pour vous aider à choisir au mieux votre titre :
bonjour voila je pensais que c'était bon mais je me suis trompé
il m'affiche cela
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/cenker/web/www/compte.php on line 159
<?php
$sql = 'select * from users,ami where users.id = ami.amis and users.id = "'.$_SESSION['userid'].'"';
while ($data = mysql_fetch_array($sql))
{?>
<?php echo $data['username']; ?>
<?php
}?>
ritter46 j'ai essayé ta requête sur phpmyadmin
$sql = 'SELECT * FROM users,ami WHERE users.id = ami.amis AND users.id = TON ID';
et j'obtiens cette erreur
Column 'id' in field list is ambiguous
je suis désolé je n'avais pas lu..
pour revenir au sujet vue que j'arrivais pas à redonner le nom à l'id dans la colonne amis j'ai décidé de procéder de cette méthode
id
amis
1
paul
par contre je sais que c'est pas bien mais dans ma table ami je n'ai aucune clef primaire et clef étrangère
si j'en mets il m'est impossible de faire mon système (du moins je n'ai pas trouvé un autre moyen )
C'était beaucoup mieux avant... Et dans la table ami (si tu refais comme avant, avec l'id et pas le nom), le clé primaire c'est (id, ami), il faut une clé étrangère sur id vers la table membres et diem pour amis.
EDIT : @Zazou : pas besoin d'une clé primaire artificielle alors qu'il en existe une naturelle composée des deux colonnes de la table.
donc je refais une table
avec 2 colonnes id et amis
id contient l'id du membre qui demande
et amis l'id du membre qui va être ajouté
et tous les deux en fk ??
ou bien l'id en clef primaire et amis en clef étrangère
donc je dois mettre
clef primaire à id et amis
clef étrangère à id de la table users
et clef étrangère à amis de la table users ??
donc je dois créer une nouvelle colonne dans la table users se prénommant amis c'est cela ??
CREATE TABLE IF NOT EXISTS `amis` (
`id_to` int(10) unsigned NOT NULL,
`id_from` int(10) unsigned NOT NULL,
`isActive` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`id_to`,`id_from`),
KEY `id_from` (`id_from`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `amis`
ADD CONSTRAINT `amis_ibfk_1` FOREIGN KEY (`id_to`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `amis_ibfk_2` FOREIGN KEY (`id_from`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(10) unsigned NOT NULL,
`username` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Une table users contenant une PK id en auto-increment
Une table amis avec 3 colonnes, id_from et id_to en PK ensemble et FK séparément.
La 3ème colonne de la table amis servant à savoir si la demande d'avis a été accepté ou non.
Réalisation de requête entre deux tables
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Tutoriel complet MySQL !
Tutoriel complet MySQL !
Tutoriel complet MySQL !
Tutoriel complet MySQL !