[PHP] Problem bei Chat-Programmierung

10/29/2011 12:12 Dєѕтіпатіоп#1
Hey e*pvp

Ich bin gerade dabei einen Chat zu programmieren, hab aber das Problem , dass ich nicht weiß wie man die Seite am Besten refreshed.

Ich möchte es sohaben (soweit das möglich ist) dass die Seite sich neu lädt sobald ein neuer Datensatz in der Datenbank gespeichert wurde.

Ist dass möglich ? Ohne Sprachen wie JavaScript usw.. ?


MfG
10/29/2011 12:54 NotEnoughForYou#2
Nein. Am besten kannst du das über Ajax realisieren was du vorhast
10/30/2011 12:55 Fratyr#3
Ohne JavaScript, nein. Wiegesagt, Ajax oder noch besser WebSockets
10/30/2011 13:00 Tomelyr#4
Code:
<html>
<head>
<script type="text/JavaScript">
<!--
function timedRefresh(timeoutPeriod) {
	setTimeout("location.reload(true);",timeoutPeriod);
}
//   -->
</script>
</head>
<body onload="JavaScript:timedRefresh(5000);">
<!-- Seiteninhalt -->
</body>
</html>
5000 = 5 Sekunden.
1000 = 10 Sekunden.
HF ;)

Edit:
Sry verlesen. Das ist ein fester Refresh (alle 5 sekunden), für das mit den neuen Datensatz musst du Ajax nehmen.
10/30/2011 13:25 NotEnoughForYou#5
Quote:
Originally Posted by Tomelyr View Post
Code:
<html>
<head>
<script type="text/JavaScript">
<!--
function timedRefresh(timeoutPeriod) {
	setTimeout("location.reload(true);",timeoutPeriod);
}
//   -->
</script>
</head>
<body onload="JavaScript:timedRefresh(5000);">
<!-- Seiteninhalt -->
</body>
</html>
5000 = 5 Sekunden.
1000 = 10 Sekunden.
HF ;)

Edit:
Sry verlesen. Das ist ein fester Refresh (alle 5 sekunden), für das mit den neuen Datensatz musst du Ajax nehmen.

Finde einen Refresh mit Meta eigentlich schöner ;)
10/30/2011 17:14 Che#6
In PHP gehts so doch ganz geschmeidig:
PHP Code:
header("Location: ./"); 
10/30/2011 17:19 NotEnoughForYou#7
Quote:
Originally Posted by 〤Che〤 View Post
In PHP gehts so doch ganz geschmeidig:
PHP Code:
header("Location: ./"); 
ja, aber er wollte ja, dass es nur dann erneuert wird, wenn es einen neuen eintrag gibt
10/30/2011 17:21 JacK le chilla#8
nimm ajax dann kannst du auch wenn du eine größere seite hast einfach den teil refresehen lassen und dann muss nicht immer die ganze seite neu geladen werden ;)
10/30/2011 18:06 Snake124#9
einfacher ajaxchat mit den frameworks von google und scriptaculous

Download der Frameworks:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

index.html
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>AJAX Chat</title>
<link rel="stylesheet" href="style.css" type="text/css" />
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript" src="scriptaculous.js"></script>
<script type="text/javascript">
var name = null;

function loadList(){
	new Ajax.Updater("Liste", "load_chat.php");
	//new Element.scrollTo("Last", {duration: 5.0});
}

function sendList(){
	name = $F("User");
	var params = "User="+$F("User")+"&Msg="+escape($F("Msg"));
	new Ajax.Request("update_chat.php", {method: "get",parameters: params, onComplete: afterSending});
	return false;
}

function afterSending(){
	$("Msg").value = "";
	loadList();
}

function init(){
	loadList();
	new PeriodicalExecuter(loadList, 3);
}

Event.observe(window, "load", init);
</script>
</head>

<body>
<h1>AJAX Chat</h1>
<div id="Ausgabe">
<ul id="Liste"></ul>
<span id="Last">&nbsp;</span>
</div>
<form onsubmit="return sendList();" method="get">
<fieldset>
<legend>Eingabe:</legend>
<label for="User">Name:</label>
<input type="text" name="User" id="User" />
<input type="text" name="Msg" id="Msg" size="80" />
<input type="submit" id="Submit" value="abschicken" />
</fieldset>
<div id="Debug"></div>
</form>
</body>
</html>
update_chat.php
PHP Code:
<?php
$connect 
mysql_connect("localhost""USER""PW");
mysql_select_db("DB"$connect);
if(empty(
$_GET["User"]) || empty($_GET["Msg"])) die();
$sql sprintf("INSERT INTO chat(created, name, message)VALUES(NOW(), '%s', '%s')"$_GET["User"], $_GET["Msg"]);
$result mysql_query($sql$connect) or die(mysql_error());
?>
load_chat.php
PHP Code:
<?php
$connect 
mysql_connect("localhost""USER""PW");
mysql_select_db("DB"$connect);

$sql "SELECT * FROM chat ORDER BY created DESC LIMIT 7";
$result mysql_query($sql$connect);

if(
mysql_num_rows($result)>0){
    while(
$rs mysql_fetch_assoc($result)){
        
$list[] = sprintf("<li>%s: %s</li>"$rs["name"], $rs["message"]);
    }
    
$list array_reverse($list);
    echo 
implode(""$list);
}
?>
style.css
Code:
/* CSS Document */

#Liste {
	padding: 0em;
	margin: 0em;
	height: 14em;
	overflow: auto;
	border: thin solid #888;
}
#Liste li{
	display: block;
	line-height: 1.5em;
	margin-bottom: .5em;
}

ACHTUNG, DAS SCRIPT IST NUR FÜR ANSCHAUUNGSZWECKE GEDACHT!!!!!
es ist hier keinerlei sicherheit gewährleistet und sollte niemals in einem livesystem so verwendet werden!!!!
11/02/2011 00:19 Dєѕтіпатіоп#10
ich hab schon eine Lösung meines Problems gefunden, danke an alle Antworten !
Kann geschlossen werden ;)