Ergebnis 1 bis 3 von 3
  1. #1
    alpdreamer ist offline Grünschnabel
    registriert
    13-05-2008
    Beiträge
    9

    Probleme mit Variablen

    Hallo da draußen...
    Ich bin dabei einen Chat mit einer Mischung aus Ajax und PHP zu schreiben.
    Der Chat basiert, nicht wie oft üblich, auf einer Datenbank-Technologie (Postings werden in einer DB gespeichert) sonder arbeitet mit Dateien (jedes Post ist eine Datei).

    Ich werde einmal kurz den Workflow des gesamten Scriptes beschreiben...

    Teil 1:
    1. Ein Ajax-Request fragt in einer PHP-Datei den Wert (ID) des aktuellsten Postings auf dem Server ab. Es wird eine Zahl (die ID des letzten Postings) zurückgegeben.
    2. Der Handler der oben genannten Funktion überprüft ob die ID des lokalen Postings (das letzte vom User geladene Posting) von der auf dem Server abweicht. Ist dies der Fall wird eine weitere Funktion aufgerufen, da ein neues Posting geladen werden muss, wenn der Wert gleich ist wird garnichts gemacht.
    3. Diese Funktion wird periodisch wiederholt.


    Teil 2 (wenn ein neues Posting geladen werden soll):
    1. Zuerst wird geprüft ob ein oder mehrere Postings geladen werden müssen.
    2. Muss nur eins geladen werden wird die Datei direkt ausgelesen.
    3. Müssen mehrer Postings geladen werden wird ein Request an eine PHP-Datei geschickt, die die entsprechenden Postings dann ausliest


    Kritisch wird es eigentlich erst im 2. Teil bei Punkt 3.
    Die PHP-Funktion muss ja irgendwie wissen welche Dateien sie auslesen muss. Dazu brauch die Funktion die ID des letzte lokale Postings. Diese sollte eigentlich per GET Übertragen werden...Hier habe ich aber ein Problem.

    Zuerst mal der QT:
    Code:
    <script type="text/javascript">
    // -----------------------Gucken ob neues Posting vorliegt----------------------- //
    
    	// window.setInterval("setRequest()", 3000);
    	var request = false;
    
    	// Request senden
    	function last_post() {
    		// Request erzeugen
    		if (window.XMLHttpRequest) {
    			request = new XMLHttpRequest(); // Mozilla, Safari, Opera
    		} else if (window.ActiveXObject) {
    			try {
    				request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
    			} catch (e) {
    				try {
    					request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
    				} catch (e) {}
    			}
    		}
    
    		// überprüfen, ob Request erzeugt wurde
    		if (!request) {
    			alert("Es konnte kein Ajax-Request durchgeführt werden.");
    			return false;
    		} else {
    			var url = "lastpost.php";
    			// Request öffnen
    			request.open('post', url, true);
    			// Request senden
    			request.send(null);
    			// Request auswerten
    			request.onreadystatechange = lastpost_auswerten;
    		}
    	}
    
    	// Request auswerten
    	function lastpost_auswerten() {
    		switch (request.readyState) {
    			// wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
    			case 4:
    				if (request.status != 200) {
    					alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
    				} else {
    					// Vorbereitungen
    					var last_post_div = document.getElementById("last_post");
    
    					// ID des letzten Postings wird ausgelesen
    					var last_post_user = last_post_div.innerHTML;
    
    					// Lastpost auf dem Server
    					var last_post_server = request.responseText;
    
    					last_post_user = Number(last_post_user)
    
    					// if(last_post_user = "0") { last_post_user = last_post_server; alert(last_post_user); }
    
    					// Sollte die lokale ID aus irgendeinem Grund größer sein als die ID auf dem Server wird die lokale ID mit der des Servers überschrieben
    					if (last_post_user > last_post_server) { 
    						last_post_user = last_post_server; 
    					}
    
    					// Wenn die ID des letzten (lokalen) Postings kleiner ist als die ID auf dem Server überschreiben wir die lokale ID und fügen das Posting am Ende des Chats an
    					if (last_post_user < last_post_server) { 
    						// Funktion um die Postings zu holen
    						neue_postings();
    						// last_post_user in den Div last_post_tmp schreiben
    						document.getElementById("last_post_tmp").innerHTML = last_post_user;
    						// last_post_user aktualisieren
    						last_post_user = last_post_server;
    					}
    				}
    				break;
    			default:
    				break;
    		}
    	}
    
    // -----------------------Postings holen und einfügen----------------------- //
    
    	var request = false;
    
    	// Request senden
    	function neue_postings() {
    		// Request erzeugen
    		if (window.XMLHttpRequest) {
    			request = new XMLHttpRequest(); // Mozilla, Safari, Opera
    		} else if (window.ActiveXObject) {
    			try {
    				request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
    			} catch (e) {
    				try {
    					request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
    				} catch (e) {}
    			}
    		}
    
    		// überprüfen, ob Request erzeugt wurde
    		if (!request) {
    			alert("Es konnte kein Ajax-Request durchgeführt werden.");
    			return false;
    		} else {
    			var url = "read_php.php?lastpost=" + document.getElementById("last_post_tmp").innerHTML;
    			// Request öffnen
    			request.open('post', url, true);
    			// Request senden
    			request.send(null);
    			// Request auswerten
    			request.onreadystatechange = neue_postings_auswerten;
    		}
    	}
    
    	// Request auswerten
    	function neue_postings_auswerten() {
    		switch (request.readyState) {
    			// wenn der readyState 4 und der request.status 200 ist, dann ist alles korrekt gelaufen
    			case 4:
    				if (request.status != 200) {
    					alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+request.status);
    				} else {
    					<!-- Variablen vorbereiten -->
    					// Divs vorbereiten
    					var content_div = document.getElementById("content");
    					var last_post_div = document.getElementById("last_post");
    					// Div für den Content vorbereiten
    					var content = content_div.innerHTML;
    					// Div für das letzte Userposting vorbereiten
    					var last_post = last_post_div.innerHTML;
    					// Alte Postings aus Div holen
    					var alter_content = content.innerHTML;
    					// Rückgabe holen
    					var neuer_content = request.responseText;
    
    					<!-- Neue Postings oben auf der Seite einfügen -->
    					content_div.innerHTML = neuer_content + alter_content;
    				}
    				break;
    			default:
    				break;
    		}
    	}
    
    </script>
    <div id="last_post" style="display: none;"></div>
    <div id="last_post_tmp" style="display: none;"></div>
    <div id="content"></div>
    <input type=button onclick="last_post()" value="last_post">
    Wie kann ich den Wert der Variable "last_post_user" (in der Funktion "lastpost_auswerten()") bevor er überschrieben wird an die Funktion "neue_postings()" übergeben???

    Ein relativ ausführlicher Thread für eine eigentlich einfach Frage (denke ich zumindest)...es scheint nur, dass ich im Moment ein Brett vorm Kopf habe

    Ich freue mich schon auf Antworten und bedanke mich schonmal im Voraus für eure Hilfsbereitschaft.

    Gruß Tim

  2. #2
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: Probleme mit Variablen

    also entweder hab ich das total falsch verstanden, oder du hast gerade wirklich ein Brett vorm Kopf.
    Code:
    var tmp = last_post_user;
    ...
    last_post_user = ...
    ...
    neue_postings(tmp)
    würde wohl nicht gehen?

  3. #3
    evolutional ist offline Mitglied
    registriert
    13-09-2008
    Beiträge
    29

    AW: Probleme mit Variablen

    OK, korregier mich wenn ich falsch liege aber fragst du quasi wie du einen Wert an eine Funktion übergeben kannst ? und ich versteh leider nicht wo genau die Variable wann, vor welcher Aktion, überschrieben wird!?

    aber generell übergibst du per Parameterübergabe..
    aber ich denke du weißt das eh.. :/

    ansonsten Beispiel heir:

    Code:
    function wasauchimmer(){
      var lastPostUser = document.getElementById("last_post");
      neue_postings(lastPostUser);
    }
    
    function neue_postings(lastPostUser){
        //benutze lastPostUser hier einfach mit dem Parameternamen
    }
    PS: werde noch versuchen zu verstehen..
    Geändert von evolutional (17-10-2008 um 21:24 Uhr)

Ähnliche Themen

  1. Probleme mit Funktionen und Variablen
    Von nettotal im Forum JavaScript
    Antworten: 11
    Letzter Beitrag: 19-08-2007, 21:27
  2. Probleme mit Variablen
    Von d.moritz im Forum JavaScript
    Antworten: 5
    Letzter Beitrag: 02-12-2005, 10:05
  3. Übergabe der Variablen verursacht Probleme
    Von *perplex* im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 14-11-2005, 14:22
  4. variablen - probleme - kein Plan hab
    Von efelcie im Forum Flash
    Antworten: 18
    Letzter Beitrag: 25-06-2002, 12:15
  5. Probleme beim Laden von Variablen...
    Von [UFO]Aragorn im Forum Flash
    Antworten: 4
    Letzter Beitrag: 10-09-2000, 15:56

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •