• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Chat

EvilBen

New member
Hey Leute,

Ich habe nen klitze kleines Problem - wer hätte das gedacht :)

Ich habe nen Chat, dessen Chatverlauf in einem DIV angezeigt werden soll. In einer Schleife werden alle Chats mit PHP geladen. Dabei wird die Div Chatverlauf erzeugt, die den Chat anzeigen soll.
1.Frage: Wenn ich 10 Freunde habe, habe ich also 10 Chats und somit 10 mal die Div Chatverlauf. Wäre es sinnvoller mit PHP eine ID an die div-id mit anzuhängen ?

Code:
                <div id="chatverlauf"> 

</div>

Per PHP möchte ich dann, je nachdem welchen Chat man gewählt hat, die Nachrichten laden. Selbstverständlich soll die DIV regelmäßig aktualisiert werden. Das habe ich durch folgende Funktion gemacht:

Code:
var i = 1;
var a = 1;
var datei2load = "chatverlauf.php";  // --- zu ladende PHP Datei
var sek2load = 2;                   // --- alle x Sekunden 

var milisec = (sek2load*1000); 

     $(document).ready(function() {
       $("#chatverlauf").load(datei2load);
       var refreshId = setInterval(function() { 
	   if (i > 10) { i = 1 } 
          $("#chatverlauf").load(datei2load);
		  i++; 
		  a++;
       }, milisec);
    });

Die Funktion habe ich aus dem Internet. Jetzt is natürlich das Problem dass ich keine gültige PM-ID an "Chatverlauf.php" geben kann, damit die Datenbank Abfrage eindeutig ist.
Wie mache ich das nun, an datei2load die ID der Konservation anzuhängen ?!
Muss ich die oben genannte Funktion ebenfalls durch eine Schleife erzeugen lassen um sie x-mal (wobei x = Anzahl Chats) habe und somit die ID eindeutig an die Datei anhängen zu können ? Oder gibt es einen eleganteren Weg ?

Danke euch im Voraus
 
Wäre es sinnvoller mit PHP eine ID an die div-id mit anzuhängen ?
Vielleicht mit der ID des Chatpartners? Dann wäre jeder Chat mit einem Chatpartner in Beziehung gebracht.?

Wie mache ich das nun, an datei2load die ID der Konservation anzuhängen ?!
Vielleicht auch wieder die ID des Chatpartners mit übergeben: "chatverlauf.php?user=12345"
12345 soll hier einfach für die User-ID stehen.
In PHP kannst du dann bei den Nachrichten auf diesen User filtern.
 
Zuletzt bearbeitet:
Ok das ist mir klar, nur muss ich die Funktion (siehe oben) jetzt in einer Schleife ausgeben, so dass ich für jeden user eine Funktion habe ? das bedeutet, dass wenn ich 100 Freunde habe, 100 von diesen Funktionen im Code stehen habe .. denn wie bekomme ich die ID an die PHP Datei angehangen, da meine Funktion oben, beim Seitenaufruf schon gestartet wird
 
nur muss ich die Funktion (siehe oben) jetzt in einer Schleife ausgeben
jQuery.each() | jQuery API Documentation

das bedeutet, dass wenn ich 100 Freunde habe, 100 von diesen Funktionen im Code stehen habe
der sinn von funktionen ist ja gerade nicht alles 100 mal hinzuschreiben, sondern nur 1 mal und dynamische teile in abhämgigkeit von parametern umzusetzen

.. denn wie bekomme ich die ID an die PHP Datei angehangen
du hinterlegst sie am div, z.b. als data-attribut und liest sie in der funktion aus
https://developer.mozilla.org/de/docs/Web/HTML/Globale_Attribute#data-*
 
Also ich habe es jetzt so gelöst:

Code:
                <div class="chatverlauf" id="chatverlauf" data-chatid="2"> 

</div>

Die '2' habe ich Testweise eingesetzt. Wenn ich in der Funktion
Code:
var i = 1;
var a = 1;
var datei2load = "chatverlauf.php";  // --- zu ladende PHP Datei
var sek2load = 2;                   // --- alle x Sekunden 

var milisec = (sek2load*1000); 

     $(document).ready(function() {
       $("#chatverlauf").load(datei2load);
       var refreshId = setInterval(function() { 
	   if (i > 10) { i = 1 } 
          $("#chatverlauf").load(datei2load + '?id='+document.getElementsByClassName('chatverlauf').getAttribute('chatid')
 );
		  i++; 
		  a++;
       }, milisec);
    });
das mache, passiert leider nix!
 
Zuletzt bearbeitet:
Code:
                <div class="chatverlauf" id="chatverlauf" data-chatid="2"> 

</div>
wenn du mehrere divs hast, ist die id nicht eindeutig, was sie aber sein muss
Code:
var i = 1;
var a = 1;
var datei2load = "chatverlauf.php";  // --- zu ladende PHP Datei
var sek2load = 2;                   // --- alle x Sekunden 

var milisec = (sek2load*1000); 

     $(document).ready(function() {
       $("#chatverlauf").load(datei2load);
       var refreshId = setInterval(function() { 
	   if (i > 10) { i = 1 } 
          $("#chatverlauf").load(datei2load + '?id='+document.getElementsByClassName('chatverlauf').getAttribute('chatid')
 );
		  i++; 
		  a++;
       }, milisec);
    });
wozu soll das $("#chatverlauf").load(datei2load); gut sein?
wozu soll das if (i > 10) { i = 1 } und das i++; a++; gut sein?
hierzu: $("#chatverlauf").load(datei2load + '?id='+document.getElementsByClassName('chatverlauf').getAttribute('chatid')
$("#chatverlauf") liefert nur 1 element, du willst aber mehrere(alle divs mit der klasse chatverlauf zum bsp)
document.getElementsByClassName('chatverlauf') ist nativ code, warum nutzt du hier nicht auch jquery
document.getElementsByClassName('chatverlauf') liefert genau wie $(".chatverlauf") ein array zurück bzw. $(".chatverlauf") ist ein array
ein array hat keine methode getAttribute, nur die elemente das arrays haben diese methode
data attribute bekommst du mit jquery über https://api.jquery.com/data/
über das jquery objekt iterierst du mit
Code:
$(".chatverlauf").each(function(i, e)
{
  console.log($(e).data("chatid"));
});
https://api.jquery.com/each/

das mache, passiert leider nix!
es sollten fehler angezeigt werden
 
Vielen Dank für deine MÜHEN!

ich habe es bisher so:

Code:
  $(document).ready(function() {
$( "#chatverlauf" ).each(function( index ) {
	
	setInterval(function() {
   				 $('#chatverlauf').load('chatverlauf.php?id='+$( this ).data("chatid"));
			}, 100);
	
  //console.log( index + ": " + $( this ).data("chatid") );
});
				
			
						
			
	 });

Funktioniert einwandfrei, jedenfalls die Ausgabe in die Konsole. Je doch wird beim Anhängen der ID an die Php Datei ein "undefined" ausgegeben ? Warum ? Danke euch !
 
Funktioniert einwandfrei, jedenfalls die Ausgabe in die Konsole.
eher nicht,
$("#chatverlauf") liefert nur 1 element, du willst aber mehrere(alle divs mit der klasse chatverlauf zum bsp)

Je doch wird beim Anhängen der ID an die Php Datei ein "undefined" ausgegeben ? Warum ?
die funktion welche du an setInterval übergibst wird im globalen scope aufgerufen
$(this) ist damit $(window)

Code:
setInterval(function()
{
  $(".chatverlauf").each(function(i, e)
  {
    console.log($(e).data("chatid"));
  });
}, 100);
 
Zuletzt bearbeitet:
Zurück
Oben