PHP [MySQL + PHP + Javascript] Frage zu Mysql und PHP seitenrefresh bei Datenbankänderung

technik_toni

Ensign
Registriert
Sep. 2008
Beiträge
250
Hallo ich habe mal eine Frage zu MySQL und PHP.

1. Frage (MySQL): Ich würde gerne einen view erstellen, der mir aus zwei tabellen alle datensätze mit dem maximalwert anzeigt.

Bsp: tbl_botschaft
[table="width: 300, class: grid"]
[tr]
[td]id[/td]
[td]tbl_zeit_id[/td]
[td]Nummer[/td]
[/tr]
[tr]
[td]1[/td]
[td]1[/td]
[td]523[/td]
[/tr]
[tr]
[td]2[/td]
[td]1[/td]
[td]524[/td]
[/tr]
[tr]
[td]3[/td]
[td]2[/td]
[td]523[/td]
[/tr]
[tr]
[td]4[/td]
[td]2[/td]
[td]525[/td]
[/tr]
[tr]
[td]5[/td]
[td]3[/td]
[td]523[/td]
[/tr]
[tr]
[td]6[/td]
[td]3[/td]
[td]524[/td]
[/tr]
[tr]
[td]7[/td]
[td]3[/td]
[td]525[/td]
[/tr]
[tr]
[td]8[/td]
[td]3[/td]
[td]526[/td]
[/tr]
[/table]

tbl_zeit
[table="width: 300, class: grid"]
[tr]
[td]id[/td]
[td]zeitstempel[/td]
[/tr]
[tr]
[td]1[/td]
[td]15.21[/td]
[/tr]
[tr]
[td]2[/td]
[td]15.29[/td]
[/tr]
[tr]
[td]3[/td]
[td]15.39[/td]
[/tr]
[/table]

Die beiden Tabellen sind über den key "tbl_zeit_id" verbunden.
Aus diesen beiden Tabellen will ich folgenden view erzeugen:
view_gesamt
[table="width: 400, class: grid"]
[tr]
[td]neuste_id[/td]
[td]zeitstempel[/td]
[td]Nummer[/td]
[/tr]
[tr]
[td]3[/td]
[td]15.39[/td]
[td]523[/td]
[/tr]
[tr]
[td]3[/td]
[td]15.39[/td]
[td]524[/td]
[/tr]
[tr]
[td]3[/td]
[td]15.39[/td]
[td]525[/td]
[/tr]
[tr]
[td]3[/td]
[td]15.39[/td]
[td]526[/td]
[/tr]
[/table]




2. Frage PHP:
Ich würde gerne mit javascript eine php funktion aufrufen die mir zurück gibt ob eine Datenbankänderung vorgenommen wurde. Wenn ja dann soll die Seite aktualisiert werden.

Dazu habe ich folgende javascript Funktion
Code:
        <script type="text/javascript">
             $(document).ready(function() {
               $("#refresh").load("refresh.php");
               var refreshId = setInterval(function() {
                        var result = "<?php print dberg() ?>";
                        if (result == "true") {
                            $("#refresh").load('refresh.php?');
                        }
               }, 1000);
            });
         </script>

Die PHP Funktion "dberg()" prüft ob die Datenbank befüllt wurde.
Wenn ja dann gibt Sie ein true zurück und die Javascriptfunktion sollte dann eigentlich das div mit der id=refresh neu laden. Das ganze funktioniert wenn ich folgenden Code habe (zyklisch jede sekunde):
Code:
        <script type="text/javascript">
             $(document).ready(function() {
               $("#refresh").load("refresh.php");
               var refreshId = setInterval(function() {
                  $("#refresh").load('refresh.php?');
               }, 1000);
            });
        </script>

Kann mir jemand sagen warum es mit der PHP Funktion zusammen nicht funktioniert? Die Funktion selber gint jedenfalls sauber false oder true zurück wenn ich Sie aufrufe.
 
1. Google: "MySQL get highest value"
2. Javascript = LOKAL ONLY. Du kannst mit JS nicht auf dem Client-Rechner PHP Funktionen ausführen.
Dafür Google: AJAX.

mfg,
Max
 
Mir alle Werte mit der maximalen tbl_zeit_id anzuzeigen ist ja kein Problem. Aber ich bekomme es einfach nicht hin, dass er mir auch die zu der id passende Zeit aus der tabelle tbl_zeit mit übernimmt.
Ergänzung ()

Also zu Frage 2 habe ich selber die Antwort gefunden.

Code:
        <script type="text/javascript">
             $(document).ready(function() {
               $("#refresh").load("refresh.php");
               var refreshId = setInterval(function() {
                        $.ajax({
                           url: 'refresh3.php',
                           success: function (response) {
                             var result = response;
                             //alert(result);
                             if (result == "true") {
                                $("#refresh").load('refresh.php?');
                             }
                           }
                        });
               }, 1000);
            });
        </script>

Ich rufe jede Sekunde die PHP-Seite "refresh3.php" auf, in welcher die Datenbankänderungen abgefragt werden.
Wenn eine Änderung erkannt ist dann gibt die Siete true zurück und dann wird die Seite aktualisiert.


Fehlt nur noch eine Lösung zu Problem 1 :)
 
Zuletzt bearbeitet:
technik_toni schrieb:
Mir alle Werte mit der maximalen tbl_zeit_id anzuzeigen ist ja kein Problem. Aber ich bekomme es einfach nicht hin, dass er mir auch die zu der id passende Zeit aus der tabelle tbl_zeit mit übernimmt.

Du suchst nach den Basics der Basics der Basics von Relationalen Datenbanken: JOINs. Diese Datenbanken wurden quasi ausschließlich dafür geschaffen, um JOINs auszuführen:
http://dev.mysql.com/doc/refman/5.7/en/join.html
https://wiki.selfhtml.org/wiki/Datenbank/Einführung_in_Joins

Am Ende sollte es in etwa sowas werden:
Code:
SELECT z.id, z.zeitstempel, b.Nummber
FROM tbl_zeit z
LEFT JOIN tbl_botschaft b ON z.tbl_zeit_id = b.id
WHERE ...
 
Zuletzt bearbeitet:
Super Danke. Mit Left Join scheint es zu klappen. Ich habe es immer mit inner join probiert.
 
Zurück
Oben