Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Gestione avvisi tramite DB
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • marcocarrieri
      marcocarrieri ModSenior • ultima modifica di

      Potresti creare una tabella di utenti, una di messaggi, all'interno della quale fai un riferimento incrociato con la prima.
      Registri cioè l'id dell'utente nella tabella dei messaggi.

      Ogni utente che si collega fa una query sulla tabella generale dei messaggi, se ne esistono con id utente uguale al loro lo fai vedere. Se cliccano sul pulsante letto metti a true il flag "letto" della tabella messaggi e cosi via.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • I
        il.gege User • ultima modifica di

        Il chè vorrebbe dire che io devo inserire un messaggio tante volte quanti sono gli utenti presenti nel DB..

        Non è una soluzione un pò poco pratica?

        Forse magari con una vista incrociata riuscire a farlo senza dover creare altre tabelle, oltre a quella dei messaggi in se...

        [EDIT]
        Cavolata, perchè nelle viste non posso aggiungere il campo booleano...

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • marcocarrieri
          marcocarrieri ModSenior • ultima modifica di

          Allora forse io sto capendo un altra cosa.
          Tu devi mandare lo stesso messaggio a tutti?
          O messaggi privati a utenti diversi?

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • I
            il.gege User • ultima modifica di

            Lo stesso messaggio a tutti (o meglio, nello specifico, messaggi diversi a categorie diverse di utenti, però il concetto è lo stesso...)

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • marcocarrieri
              marcocarrieri ModSenior • ultima modifica di

              Allora una cosa più elaborata ma concettualmente sempre lo stesso.
              Definiamo alcune cose prima che elaboro meglio l'idea.
              Un utente può appartenere a più categorie?

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • I
                il.gege User • ultima modifica di

                No, un utente appartiene ad una categoria specifica.

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • marcocarrieri
                  marcocarrieri ModSenior • ultima modifica di

                  Bene infine lo stesso messaggio puo essere inviato a piu categorie?

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • I
                    il.gege User • ultima modifica di

                    Esatto..

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • marcocarrieri
                      marcocarrieri ModSenior • ultima modifica di

                      Allora io suddividerei il problema nel modo seguente.

                      Una tabella utenti, e tra gli altri campi un campo idcategoria.
                      Questo serve per identificare attraverso questo id a quale categoria l'utente appartiene.

                      Una tabella categorie con i soliti id, nome categoria e altri eventuali campi.

                      Una tabella messaggi all'interno della quale vanno salvati tutti i messaggi inviati.
                      Tra gli altri campi abbiamo i campi id categoria e id utente per risalire e sapere a che categoria appartiene il messaggio e l'id utente.

                      Quando sei nella categoria "A", e clicchi su invia messaggio, lui deve controllare quanti utenti appartengono a quella categoria, e salvare quindi nella tabella messaggi tanti messaggi tanti quanti sono gli utenti delle medesima.

                      Infine occorre anche un campo "letto" da settare a true quando l'utente clicca sul pulsante letto del messaggio, a questo messaggio bastera passare l'id del messaggio ed il gioco è fatto.

                      Spero possa essere chiaro anche per te, e non solo per me che ho già l'idea in testa.

                      Saluti, Marco.

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • I
                        il.gege User • ultima modifica di

                        E' esattamente un pò la soluzione che avevo in mente io, è anche la soluzione più logica che può venire in mente.

                        Grazie per l'aiuto Marco!

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • marcocarrieri
                          marcocarrieri ModSenior • ultima modifica di

                          Molto bene, l'unione fa la forza. 🙂

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • samyorn
                            samyorn Consiglio Direttivo • ultima modifica di

                            Un'altra strada forse percorribile potrebbe essere quella di creare un solo messaggio, associato ad un id categoria, e poi un campo che raccolga in questo formato gli id degli utenti:
                            -0-1-16-19-58-
                            -0- sarà il primo di default

                            Quando l'utente con id 3, associato alla categoria id 5, si logga, fai eseguire la seguente query:

                            SELECT * FROm tabella WHERE id_categoria='5' AND id_utenti NOT LIKE "%-3-%"
                            

                            Quando l'utente cliccherà sul tasto "letto" aggiornerai il campo degli id utenti che han letto aggiungendo 3- alla fine:
                            $id_utenti=$id_utenti."3-";
                            e quindi aggiorni la tabella.
                            In questa maniera crei un solo record per ogni messaggio. 🙂

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • I
                              il.gege User • ultima modifica di

                              Mmmh si, potrebbe essere un'altra soluzione...

                              Ora vedo quale potrebbe essere la migliore attuabile nel mio caso..

                              Grazie!!

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • samyorn
                                samyorn Consiglio Direttivo • ultima modifica di

                                Di nulla, è corretto anche lo sviluppo fatto con marcocarrieri, ma pensando al poi, immagina di avere 100 utenti e di mandare 100 avvisi l'anno.
                                In un solo anno creerai 10000 record per soli 100 avvisi categorizzati, risparmiare risorse significa anche risparmiare dindini e tempi di esecuzione. 😉
                                Con questa soluzione, se applicabile ovviamente, avresti solo 100 record. 🙂

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • I
                                  il.gege User • ultima modifica di

                                  Forse l'unico "problema" sarebbe poi la lunghezza del record dove memorizzo gli utenti che hanno letto il massaggio..

                                  0 Miglior Risposta Ringrazia Cita Rispondi

                                    1 Risposta Ultima Risposta
                                  • samyorn
                                    samyorn Consiglio Direttivo • ultima modifica di

                                    Utilizzando un campo TEXT hai 2^16 caratteri disponibili, con LONGTEXT 2^32.

                                    Un test che si potrebbe fare per vedere il risparmio di risorse è creare 1000 record (10 utenti * 100 avvisi) a simulare degli avvisi completi e poi creare 100 record che simulino i singoli avvisi e che nel campo id_utente contengano 10 id (-0-1-2-3-4-5-6-7-8-9-10-), e provare per ognuno dei due metodi quale occupa più spazio. 😉

                                    P.S. ovviamente non dico che sia fattibile, ma è un'idea che mi è venuta leggendo il thread. 😉

                                    0 Miglior Risposta Ringrazia Cita Rispondi

                                      1 Risposta Ultima Risposta
                                    • I
                                      il.gege User • ultima modifica di

                                      No no ma ci credo che risparmio spazio 😄

                                      0 Miglior Risposta Ringrazia Cita Rispondi

                                        1 Risposta Ultima Risposta
                                      • marcocarrieri
                                        marcocarrieri ModSenior • ultima modifica di

                                        E' vero, questa soluzione mi piace di più, d'altronde all'università avevo preso solo 20 sull'esame di ottimizzazione ah ah ah.

                                        0 Miglior Risposta Ringrazia Cita Rispondi

                                          1 Risposta Ultima Risposta
                                        Caricamento altri post
                                        Rispondi
                                        • Topic risposta
                                        Effettua l'accesso per rispondere
                                        • Da Vecchi a Nuovi
                                        • Da Nuovi a Vecchi
                                        • Più Voti