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.
    • I
      il.gege User • ultima modifica di

      Gestione avvisi tramite DB

      Vi pongo un quesito.

      Ho l'applicativo web che sto creando.
      Solite cose con profilo personale, operazioni varie etc etc.

      Volevo implementare un sistema anche di gestione avvisi.

      Vi spiego meglio:
      Io, amministratore supremo scrivo X nuovi avvisi, gli memorizzo in una data tabella.
      L'utente Pippo si logga e vede questi avvisi in primo piano. Di fianco ad ogni avviso c'è la possibilità di segnarlo come letto.

      Come faccio ad implementare un lavoro del genere senza creare mille e più tabelle, e senza inserire x*y (dove x è il numero di messaggi e y il numero di utenti) righe in una tabella??

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • 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