automatische New Pm check

kirka

Mitglied
Hallo Leute, Ich schraube gerade an dem automatischen PM check der automatisch prüfen wird ob man neu Nachrichten hat oder nicht wenn ja dann wird "(Anzahl) Nachricht(en)" angezeigt wenn man keine neu Nachrichten hat wird auch nix angezeigt. Ich möchte dass man das auch ohne die Seite refreshen zu müssen angezeicht bekommt. Deswegen habe ich mir einen Javascript Code zusammen geschraubt aber der will irgendwie nicht funktionieren. Der soll ja automatisch mit pm.php verbinden und prüfen ob neu Nachrichten vorhanden sind oder nicht hier ist mein Javascript Code der steht bei mir in index.php :

Code:
<input type="hidden" id="userid" value="2">

<script type="text/javascript"><!--
var request = false;
var newmsgintvl = false;


function setRequest(value) {
    if (window.XMLHttpRequest) {
    request = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
    try {
    request = new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e) {
    try {
    request = new ActiveXObject('Microsoft.XMLHTTP');
    } catch (e) {}
    }
    }
    if (!request) {
    return false;
    } else {
    var url = "msg.php";
    request.open('post', url, true);
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request.send('name='+value);
    request.onreadystatechange = interpretRequest;
    }
}

function settitleinterval() {
    if(document.title == 'Neue Nachricht!')document.title = 'Seite.de';
    else document.title = 'Neue Nachricht!';
    if(document.getElementById('msg').innerHTML == ''){
        window.clearInterval(newmsgintvl);
        document.title = 'Seite.de Nachrichten';
    }
}


function checkinterval(){
    if(document.getElementById('msg').innerHTML != '' && newmsgintvl == false ){
       newmsgintvl = window.setInterval("settitleinterval()", 700);
    }
}



function interpretRequest() {
    switch (request.readyState) {
    case 4:
    if (request.status != 200) {
    }
    else
    {
    var content = request.responseText;
    document.getElementById('msg').innerHTML = content;
     checkinterval();
    }
    break;
    default:
    break;
    }
}

var userid = document.getElementById('userid').value;
var aktiv = window.setInterval("setRequest("+userid+")", 60000);
var timeout = 0;
var closetimer	= 0;
var ddmenuitem = 0;
function mopen(id)
{
mcancelclosetime();
if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';
ddmenuitem = document.getElementById(id);
ddmenuitem.style.visibility = 'visible';
}
function mclose()
{if(ddmenuitem) ddmenuitem.style.visibility = 'hidden';}
function mclosetime(){closetimer = window.setTimeout(mclose, timeout);}
function mcancelclosetime()
{
if(closetimer){window.clearTimeout(closetimer);closetimer = null;}}document.onclick = mclose;
// --></script>


<?php include ("pm.php"); ?>

und hier ist meine pm.php Datei die mit der Mysql verbindet und prüft .Wenn ich per Session prüfen dann geht es, aber dafür muss ich jedes mal die Seite neu refreshen(laden) um zu sehen ob ich neue Nachrichten habe oder nicht und wenn ich versuche das per Javascript zu prüfen geht das nicht ...

PHP:
<?php

    include ("../../inc/db.php");

    $uid = $_GET['userid']; 

   //@session_start();
   //$sess = $_SESSION['login_id'];


    $q = mysql_query("SELECT * FROM pm_messages WHERE to_user = '$uid' AND m_read = '0' AND folder = 'inbox' ") or die (mysql_error());
    $num = mysql_num_rows($q);

    if ($num != 0) echo '<span id="msg"> '.$num.' neue Mail</span>';

 ?>

wo liegt der Fehler oder was mach ich falsch ? komme irgendwie nicht weiter :(( heute ist nicht mein Tag ))
 
Zu viel Text xD.
Sorry ich les mir im laufe des Tages mal alles durch und gebe dann eine genauere Hilfe :)
Aber du solltest dir die Antwort vom aJaX Requests mal durchlesen im Firebug vlt. hilft das ja schon.

edit: Warum erfindest du das Rad neu und nimmst nicht einfach JQuery?
 
Ich wollte es auch erstmal mit JQuery machen aber hab das nicht geschafft deswegen habe ich das per Javascript versucht .. Aber wenn ihr mit paar Tipps mit JQuery geben könnt oder Bsp. dann währe es echt super .. werde jetzt das mit Ajax Requests durchlesen
 
Zuletzt bearbeitet:
Na dann mach doch eine JS Funktion:

Code:
<body onload="loadPM();">
<script type="text/javascript">
function loadPM(){
window.setTimeout('loadPN()', 10000); // LoadPN()( nach 10 Sekunden ausführen
}

function loadPN(){
$.ajax({
   type: "GET",
   url: "pm.php",
   data: "pm-nachrichten",
   success: function(msg){
       $('#pm-nachrichten').empty()
       $('<span>'+msg+'</span>').appendTo('#pm-nachrichten'); // Datei in DIV mit der ID pm-nachrichten nachladen
   }
 });
loadPM();
}
</script>

Dass ist doch das was du willst oder?
 
Zuletzt bearbeitet:
Na dann mach doch eine JS Funktion:

Code:
<body onload="loadPM();">
<script type="text/javascript"><!--
var _gaq = _gaq || [];
_gaq.push(
['_setAccount', 'UA-1691844-1'],
['_trackPageview']
);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
//-->
</script>

<script type="text/javascript">
function loadPM(){
window.setTimeout('loadPN()', 10000); // LoadPN()( nach 10 Sekunden ausführen
}

function loadPN(){
$.ajax({
   type: "GET",
   url: "pm.php",
   data: "pm-nachrichten",
   success: function(msg){
       $('#pm-nachrichten').empty()
       $('<span>'+msg+'</span>').appendTo('#pm-nachrichten'); // Datei in DIV mit der ID pm-nachrichten nachladen
   }
 });
loadPM();
}
</script>

Dass ist doch das was du willst oder?


jaaa, DANKE ******
 
Zurück