Ho un database di collegamenti che gli utenti possono inviare. Ogni volta che un utente invia un nuovo collegamento viene aggiunto al database. Ho una pagina separata che elenca tutti i link inviati. Come posso avere questa pagina separata controllare le modifiche al database e caricarle con AJAX quando le trova?Usa PHP + jQuery AJAX per controllare il database MySQL per le modifiche e caricare le modifiche?
risposta
La pagina che deve essere aggiornata in base ai contenuti del database deve eseguire il polling del DB ogni tanto. Javascript è una tecnologia lato client e non è progettata per interagire direttamente con i server back-end.
Il javascript sarebbe simile a questa (usando jQuery):
$.post("/webroot/checkForChanges.php",
{ currentNumber: currNumString },
function(dat){
$(dat).find('link').each(function() {
$('#linksTable').append(""+$(this).text()+"");
});
});
Questo farà una richiesta POST alla pagina si scriverà (checkForChanges.php) con la variabile denominata currentNumber che ha un valore che è la rappresentazione in stringa del numero di link attualmente presenti nella tabella (contali come preferisci).
la parte funzione (dat) del codice è la funzione di callback che viene eseguita al termine della richiesta (ovvero quando la pagina php ha terminato l'elaborazione e il testo risultante è stato ricevuto nel browser).
Tornerò a ciò che sta facendo quando ho spiegato cosa sta facendo la pagina PHP.
Non ci hai detto nulla sulla struttura del tuo database, ma dal momento che stai permettendo alle persone di aggiungere link devi avere una sequenza definita da qualche parte che tiene traccia di un ID intero per il link (in modo che ogni link possa essere dato un ID univoco nel database). Darò per scontato che hai chiamato questo 'link-count' Si dovrebbe creare una pagina php semplice con il seguente pseudo-codice:
//open a database connection
$DB = connect(name, user, password);
//receive value
$currNum = $_POST['currentNumber'];
//check to see if sequence number has incremented since last time:
$seqNum = query("SELECT currval('links-count')");
if ($seqNum == $currNum){
exit(0);
} //if they are the same, just exit the page without writing anything
//otherwise, carry on... get the result of your query (for new links)
//and loop through, echoing return data
$newEntries = query("SELECT url FROM links WHERE id > ".$currNum);
echo "<newlinks>";
while ($result = fetch_result($newEntries)) {
echo "<link><a>".$result."</a></link>";
}
echo "</newlinks>";
L'output restituito da questa pagina sarà un documento XML con un nodo per ogni link che contiene l'HTML che vuoi inserire nella tua cella di tabella.
Ora possiamo tornare alla funzione di callback nella richiesta $ .post nel codice Java lato client:
function(dat){
$(dat).find('link').each(function() {
$('#linksTable').append(""+$(this).text()+"");
});
});
dat è il testo restituito, avvolgerlo come un oggetto jQuery e poi trovare il raccolta di tag denominati 'link'. per ogni tag 'link' restituito dalla pagina php, eseguire una funzione che aggiunge una nuova riga di tabella al linkTable che contiene i dati all'interno dei tag di collegamento.
È possibile avere un javascript attivo nella pagina separata che esegue il polling del db per le modifiche o si può fare una funzione di callback dopo una trasmissione riuscita. Non sono esattamente sicuro di cosa stia succedendo, quindi non so davvero cosa consigliare.
- 1. Utilizzare AJAX per visualizzare il database SQL per le modifiche
- 2. Come utilizzare jQuery SlickGrid con PHP/MySQL (caricare i dati del server e salvare le modifiche)
- 3. jQuery watch per le modifiche di domElement?
- 4. Il modo migliore per gestire le modifiche del database
- 5. C'è un modo per guardare un database mysql per le modifiche usando perl?
- 6. jQuery: come ascoltare le modifiche al DOM?
- 7. Come posso monitorare il DOM per le modifiche?
- 8. Come guardare una directory per le modifiche?
- 9. Controlla l'elenco delle directory per le modifiche?
- 10. Un algoritmo per trovare le modifiche comuni
- 11. PostgreSQL - rileva le modifiche e chiamare webservice
- 12. orologio modello di modulo per le modifiche
- 13. Perché Django esegue migrazioni per le modifiche help_text e verbose_name?
- 14. Usa jQuery per controllare se tutte le div sono nascoste
- 15. Qual è il modo migliore per "ripristinare" le modifiche?
- 16. altera più database mysql contemporaneamente (modifiche al database SAAS)
- 17. Mercuriale: controllare se l'ultimo pull/aggiornamento ha introdotto le modifiche
- 18. Git: usa il ripristino o il checkout per annullare le modifiche effettuate?
- 19. Come controllare le modifiche alla registrazione locale con AngularJS
- 20. Come funziona il polling di un file per le modifiche?
- 21. Devo preparare il mio codice per le modifiche future?
- 22. jQuery html() in Firefox (utilizza .innerHTML) ignora le modifiche DOM
- 23. Il Docker commit non salva le modifiche
- 24. Metodologie migliori per il controllo delle modifiche del database
- 25. Ascoltare le modifiche in Redis?
- 26. Entity framework salva le modifiche
- 27. Monitoraggio di Mongo per le modifiche con Node.js
- 28. SVN: Annulla le modifiche di una revisione casuale, ma conserva le modifiche di tutte le seguenti
- 29. Script di shell per controllare git per le modifiche e quindi eseguire il loop dei file modificati?
- 30. Ripristina le modifiche dopo il checkout accidentale?
Beh, è una risposta piuttosto completa. Mi ci è voluto un po 'di tempo ... bballbackus, ci hai provato? Potresti accettare o votare per questo o almeno dare un feedback nei tuoi commenti? Grazie – sillyMunky