Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [mysql] sistema di conversazione e scambio messaggi

    Ciao ragazzi, ho bisogno di una mano.
    Ho una tabella message_user con id_message che si riferisce al messaggio e id_user che si riferisce all'utente che deve riceverlo.

    Per cui quando user1 invia un messaggio a user2, viene aggiunta una riga nella tabella message, recupero l'insert id ed inserisco in message_user due righe con id_message = id e id_user una volta 1 e un'altra 2 e nella tabella message_entry inserisco il contenuto del messaggio sempre riferito a quell'id. Fin qui tutto bene.

    Vorrei trovare il modo di riconoscere quando user1 o user2 si scambiano altri messaggi per evitare di inserire un nuovo messaggio nella tabella message, ma sfruttando solo message_entry con l'ID della conversazione esistente. Se non esiste allora la crea.

    Sto impazzendo tra mille query, non riesco a capire come fare a trovare, se esiste, l'id_message della conversazione tra user1 e user2. Vorrei fare tipo come facebook... Attualmente, invece, riesco solo a creare un nuovo messaggio ogni volta.

    Spero di essermi spiegato... Help me!
    Ultima modifica di Vincent; 26-02-2015 a 18:05

  2. #2
    Nel caso di risposta ho già l'ID del messaggio per cui non ho problemi ovviamente...e infatti funziona correttamente associando la risposta alla conversazione.

    In realtà il problema sussiste nel momento in cui user1 clicca su Nuovo Messaggio, ed invia un messaggio ad user2. Io vorrei far riconoscere al sistema che esiste già una conversazione tra quegli utenti e quindi, di aggiungere il nuovo messaggio alla conversazione esistente.

    Quello che vorrei è selezionare l'ID del messaggio che ha come utenti user1 e user2... Come faccio? Mi sto perdendo in un bicchiere d'acqua vero? Sto provando con query innestate, ma non riesco a risolvere...

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    tabella di correlazione tra id degli utenti e conversazione?
    tipo
    id_u1|id_u2|id_conversazione

    quando clicca su nuovo messaggio, recuperi l'id_conversazione nella tabella con clausola where del tipo "WHERE (id_u1 = IDMITTENTE AND id_u2 = IDDESTINATARIO) OR (id_u2 = IDMITTENTE AND id_u1 = IDDESTINATARIO)" (i due ID* saranno il mittente del nuovo messaggio e il destinatario)

    non so quanto sia efficiente eh

  4. #4
    Quote Originariamente inviata da clasku Visualizza il messaggio
    tabella di correlazione tra id degli utenti e conversazione?
    tipo
    id_u1|id_u2|id_conversazione

    quando clicca su nuovo messaggio, recuperi l'id_conversazione nella tabella con clausola where del tipo "WHERE (id_u1 = IDMITTENTE AND id_u2 = IDDESTINATARIO) OR (id_u2 = IDMITTENTE AND id_u1 = IDDESTINATARIO)" (i due ID* saranno il mittente del nuovo messaggio e il destinatario)

    non so quanto sia efficiente eh
    Grazie per la risposta... in effetti cerco una soluzione efficiente... e non so se questa possa essere adattata anche a messaggi con più destinatari... qualche altra idea?

  5. #5
    Ciao a tutti, ho risolto in questo modo. Almeno è l'unico che funziona. Seleziono l'id di tutti i miei messaggi poi per ogni id trovato selezionò tutti gli id_user diversi dal mio e li salvo in array. Poi faccio il confronto tra questa lista e quella passata alla pagina. Se sono uguali, allora interrompono il ciclo e salvo l'ID del messaggio attuale. Altrimenti vuol dire che la conversazione tra gli utenti è nuova e procedo normalmente con la creazione di un nuovo messaggio.

    Come vi sembra? Si può ottimizzare?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.