php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Thema geschlossen
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.02.2011, 18:36  
Neuer Benutzer
 
Registriert seit: 16.02.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
Bono befindet sich auf einem aufstrebenden Ast
Standard XMLHttpRequest "updatet" nicht richtig

Also, ich habe mir gerade ein Script geschrieben der mir anzeigt wieviele neue Nachrichten ein User hat. Diese Zahl aktualisiert sich halt jede zwei Sekunden.
Das Problem ist jetzt aber, dass wenn man eine neue Nachricht bekommt diese nicht angezeigt wird. Hier mein Skript auf der Hauptseite:

PHP-Code:
<script type="text/javascript">
var getMsgRequest = null;

if (window.XMLHttpRequest) {
   getMsgRequest = new XMLHttpRequest();
}

requestNewMessages();
setInterval("requestNewMessages()", 2000);

function requestNewMessages() {
    getMsgRequest.open("GET", "../ajax/getMsg.php", true);
    getMsgRequest.onreadystatechange = getMsgStateChanged;
    getMsgRequest.send(null);
}

function getMsgStateChanged() {
    if(getMsgRequest.readyState == 4) {
        if(<?php echo count($_SESSION["newMsgNum"]);?> > 0) {
            document.getElementById('userMessagesContent').style.height = 55*<?php echo $_SESSION["newMsgNum"];?> + "px";
            document.getElementById('userMessagesContentEx').style.height = 55*<?php echo $_SESSION["newMsgNum"];?>-1 + "px";
            document.getElementById("userMessages").innerHTML = "Du hast <?php echo $_SESSION["newMsgNum"];?> neue Nachrichten.";
        }
        getMsgRequest = new XMLHttpRequest();
    }
}

function bottomBarDisplayDiv(dDiv) {
    if(document.getElementById('userMessagesContent').style.display == 'none') {
        document.getElementById('userMessagesContent').style.display = 'block';
        document.getElementById('userMessagesContentEx').style.display = 'block';
    } else {
        document.getElementById('userMessagesContent').style.display = 'none';
        document.getElementById('userMessagesContentEx').style.display = 'none';
    }
}

</script>
<br><br><br>

<div id="bottomBar">

<a href="#" onClick="bottomBarDisplayDiv('userMessages');"><div id="userMessages"></div></a>

</div>

<div id="userMessagesContent"></div>
<div id="userMessagesContentEx"></div>
und hier getMsg.php:

PHP-Code:
<?php
session_start
();

header("Cache-Control: no-cache, must-revalidate" );
header("Pragma: no-cache" );
header("Content-Type: text/html");
    
include 
"../include/php/mysql.connect.php";
include 
"../include/php/userInfos.php";

If(!
$_SESSION["userID"]) {
    Exit;
}


$getNewMsg = ("SELECT * FROM `messages` WHERE `toUserID` LIKE '".$userInfos->userID."' AND `read` LIKE ''");
$query_getNewMsg mysql_query($getNewMsg);

$_SESSION["msgIDs"] = array();
$_SESSION["newMsgNum"] = 0;

while(
$newMsg mysql_fetch_object($query_getNewMsg)) {
    
$_SESSION["msgIDs"][] = $newMsg->msgID;
    
$_SESSION["newMsgNum"]++;
}
?>
Bono ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.02.2011, 18:52  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Logisch, weil du in getMsgStateChanged ja immer wieder die gleiche Zahl ausgibst, die einmal bei der Ausgabe dieses Scriptes in den Code reingeschrieben wurde.
Und mit den Daten, die du per XMLHttpRequest vom Server abrufst, machst du überhaupt nichts.

Dir scheint das Prinzip noch kein Stück weit klar zu sein.

Und exakte Vergleiche in SQL-Queries mit LIKE zu machen, ist auch unsinnig.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Alt 16.02.2011, 19:03  
Neuer Benutzer
 
Registriert seit: 16.02.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
Bono befindet sich auf einem aufstrebenden Ast
Standard

Ich verstehe nicht genau was du meinst, denn bei getMsg.php setze ich doch $_SESSIOn["newMsgNum"] und das ist ja die Anzahl. Und genau die gebe ich dann ja aus aber die Zahl bleibt ja gleich..
Bono ist offline  
Alt 16.02.2011, 19:14  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von Bono Beitrag anzeigen
Ich verstehe nicht genau was du meinst,
Du hast ganz offenbar keine Ahnung von den grundlegenden Zusammenhängen.

Zitat:
denn bei getMsg.php setze ich doch $_SESSIOn["newMsgNum"]
Das machst du aber unendlich viel später, als die Ausgabe des Wertes!

Zitat:
Und genau die gebe ich dann ja aus aber die Zahl bleibt ja gleich..
Natürlich - die Ausgabe mittels
PHP-Code:
<?php echo count($_SESSION["newMsgNum"]);?>
erfolgt genau ein einziges Mal - zu dem Zeitpunkt, wo der Client deine „Hauptseite“ abruft.
Dieser Wert steht anschließend fest im JavaScript-Code drin, und du gibst ihn jedes mal wieder aus.
Dass du serverseitig mit deinen Requests den Inhalt der Session änderst, ändert aber natürlich nichts mehr an dem Script-Code, den der Client schon längst erhalten hat.

Du musst in getMsg.php die Ausgabe machen, und dann in deinem „Hauptscript“ den Inhalt dieser Ressource auswerten.

Und jetzt schau bitte in ein Grundlagen-Tutorial, damit du erst mal diese elementaren Zusammenhänge verstehst.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Alt 16.02.2011, 19:16  
Erfahrener Benutzer
 
Registriert seit: 19.06.2009
Beiträge: 837
PHP-Kenntnisse:
Fortgeschritten
Jens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nettJens Clasen ist einfach richtig nett
Standard

Ja, aber das auslesen von $_SESSION["newMsgNum"] passiert nur beim aller ersten mal. Halt Dir vor Augen, wo PHP ausgeführt wird und wo Dein JS.

Gruß Jens
Jens Clasen ist offline  
Alt 16.02.2011, 19:23  
Neuer Benutzer
 
Registriert seit: 16.02.2011
Beiträge: 3
PHP-Kenntnisse:
Anfänger
Bono befindet sich auf einem aufstrebenden Ast
Standard

Achso, ok jetzt verstehe ich(nachdem ich mir mal im Browser den Quellcode angeguckt habe..). Hat jemand eine gescheite Lösung für mich, denn ich finde keine.. Danke
Bono ist offline  
Alt 16.02.2011, 19:32  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Und jetzt schau bitte in ein Grundlagen-Tutorial, damit du erst mal diese elementaren Zusammenhänge verstehst.
*close*
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline  
Thema geschlossen


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] OOP - Klassen richtig Designen, aber wie? Yamo PHP Einsteiger 8 01.01.2011 12:03
Bild_upload mit mysql funktioniert nicht richtig? Zapper PHP Tipps 2010 22 08.10.2010 23:51
Richtig Newsletter versenden. J_Jara PHP Tipps 2010 4 21.09.2010 19:52
[Erledigt] FTP und MySQL funktioniert nicht mehr richtig JackSparrow PHP Tipps 2010 2 06.06.2010 20:54
CSS-Datei nicht richtig eingebunden. Paul.Schramenko HTML, Usability und Barrierefreiheit 2 24.04.2010 08:56
Datenbank richtig aufgebaut? bageleudi Datenbanken 2 31.03.2010 21:01
Login von "außerhalb" per xmlhttpRequest kn0wledge PHP Tipps 2009 0 11.12.2009 23:02
Umlaute mit Request richtig übertragen Lebenssonde JavaScript, Ajax und mehr 4 28.07.2009 15:10
Inhalt aus XMLHttpRequest für getElementsByClassName nutzen regsnerven JavaScript, Ajax und mehr 12 19.07.2009 17:01
parameter von interfaces in klassen richtig mit anwenden? litterauspirna PHP Tipps 2009 27 30.06.2009 20:58
[Erledigt] Javascript-Code in einem document.write richtig durchführen + richtiges Po BartTheDevil89 JavaScript, Ajax und mehr 15 29.11.2008 14:08
PNG's werden im IE6 nicht richtig angezeigt! litterauspirna Off-Topic Diskussionen 6 15.09.2008 15:13
PHP richtig lernen! TeazY PHP Tipps 2008 5 01.02.2008 21:50
[Erledigt] Modularisierung: Wie macht man es richtig? PHP-Fortgeschrittene 1 12.03.2006 16:00
Variable wird nicht richtig übergeben PHP Tipps 2005 17 16.01.2005 16:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ajax xmlhttprequest, xmlhttprequest wird nicht angezeigt, javascript xmlhttprequest cache, xmlhttprequest nicht cachen, xmlhttprequest nicht funktioniert, ajax xmlhttprequest php mehrere echo, httprequest.php include, xmlhttprequest nicht aktuell, javascript http request html wird nicht mehr ausgeführt, if xmlhttprequest php, javascript httpxmlrequest sourcetest none, httprequest alle 3 sekunden javascript, php xmlhttprequest, xmlhttprequest quelltext auslesen, php xml http request, xmlhttprequest 2011, ajax php

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:20 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum