• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Problema risolto Alert globale su sito web

gedamial

Utente Senior
Autore del topic
9 Giugno 2010
1.937
69
Miglior risposta
0
Buonsalve!

Allora volevo chiedervi come ottenere un effetto "Alert globale". Mi spiego meglio: quando io, nel mio AdminCP, scrivo un messaggio e schiaccio "Invia", voglio che il messaggio venga mostrato a tutti i visitatori del sito in tempo reale (sotto forma di alert).

Teoricamente, con jQuery dovrei controllare ogni TOT di tempo se ci sono nuovi messaggi da mostrare. Se sì, allora mostralo/li, altrimenti statte zitto e fermo. Praticamente... beh... mi serve il vostro aiuto :emoji_relieved:

P.S: Eventualmente, come poter dare uno stile agli alert stessi?

Grazie in anticipo!
 
Dovresti usare PHP come prima cosa oltre che Ajax però non conosco Ajax quindi non posso essere d'aiuto
 
Dovresti usare PHP come prima cosa oltre che Ajax però non conosco Ajax quindi non posso essere d'aiuto

Si in effetti Ajax ritornerebbe utile per evitare che l'utente ricaricasse la pagina

UPDATE:

Mi serve solo il codice AJAX che mi permette di ricaricare la pagina in modo automatico!
@Dvdxseo @Mirkuzzo @#Gigius
 
Ultima modifica:
Si in effetti Ajax ritornerebbe utile per evitare che l'utente ricaricasse la pagina

UPDATE:

Mi serve solo il codice AJAX che mi permette di ricaricare la pagina in modo automatico!
@Dvdxseo @Mirkuzzo @#Gigius
Ciao, ti butto giù un minimo script che cerca nuovi messaggi da far apparire..
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!
Questo controlla ogni mezzo secondo se ci sono nuovi messaggi da mostrare. Se ci sono verranno messi all'interno del div con id "div_alert" (che avrai creato in precedenza, e magari lo avrai impostato con display: none;). La parte php non l'ho scritta visto che hai detto che non ti serve, ma sarei curioso di vedere come hai risolto questo problema.

:bye:
 
Ciao, ti butto giù un minimo script che cerca nuovi messaggi da far apparire..
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!
Questo controlla ogni mezzo secondo se ci sono nuovi messaggi da mostrare. Se ci sono verranno messi all'interno del div con id "div_alert" (che avrai creato in precedenza, e magari lo avrai impostato con display: none;). La parte php non l'ho scritta visto che hai detto che non ti serve, ma sarei curioso di vedere come hai risolto questo problema.

:bye:


Allora nel pannello di controllo ho questo div:

HTML:
Perfavore, Entra oppure Registrati per vedere i codici!

unito a questo php:

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Bene. Ora l'unica cosa che necessito è quel codice da mettere IN OGNI PAGINA del sito che controlla ogni volta se ci sono nuove righe nella tabella alert (vero -> stampa il messaggio). Naturalmente, però, il sito dovrà controllare ogni poco se ci sono nuove righe.
L'alternativa sarebbe quella di mostrare l'alert una volta aver premuto il tasto INVIA dal pannello di controllo, senza inserire una riga nel database ecc, e quindi senza sfruttare il lato server... ma non so se è fattibile...
 
Bene. Ora l'unica cosa che necessito è quel codice da mettere IN OGNI PAGINA del sito che controlla ogni volta se ci sono nuove righe nella tabella alert (vero -> stampa il messaggio). Naturalmente, però, il sito dovrà controllare ogni poco se ci sono nuove righe.
L'alternativa sarebbe quella di mostrare l'alert una volta aver premuto il tasto INVIA dal pannello di controllo, senza inserire una riga nel database ecc, e quindi senza sfruttare il lato server... ma non so se è fattibile...

Abbastanza difficile, almeno per quello che ho in mente in questo momento, dovresti usare altre tecnologie.

Crea una pagina 'cerca_alert.php' con un contenuto simile a questo:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

In questo modo cerchi un messaggio alla volta nel database (cercando prima quelli più vecchi), e se lo trovi lo restituisci e poi lo cancelli dal database (a questo proposito ti consiglio di aggiungere un campo time e un campo id).

Poi metti il mio script nel tag <head> di ogni pagina in cui vuoi far comparire gli alert.
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!
 
HTML:
Perfavore, Entra oppure Registrati per vedere i codici!

Allora la tabella è così strutturata:
Perfavore, Entra oppure Registrati per vedere i Link!


find_alert.php:
Perfavore, Entra oppure Registrati per vedere i Link!

Pannello di Controllo [1]:
Perfavore, Entra oppure Registrati per vedere i Link!

Pannello di Controllo [2]:
Perfavore, Entra oppure Registrati per vedere i Link!

Pagina dove mostrare alert:
Perfavore, Entra oppure Registrati per vedere i Link!


Cosa c'è che non va? :S
 
Tante cose :emoji_relieved:
Intanto quel
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
Cosa fa? Che file è? Si connette al database? :|
Poi, l'input type="submit" che usi per inviare gli alert non ha una value. :emoji_relieved:
Hai creato il div con id="alert" dove mostrerai gli alert? E stai attento che devi compilare tutti i campi di quella tabella, quindi inserisci anche il timestamp nel campo data, e un username. ;)
 
