|
|
|
|
Bonjour,
Voilà mon problème : J'ai crée une table nommé "post" ( champs: id Pseudo Lyrics) qui enregistre les messages postés par les internautes.
Sur une page php je fais apparaitre tous les messages dans la base de données en faisant une boucle avec la fonction "while". Jusque là tous va bien.
J'ai envie de rajouter un système de commentaire à chacun de ces messages.
J'ai donc créer une nouvelle table nommé "commentpost" (champ : id pseudo message )
Pour l'instant la seule que je suis arrivé a faire se répète pour tous les message (certainement à cause de la boucle)
Je voudrais donc savoir comment faire pour lier uniquement chaque message du commentaire au message poster par l'internaute. J'ai entendu parle de clé étrangère, de fonction "left join" etc... mais je suis débutant en la matière et je ne sait vraiment pas comment faire.
Merci d'avance
Bonsoir,
CREATE TABLE posts (id INT NOT NULL, INDEX(id), pseudo VARCHAR(32), lyrics VARCHAR(30000), PRIMARY KEY(id) )TYPE=INNODB; CREATE TABLE comments (id INT NOT NULL, pseudo VARCHAR(32), message VARCHAR(3000) post_id INT NOT NULL, INDEX(post_id), PRIMARY KEY(id), FOREIGN KEY(post_id) REFERENCES posts(id) ON DELETE CASCADE) TYPE=INNODB; Evidemment ce script est à adapter en fonction de tes besoins (ALTER TABLE si tes tables existent déjà...). En ce qui concerne la requête sql, pour sélectionner tous les commentaires d'un post, tu pourras faire : select id, pseudo, message from comments where post_id=post où post est donc l'identifiant du post. Pas besoin de jointure ici, c'est pas encore très compliqué. Cordialement. |
Tout d'abord merci pour ton aide précieuse. Ça fait plusieurs jours que je cherche une solution.
|
L'erreur que tu as est une erreur de syntaxe SQL. Ce n'est pas comme ça qu'on écrit un alter table : il faut simplement spécifier si tu ajoutes ou supprimes des colonnes, changes le type d'un champ...
|
J'ai effacé mes tables comme elles était presque vide.
|
Lorsquèon crée des champs de type int dans une bd, ne faut-il pas toujours incrire int(x), x étant le nombre de chiffres désirés. Pour un champs Id si on met 100 par exemple, il aura un possibilitée de 999 entrées.
|
Bonsoir PtiteFille,
Another extension is supported by MySQL for optionally specifying the display width of integer data types in parentheses following the base keyword for the type (for example, INT(4)). This optional display width may be used by applications to display integer values having a width less than the width specified for the column by left-padding them with spaces. Autrement dit, les chiffres entre parenthèses ne sont aucunement une restriction en terme d'emplacement mémoire (si tu déclares un INT, un INT(4) ou un INT(20), tu pourras stocker des entiers entre -2147483648 et 2147483647). Ca ne sert que pour l'affichage : les entiers qui possèderont moins de 4 ou 20 digits seront décallés vers la droite pour être bien alignés :) Cordialement, rtfm and jfgi Simple "merci" makes helping people happy :) |
Bonjour tout le monde moi j'ai un problème qui est le suivant j'ai crée une base de donnée sur laquelle je veux poster des données entrées à partir d'un formulaire le problème c'est que quand je fais valider le formulaire une fois c'est ok tous fonctionne IMPEC!
|