j'ai pas fait attention quand je l'ai publié comme j'ai l'habitude de publier dans ce forum de POOQuel est le rapport avec l'orientation objet ?
parce que je pense que c'est plus pratique que dans discussion, un message concerne deux utilisateurs et c'est la même chose pour une discussion donc c'est plus pratique dans la table message pour éviter des requête complexe dans certains casPourquoi tes champs from et to sont dans messages et non pas dans discussion ?
je t'assure que au niveau de ma BDD sont bien uniformisé c'est juste j'ai écris les nom viteIl faudrait aussi penser à uniformiser la nomenclature de tes noms de tables et champs. Une fois le singulier, une fois le pluriel, une fois en français, une fois en anglais.
y a pas vraiment une grand différence entre les deux, un message concerne deux utilisateur et la discussion aussi, la seul différence c'est que un message fait partie d'une discussion (arrêt moi si je me trompe)Pour ce qui est de ton problème. Tu t'es emmêlé les pinceaux. Il faut te poser la question de savoir "Qu'est-ce qu'un message ? Qu'est-ce qu'une discussion ?"
cette partie je l'ai pas trop compris ?Un message appartient à une discussion, une discussion peut avoir plusieurs messages. Ton architecture ne le permet pas - elle permet d'associer un message à une discussion - pas plus. Il faut donc relier messages à discussion et non pas l'inverse.
Modération :j'ai pas fait attention quand je l'ai publié comme j'ai l'habitude de publier dans ce forum de POOQuel est le rapport avec l'orientation objet ?
Code : Tout sélectionner
MariaDB [test]> create table messages (
-> message_id int auto_increment primary key,
-> date datetime not null,
-> from int not null,
-> to int not null);
Query OK, 0 rows affected (0.06 sec)
MariaDB [test]> create table discussions (
-> discussion_id int auto_increment primary key,
-> message_id int not null,
-> constraint foreign key (message_id) references messages(message_id));
Query OK, 0 rows affected (0.08 sec)Code : Tout sélectionner
MariaDB [test]> create table discussions (
-> discussion_id int auto_increment primary key,
-> user1 int not null,
-> user2 int not null,
-> subject varchar(64) not null);
Query OK, 0 rows affected (0.10 sec)
MariaDB [test]> create table messages (
-> message_id int auto_increment primary key,
-> user_id int not null,
-> date datetime not null,
-> discussion_id int not null,
-> constraint foreign key (discussion_id) references discussions (discussion_id));
Query OK, 0 rows affected (0.06 sec)Code : Tout sélectionner
MariaDB [test]> insert into discussions values (null, 1, 2, 'Discussion A');
Query OK, 1 row affected (0.03 sec)
MariaDB [test]> insert into messages values (null, 1, now(), 1);
Query OK, 1 row affected (0.04 sec)
MariaDB [test]> insert into messages values (null, 2, now(), 1);
Query OK, 1 row affected (0.04 sec)
MariaDB [test]> insert into messages values (null, 1, now(), 1);
Query OK, 1 row affected (0.03 sec)
MariaDB [test]> insert into discussions values (null, 2, 1, 'Discussion B');
Query OK, 1 row affected (0.04 sec)
MariaDB [test]> insert into messages values (null, 2, now(), 2);
Query OK, 1 row affected (0.03 sec)
MariaDB [test]> insert into messages values (null, 2, now(), 1);
Query OK, 1 row affected (0.02 sec)
MariaDB [test]> insert into messages values (null, 1, now(), 2);
Query OK, 1 row affected (0.07 sec)
Code : Tout sélectionner
MariaDB [test]> select * from discussions;
+---------------+-------+-------+--------------+
| discussion_id | user1 | user2 | subject |
+---------------+-------+-------+--------------+
| 1 | 1 | 2 | Discussion A |
| 2 | 2 | 1 | Discussion B |
+---------------+-------+-------+--------------+
2 rows in set (0.00 sec)
MariaDB [test]> select * from messages;
+------------+---------+---------------------+---------------+
| message_id | user_id | date | discussion_id |
+------------+---------+---------------------+---------------+
| 1 | 1 | 2013-03-17 15:31:40 | 1 |
| 2 | 2 | 2013-03-17 15:31:47 | 1 |
| 3 | 1 | 2013-03-17 15:31:51 | 1 |
| 4 | 2 | 2013-03-17 15:32:22 | 2 |
| 5 | 2 | 2013-03-17 15:32:26 | 1 |
| 6 | 1 | 2013-03-17 15:32:30 | 2 |
+------------+---------+---------------------+---------------+
Code : Tout sélectionner
MariaDB [test]> select messages.message_id, messages.user_id, messages.date
-> from discussions
-> inner join
-> messages
-> on
-> messages.discussion_id = discussions.discussion_id
-> where discussions.discussion_id = 1;
+------------+---------+---------------------+
| message_id | user_id | date |
+------------+---------+---------------------+
| 1 | 1 | 2013-03-17 15:31:40 |
| 2 | 2 | 2013-03-17 15:31:47 |
| 3 | 1 | 2013-03-17 15:31:51 |
| 5 | 2 | 2013-03-17 15:32:26 |
+------------+---------+---------------------+
4 rows in set (0.00 sec)
ok j'avais pas pensé à sa en même temps j'avais juste un système de messagerie interne et j'avais pas le système de la discussion maintenant que je voulais la mettre a jour j'avais pas pensé que la page message envoyé n'est plus obligatoireEt bien c'est l'idée derrière le fait de ne pas avoir que des messages, mais aussi des discussions. L'idée de messages uniquement commence quand même à dater (mails, etc.). Une application qui centralise tout peut permettre la notion de discussions
SELECT messengers . * , u1.nameUser AS nameUser1, u1.surnameUser AS surNameUser1, u2.nameUser AS nameUser2, u2.surnameUser AS surNameUser2
FROM users AS u1, users AS u2, messengers
WHERE u1.idUser = messengers.to
AND u2.idUser = messengers.from
AND messengers.to = 1
ODERE BY dateMessenger DESC
LIMIT 0,10;
pour afficher les 10 dernière message reçu SELECT DISTINCT(messengers.idDiscussion), messengers.*, u1.nameUser AS nameUserTo, u1.surnameUser AS surNameUserTo, u2.nameUser AS nameUserFrom, u2.surnameUser AS surNameUserFrom
FROM users AS u1, users AS u2, messengers, discussions
WHERE u1.idUser = discussions.to
AND u2.idUser = discussions.from
ODERE BY dateMessenger DESC
LIMIT 0,10;
c'est bien comme ça ?select
discussions.subject,
max(messages.date) last_date
from
discussions
inner join
messages
on
messages.discussion_id = discussions.discussion_id
group by
messages.discussion_id
order by
max(messages.date) desc
limit 10
Utilisateurs parcourant ce forum : Baidu [Spider] et 3 invités