par
Cyrano » 31 janv. 2006, 11:45
Dans un genre beaucoup plus basique mais toujours fonctionnel, il y a mon forum, disponible en téléchargement libre sur ma page perso. Ce forum a prèsque trois ans, mais il est toujours fonctionnel.
Ceci dit, tu pourrais ne faire qu'une seule table "messages" et avoir un champ "msg_parent_id" qui serait en quelque sorte une clé étrangère à l'intérieur de la table même puisque ça servirait à mettre la clé primaire du message auquel la ligne correspond. Exemple sommaire :
Code : Tout sélectionner
+---------------------------------------------------------+
| messages |
+--------+---------------+--------------------------------+
| msg_id | msg_parent_id | msg_texte |
+--------+---------------+--------------------------------+
| 1 | 0 | un texte de premier message. |
| 2 | 1 | Une réponse au premier message |
| 3 | 0 | un autre message sans parent.. |
+--------+---------------+--------------------------------+
Observe le schéma : Il y a trois messages dans la table, deux avec un identifiant de parent avec la valeur "0" et un avec la valeur "1". Ça veut dire que la seconde ligne est une réponse au message dont la clé primaire est "1" : tu peux classer les réponses dans l'ordre par la clé primaire.
La requête SQL à envoyer pour extraire un message et ses réponses pourrait ressembler à ceci:
Code : Tout sélectionner
SELECT `msg_texte`
FROM `messages`
WHERE `msg_id` = 1
OR `msg_parent_id` = 1
ORDER BY `msg_id`;
Cette requête va sortir les deux premières lignes dans l'ordre, le message d'origine puis les réponses. Pour convertir en PH' il te suffira de remplacer le "1" par une variable correspondant à la clé primaire du message que tu veux voir. Quant à afficher la liste des messages, tu peux le faire en faisant une requête ne cherchant que les messages dont le champ msg_parent_id a une valeur "0" et tu n'auras que les messages d'origine sans les réponses.
Dans un genre beaucoup plus basique mais toujours fonctionnel, il y a mon forum, disponible en téléchargement libre sur ma page perso. Ce forum a prèsque trois ans, mais il est toujours fonctionnel.
Ceci dit, tu pourrais ne faire qu'une seule table "messages" et avoir un champ "msg_parent_id" qui serait en quelque sorte une clé étrangère à l'intérieur de la table même puisque ça servirait à mettre la clé primaire du message auquel la ligne correspond. Exemple sommaire :
[code]+---------------------------------------------------------+
| messages |
+--------+---------------+--------------------------------+
| msg_id | msg_parent_id | msg_texte |
+--------+---------------+--------------------------------+
| 1 | 0 | un texte de premier message. |
| 2 | 1 | Une réponse au premier message |
| 3 | 0 | un autre message sans parent.. |
+--------+---------------+--------------------------------+[/code]
Observe le schéma : Il y a trois messages dans la table, deux avec un identifiant de parent avec la valeur "0" et un avec la valeur "1". Ça veut dire que la seconde ligne est une réponse au message dont la clé primaire est "1" : tu peux classer les réponses dans l'ordre par la clé primaire.
La requête SQL à envoyer pour extraire un message et ses réponses pourrait ressembler à ceci:
[code]SELECT `msg_texte`
FROM `messages`
WHERE `msg_id` = 1
OR `msg_parent_id` = 1
ORDER BY `msg_id`;[/code]
Cette requête va sortir les deux premières lignes dans l'ordre, le message d'origine puis les réponses. Pour convertir en PH' il te suffira de remplacer le "1" par une variable correspondant à la clé primaire du message que tu veux voir. Quant à afficher la liste des messages, tu peux le faire en faisant une requête ne cherchant que les messages dont le champ msg_parent_id a une valeur "0" et tu n'auras que les messages d'origine sans les réponses.