Variablen automatisch aktualisieren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
anfrage
angezeigt echo
ausgabe
aussehen
beispiel
code
datei
datenbank
datum
http
inhalt
intervall
konsole
nachfrage
navigation
server
test
url
weg
-
Hallo.
Ich habe eine kleine Frage. Und zwar möchte ich, dass Variablen, die mit Informationen aus der Datenbank gefüttert werden automatisch aktualisiert werden, sobald sich der Wert in der Datenbank ändert und das OHNE das die website komplett neu geladen wird.
BSP.:
<?php $test_auslesen = mysql_query('SELECT * FROM test WHERE name1=0'); $test_ausgabe = mysql_fetch_assoc($test_auslesen); echo $test_ausgabe['test']; ?>
Angenommen test_ausgabe['test'] ist gleich 5 -> dann wird eine 5 angezeigt. Ändere ich jetzt bspw. die 5 zu einer 90, dann soll diese 90 bei meinen Usern direkt angezeigt werden OHNE das sie etwas zutun.
Kann mir da einer helfen? Idealerweise anhand eines Beispiels basierend auf meinem Beispiel?
Bringe mir das momentan selber bei und finde es leicht verwirrend wie solche Themen erklärt werden.
Bspw. konnte mir folgende Seite:
http://wiki.selfhtml.org/wiki/JavaScript/Ajax/XMLHttpRequest
überhaupt nicht weiter helfen weil ich nicht ganz verstehe welcher code was bewirkt. Aus diesem Grund wäre ein Beispiel, das auf meinem Code oben aufgebaut ist hilfreich, damit ich mir alles andere herleiten kann.
Ich bedanke mich jetzt schon !
Beste Grüße :)
Beitrag zuletzt geändert: 15.12.2014 15:59:50 von hackyourlife -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Heute ist nicht mein Beispiel-Tag, aber ohne Beispiel erklärt:
1) der Browser schickt eine Anfrage an den Server
2) der Server holt die Daten aus der Datenbank und generiert die HTML-Seite.
3) die Seite wird zum Client übertragen, und der zeigt sie an.
Jetzt muss entweder der Client immer wieder (= z.B. alle 5 Minuten) beim Server nachfragen »hat sich was geändert?« oder der Server informiert den Client, sobald sich etwas geändert hat.
Das Nachfragen passiert per JavaScript und mit dem »XMLHttpRequest«. Der schickt per JavaScript eine Anfrage an den Server und gibt dir das Ergebnis der Anfrage wieder zurück, ohne dass der Nutzer davon was merkt. Du kannst also damit ein PHP-Skript aufrufen, welches dir dann die Änderungen zurückgibt und die trägst du dann via JavaScript auf der Seite ein.
Alternative mit »Server benachrichtigt Client«: Das ist sinnvoll, wenn sich die Daten schnell ändern und diese Änderungen möglichst sofort sichtbar sein sollen (z.B. Chat). Das ist deutlich komplexer als die Variante 1 mit Nachfragen und XMLHttpRequests allein sind da nicht unbedingt hilfreich. So etwas lässt sich dann z.B. via WebSockets o.ä. lösen, was du hier auf lima-city allerdings nicht tun kannst. -
Hi, danke für deine Antwort.
Die Theorie dahinter ist mir bekannt. Ich kann sie nur nicht praktisch anwenden
Habe weiter geschaut und bin auf folgendes gestoßen:
<a id="zeit"></a>
<script>
var myVar=setInterval(function(){myTimer()},0);
function myTimer() {
var d = new Date();
document.getElementById("zeit").innerHTML = d.toLocaleTimeString();
}
</script>
Kann ich mit diesem Skript eine php variable, die mit DB Infos gefüttert ist stopfen? Bekomme das nicht hin.
Ich muss es einfach nur schaffen, dass meine Variablen (=DB Daten) automatisch aktualisiert werden, damit ich mit meiner Seite anfangen kann.
Ich hoffe mir kann einer weiterhelfen.
Liebe Grüße dbzuw -
Also mal ein grober Ablauf:
Du brauchst ein DIV in welchen sich der zu ladende Inhalt befindet. Das DIV muss mit einer ID ausgestattet sein, über diese wird es nachher angesprochen.
echo "<div id=\"refresh\">"; // Hier wird Dein Inhalt angezeigt. echo "</div>";
Dann benötigst Du eine Datei (.php) in der die DB Abfrage ausgeführt und ausgegeben wird.
Um dann den Inhalt neu zu laden benötigst Du ein kleines Stück Javascript, das könnte so aussehen:
$(document).ready(function() { $("#refresh").load("db_laden.php"); var refreshId = setInterval(function() { $("#refresh").load("db_laden.php"); }, 7000);// Intervall in ms });
Nun wird im ausgewählten Intervall der Inhalt der Datei neu geladen und in der Ausgabe angepasst ohne dass die Seite neu geladen werden muss. Gibt sicher andere Wege, das ist der den ich meist nehme, vielleicht hilft es ja weiter.
LG Marco
-
Hier gibt es ein komplette deutsches Howto incl. Demo:
http://www.tfonfara.de/ajax-seiteninhalt-laufend-aktualisieren-jquery.xhtml
Beitrag zuletzt geändert: 19.12.2014 9:32:44 von dunkeltuten -
aff3m1tw4ff3 schrieb:
Also mal ein grober Ablauf:
Du brauchst ein DIV in welchen sich der zu ladende Inhalt befindet. Das DIV muss mit einer ID ausgestattet sein, über diese wird es nachher angesprochen.
echo "<div id=\"refresh\">"; // Hier wird Dein Inhalt angezeigt. echo "</div>";
Dann benötigst Du eine Datei (.php) in der die DB Abfrage ausgeführt und ausgegeben wird.
Um dann den Inhalt neu zu laden benötigst Du ein kleines Stück Javascript, das könnte so aussehen:
$(document).ready(function() { $("#refresh").load("db_laden.php"); var refreshId = setInterval(function() { $("#refresh").load("db_laden.php"); }, 7000);// Intervall in ms });
Nun wird im ausgewählten Intervall der Inhalt der Datei neu geladen und in der Ausgabe angepasst ohne dass die Seite neu geladen werden muss. Gibt sicher andere Wege, das ist der den ich meist nehme, vielleicht hilft es ja weiter.
LG Marco
Habe es versucht, der inhalt wird aber nicht angezeigt :-S -
dbzuw schrieb:
Und dabei gibt es einen Error. Ein "klappt nicht" bringt uns und damit auch dir genau garnichts. Also poste bitte eventuelle Errors oder wenigstens eine Beschreibung, bzw Code.
Habe es versucht, der inhalt wird aber nicht angezeigt :-S
In den Browsern gibt es eine Konsole bei der JavaScript Errors angezeigt werden. Diese findest du per Rechtsklick auf ein beliebiges Element und dann "Element untersuchen". Aber auch über die herkömmliche Navigation.
Chrome z.B. Navigation -> Weitere Tools -> JavaScript Konsole
PHP Errors muss für die jeweilige Domain aktiviert sein, dies kannst du in der Verwaltung unter "Webseiten" machen.
Hast du eventuell jQuery vergessen? Oder bei PHP die Code Einleitung <?php.
Ein funktionierendes, ganzes Beispiel wär:
HTML:
<html> <head> <script src="http://code.jquery.com/jquery-2.1.3.js" type="text/javascript"></script> <script> $(document).ready(function() { $("#refresh").load("db_laden.php"); var refreshId = setInterval(function() { $("#refresh").load("db_laden.php"); }, 7000); }); </script> </head> <body> <div id="refresh"></div> </body> </html>
PHP:
<?php echo "Inhalt"; ?>
Das PHP File muss in diesem Fall db_laden.php heissen. Bei dir kommt eben dein Datenbankcode rein, und das Endergebnis wird einfach als Echo ausgegeben.
Beitrag zuletzt geändert: 19.12.2014 14:32:06 von c143 -
Hi. Da steht nicht das es nicht klappt, sondern das der Inhalt nicht angezeigt wird.
Und damit meinte ich das der Inhalt der .php Datei, die da geladen werden sollte nicht geladen wird.
Ich habe das Poblem gerade aber in dern Griff bekommen, sprich es geht nun.
Vielen lieben Dank für eure Hilfe!! Echt Super :)
Liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage