Hallo,
ich habe mir ein Control Panel geschrieben. Ich habe folgende Dateien die bei jeden Seitenaufruf aufgerufen werden
Header.php
Seite.php
Footer.php
Nun befindet sich im Header ein Dropdown Menü mit einem Icon für die Anzeige offener Nachrichten. Nun soll aus der Datenbank alle aktuellen Nachrichten Daten ausgelesen werden. Das auslesen an sich funktioniert super, allerdings nicht die aktualisierung. Denn wenn ich die Nachricht selbst aufrufe wird zuerst abgefragt wie viele Nachrichten offen sind über die Header Datei und dann wird erst der Datenbank über die Seite.php mitgeteilt dass die Nachricht geöffnet wurde.
Welche Möglichkeiten habe ich nun der Header.php mitzuteilen eine aktualisierung durchzuführen ohne dass meine Seite.php im Hintergrund neu geladen wird ?
Versucht habe ich es schon mit folgenden JavaScript. Allerdings wird hierbei der gesamte Code von der Seite.php ebenfalls mit im Hintergrund geladen und somit der Datenbank mitgeteilt dass alle Nachrichten gelesen wurden.
Hat da jemand eine Idee wie ich dass ganze umsetzen kann ?
<script type="text/javascript">
var seconds = 1; // --- Gesamt Reload-Dauer in Sekunden
var mdelay = 1000; // --- Dauer der fadeIn/Out Animation
var milisec = ((seconds*1000) - (mdelay*2));
var auto_refresh = setInterval( function() {
$("#nav_message").load(window.location.href + " #nav_message" );
}, 1000);
</script>
Alles anzeigen
<div id="nav_message">
<?php echo nl2br(e(getOpenMessage($id)));?>
</div>
function getOpenMessage($userID)
{
include("./config/config.php");
$query = $connect->prepare('SELECT distinct(message_id) FROM `nachrichten` WHERE `an` = :id and gelesen = 0');
$query->execute(array('id' => $userID));
$rowCount = $query->rowCount();
return $rowCount;
}
Mein Template ist wie folgt für den Aufruf aufgebaut
<?php include("template/navigation.php");
if(isset($_GET["page"])) $page = $_GET["page"];
else $page = "home";
if(file_exists('pages/'.$page.'.php'))
include('pages/'.$page.'.php');
else include("pages/home.php");
include("footer.php");
?>
Ich hoffe ich konnte mich in diesem Fall ausreichend ausdrücken. Bei Fragen gerne stellen. Freue mich über jeden Ratschlag.