Ich habe eine Datenbank mit Links, die Benutzer einreichen können. Jedes Mal, wenn ein Benutzer einen neuen Link einreicht, wird er der Datenbank hinzugefügt. Ich habe eine separate Seite, auf der alle eingereichten Links aufgelistet sind. Wie kann ich diese separate Seite die Datenbank auf Änderungen prüfen lassen und sie mit AJAX laden, wenn sie sie findet?Verwenden Sie PHP + jQuery AJAX, um die MySQL-Datenbank auf Änderungen zu prüfen und die Änderungen zu laden?
Antwort
Die Seite, die abhängig vom Datenbankinhalt aktualisiert werden muss, muss die Datenbank ab und zu abfragen. Javascript ist eine clientseitige Technologie und nicht für die direkte Interaktion mit Back-End-Servern konzipiert.
würde die Javascript wie folgt aussehen (mit Jquery):
$.post("/webroot/checkForChanges.php",
{ currentNumber: currNumString },
function(dat){
$(dat).find('link').each(function() {
$('#linksTable').append(""+$(this).text()+"");
});
});
Dies wird eine POST-Anfrage an die Seite machen Sie ist schreiben (checkForChanges.php) mit der Variable mit dem Namen currentNumber die, die einen Wert hat die Zeichenfolgendarstellung der Anzahl der Links, die derzeit in der Tabelle enthalten sind (zähle diese, wie du willst).
Die Funktion (dat) Teil des Codes ist die Callback-Funktion, die ausgeführt wird, wenn die Anfrage abgeschlossen ist (wenn die PHP-Seite die Verarbeitung abgeschlossen hat und der resultierende Text in den Browser empfangen wurde).
Ich werde zurückkommen, was das tut, wenn ich erklärt habe, was die PHP-Seite macht.
Sie haben uns nichts über Ihre Datenbankstruktur gesagt, aber da Sie Benutzern erlauben, Links hinzuzufügen, müssen Sie irgendwo eine Sequenz definieren, die eine Integer-ID für den Link verfolgt (so dass jeder Link sein kann) eine eindeutige ID in der Datenbank gegeben). Ich nehme an, Sie diese ‚Links-count‘ genannt habe Sie eine einfache PHP-Seite mit dem folgenden Pseudo-Code erstellen sollten:
//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>";
Die Ausgabe von dieser Seite zurückgegeben wird ein XML-Dokument mit einem Knoten für jeden Link, der den HTML-Code enthält, den Sie in Ihre Tabellenzelle einfügen möchten.
Jetzt können wir an die Callback-Funktion in der $ .post Anfrage in Ihrem clientseitigen Java-Code zurück:
function(dat){
$(dat).find('link').each(function() {
$('#linksTable').append(""+$(this).text()+"");
});
});
dat ist der zurückgegebene Text, wickeln Sie es als ein jQuery-Objekt und dann finden die Sammlung von Tags mit dem Namen "Link". Führen Sie für jedes von der PHP-Seite zurückgegebene Link-Tag eine Funktion aus, die eine neue Tabellenzeile an die LinksTable anfügt, die die Daten innerhalb der Link-Tags enthält.
Sie können ein aktives Javascript auf der separaten Seite haben, die im Grunde die Datenbank nach Änderungen abfragt, oder Sie können eine Callback-Funktion nach einer erfolgreichen Übermittlung ausführen lassen. Ich bin mir nicht ganz sicher, was hier abgeht, also weiß ich nicht wirklich, was ich empfehlen soll.
- 1. Verwenden Sie AJAX, um SQL-Datenbank nach Änderungen zu beobachten
- 2. load() verwenden, um Seite zu laden, die auch jQuery verwendet
- 3. Finden Sie, was geändert wurde und laden Sie nur Änderungen
- 4. Die beste Methode, um ein Element bei Änderungen zu delegieren?
- 5. Verwenden Sie die Funktion Ajax() in Jquery, um PART einer externen Seite in div zu laden
- 6. Verschlüsselung, um Dateien vor Änderungen zu schützen
- 7. force git, um die Änderungen von cherry-pick zu übernehmen
- 8. PHP: Wichtige Änderungen von Array zu String
- 9. Um PHP-Vorlagen oder jQuery AJAX-Aufrufe zu verwenden?
- 10. Verwenden von Delphi, um Änderungen an Ordner zu verfolgen?
- 11. Inhalt in Textbereichen gesetzt nicEdit nicht zu verwenden, zu aktualisieren Benutzer, um Änderungen
- 12. prüfen „Änderungen‚Dateiname‘Prompt w/VBA speichern?
- 13. Wie verwendet man jQuery SlickGrid mit PHP/MySQL (Serverdaten laden und Änderungen speichern)
- 14. Ajax dynamisch "Änderungen speichern" div
- 15. PHP - Verwenden Sie Paypal, um die Transaktion zu tun
- 16. Wie entwerfe ich einen Algorithmus, um die optimale Lösung für die Anzahl der Änderungen zu finden?
- 17. auf Git-Pull-fragen die lokalen Änderungen
- 18. Wartung - Balancing die Frage, wann und wenn Sie Änderungen vornehmen
- 19. Verwenden Sie Flash als Shell, um die Flex-App zu laden und URLVars zu übergeben?
- 20. WiX-Änderungen erforderlich, um die .NET 3.5-Installation für Vista (und höher) zu rationalisieren
- 21. Anzeige speichern Klicken Sie auf die Datenbank, um PHP zu verwenden, dann öffnen Sie den Link
- 22. Eclipse Änderungen rückgängig machen, um zu bestimmter Zeit zu projizieren?
- 23. chrome.filesystem Track-Verzeichnis zu Änderungen
- 24. So speichern Sie die Änderungen an jTable
- 25. So speichern Sie die Änderungen, indem Sie das Passwort bestätigen
- 26. Richtiger Weg, um Änderungen in Git zu verwerfen
- 27. Wie Ajax und jQuery verwenden, um Informationen
- 28. So erkennen Sie Änderungen auf der Webseite ohne erneutes Laden
- 29. ServiceNow-Berichte, um Daten zu ziehen, die sich auf Änderungen beziehen
- 30. Verfolgen Sie Änderungen zu bestimmten div ohne Onclick-Funktionalität
Nun, es ist eine ziemlich vollständige Antwort, die ich mir etwas Zeit genommen habe ... bballbackus, hast du es versucht? Kannst du das akzeptieren oder dafür stimmen oder zumindest Feedback in deinen Kommentaren geben? Vielen Dank – sillyMunky