Tante cose :emoji_relieved:
Intanto quel
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!
Cosa fa? Che file è? Si connette al database? :|
Poi, l'input type="submit" che usi per inviare gli alert non ha una value. :emoji_relieved:
Hai creato il div con id="alert" dove mostrerai gli alert? E stai attento che devi compilare tutti i campi di quella tabella, quindi inserisci anche il timestamp nel campo data, e un username. ;)

Avevo già aggiustato, è alert_table.php (connette al db e crea la tabella)
Non capisco che vuoi dire con "Hai creato il div con id="alert" dove mostrerai gli alert?". Quel div che vedi nello screen racchiude semplicemente il form.
Ok, messo data e tutto. Ma non funge!
 
Ti consiglio da parte mia una soluzione alternativa. Quella proposta schianta di richieste il server e il database, rallentando entrambi. Questo potrebbe creare seri problemi se il tuo sito ha un minimo di visitatori al giorno e ciascuno di loro trascorre un po di tempo sulle tue pagine.

Ti propongo invece una soluzione molto più tecnologica, che è l'utilizzo dei websocket.
Guarda
Perfavore, Entra oppure Registrati per vedere i Link!
. In questo modo funzionerebbe proprio come dici te..al click del pulsante tutti vedono il messaggio, non c'è mediazione di php e soprattutto mysql.
 
Ti consiglio da parte mia una soluzione alternativa. Quella proposta schianta di richieste il server e il database, rallentando entrambi. Questo potrebbe creare seri problemi se il tuo sito ha un minimo di visitatori al giorno e ciascuno di loro trascorre un po di tempo sulle tue pagine.

Ti propongo invece una soluzione molto più tecnologica, che è l'utilizzo dei websocket.
Guarda
Perfavore, Entra oppure Registrati per vedere i Link!
. In questo modo funzionerebbe proprio come dici te..al click del pulsante tutti vedono il messaggio, non c'è mediazione di php e soprattutto mysql.

Una volta su quel sito cosa dovrei fare? :S
 
SetInterval è inutile, ti rallenta il sito perché ricarica la query per tante volte, quindi evita questo codice! Come ha consigliato helpcode, è preferibile usare i socket. ;)
Perfavore, Entra oppure Registrati per vedere i Link!
<- Prova questa demo, come vedi non c'è alcun setinterval ma solamente socket e direi che il risultato fa effetto. @HabboFanNumero1
 
Ok ragazzi ho escogitato un nuovo metodo senza usare database, tabelle, righe eccetera. L'unica cosa che mi serve ora è quel maledetto codice AJAX che mi permette di ricaricare la pagina ogni mezzo-secondo in modo "nascosto"
@Efesto. @Dvdxseo

UPDATE:

PROBLEMA RISOLTOOOOOOOOOOOOOOOOOOOOOO

Scusate lo sfogo :emoji_relieved:
 
Ultima modifica:
SetInterval è inutile, ti rallenta il sito perché ricarica la query per tante volte, quindi evita questo codice! Come ha consigliato helpcode, è preferibile usare i socket. ;)
Perfavore, Entra oppure Registrati per vedere i Link!
<- Prova questa demo, come vedi non c'è alcun setinterval ma solamente socket e direi che il risultato fa effetto. @HabboFanNumero1
Anche io volevo proporre qualcosa in Node.js, ma non mi sembrava il caso di introdurre qualcosa di nuovo e magari non di immediata comprensione. SetInterval è pesante, su questo sono d'accordo.
Ok ragazzi ho escogitato un nuovo metodo senza usare database, tabelle, righe eccetera. L'unica cosa che mi serve ora è quel maledetto codice AJAX che mi permette di ricaricare la pagina ogni mezzo-secondo in modo "nascosto"
@Efesto. @Dvdxseo

UPDATE:

PROBLEMA RISOLTOOOOOOOOOOOOOOOOOOOOOO

Scusate lo sfogo :emoji_relieved:

Sposto tra i risolti, ma dicci, cos'è stato che ha risolto definitivamente il problema? :emoji_relieved:
 
Anche io volevo proporre qualcosa in Node.js, ma non mi sembrava il caso di introdurre qualcosa di nuovo e magari non di immediata comprensione. SetInterval è pesante, su questo sono d'accordo.

Sposto tra i risolti, ma dicci, cos'è stato che ha risolto definitivamente il problema? :emoji_relieved:

Crea un post in Assistenza Tecnica :|

LOL scherzo. Ho deciso di spostare gli alert in un file .txt che si svuota per lasciare spazio ad una nuova stringa ogni qualvolta decidessi di inserire un nuovo avviso al suo interno. Contemporaneamente, con JS (maledetto) e AJAX controllo se ci sono nuovi messaggi da inviare (usando anche i cookie). Per quanto riguarda il timer che controlla se ci sono nuovi alert, uso setTimeout()

Non per vantarmi (non è da me) ma l'idea di trasferire tutto su un file è una genialata :soso: