Geschrieben von gero am 15.01.2006, 19:04

http://www.lima-city.de/tutorials.php?m=show&id=1894
Dieses Tutorial dient dem Zweck zu zeigen wie schlicht und einfach man mit PHP-Grundkenntnissen relativ komplexe sachen erstellen kann.. Hier wird demonstriert wie ihr einen einfachen Chat, der auf PHP und MYSQL basiert, erstellen könnt. Wie ihr später vielleicht feststellen werdet, ist es ein GANZ einfacher Chat, der sihc mit genügend PHP und MYSQL Kenntnissen noch sehr viel weiter entwickeln lässt. Als Idee würde ich zum Beispiel eine Onlineliste vorschlagen, diese habe ich hier ausenvor gelassen, da dies schon zu den komplexeren bereichen der php/mysql Programmierung gehört und für den Anfänger vielleicht zu viel wäre. Viel Spaß

Bevor wir zum Code kommen müsst ihr eine Tabelle in einer Datenbank anlegen.
Die Tabelle muss den Namen "chat" tragen und 4 Felder haben:

1) Name: ID Typ: INT Länge: 11 zusätzlich: primärkey, auto_increment;
2) Name: von Typ: varchar Länge: 20;
3) Name: zeit Typ: varchar Länge: 20;
4) Name: text Typ: text;

So.. nun kommen wir zum Quellcode, dieser muss in die datei chat.php geschrieben werden:

<?php /*PHP Anweisungen werden folgen..*/

@mysql_connect("Host", "Username", "Passwort") or die("<b>MY_SQL Server Problem</b><br>Verbindung zur MY_SQL-Datenbank konnte nicht hergestellt werden, bitte entschuldigen Sie den Ausfall.");
mysql_select_db("chat");
/*Verbindung zur MYSQL-Datenbank wird aufgenommen.. Gebe bei server den MYSQL-Server an, bei name den Username und bei passwort dein Passwort. Falls die Verbindung fehlschlägt folgt eine Fehlermeldung.*/

if(!isset($_COOKIE['online']))
{
$zeit=time()+3600;
$time=time();
setcookie("online",$time,$zeit);
}
/*Falls KEIN (!) Cookie mit dem Namen "online" vorhanden sein sollte, wird dieses jetzt gesetzt. es enthält einen Unixzeitstempel von dem Moment an dem es gesetzt wurde. Es wird nach 1 Stunde wieder gelöscht (+3600).*/

if(isset($_POST['schreiben']) && $_POST['text']!="" && $_POST['text']!=" ")
{
$von=MYSQL_ESCAPE_STRING(htmlentities($_POST['name']));
$text=MYSQL_ESCAPE_STRING(htmlentities($_POST['text']));
$zeit=time();

MYSQL_QUERY('INSERT INTO chat (von,zeit,text) VALUES("'.$von.'","'.$zeit.'","'.$text.'")');
echo'<meta http-equiv="refresh" content="0,chat.php#down">';
}
/*Falls der Button mit dem Namen "schreiben" gedrückt wurde und die Variable $_POST['text'], die im Formular mit übergeben wurde ungleich (!=) "" und ungleich " " sein sollte, folgen diese Anweisungen: Variable $von wird gesetzt, ihr wird der wert der Übergebenen Variable $_POST['name'] zugewiesen. Zur Sicherheit werden HTML Befehle und Sonderzeichen gelöscht bzw. umgewandelt. Das Gleiche geschieht auch mit der Variable $text, ihr wird der Wert von $_POST['text'] zugewiesen. Der Variable $zeit wird der aktuelle Zeitstempel zugewiesen. Im folgenden MYSQL-Befehl werden diese Werte in die Tabelle "chat" gespeichert. Anschließend wird der Chat neu geladen*/

if(isset($_GET['clear']))
{
$zeit=time()+3600;
$time=time();
setcookie("online",$time,$zeit);
echo'<meta http-equiv="refresh" content="2,chat.php#down">';
}
/*Falls die Variable "clear" über die URL übergeben wird, wird das Cookie "online" neu gesetzt, mit einem neuen Zeitstempel. Anschließend wird der Chat neu geladen.*/

?>
<!--Die PHP befehle hören hier auf-->

<html>
<head>
<title>Chat</title>
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
<!--Der Header-Teil einer jeden HTML seite - Sollte selbst erklährend sein;)-->

<?php
$result1=MYSQL_QUERY('SELECT * FROM chat WHERE zeit >"'.$_COOKIE['online'].'" ORDER BY ID ASC');

while($data1=MYSQL_FETCH_ARRAY($result1))
{
$nachricht=$nachricht.$data1['von'].': '.$data1['text']."<br>";
}

echo'<div name="fenster" style="margin:1px; padding:3px; border:1px inset; width:800px; height:134px; overflow:auto">'.$nachricht.'<br><a name="down"></div>';
?>
<!--Eine neue PHP Anweisung beginnt. in $result1 werden die Datensätze aus der Tabelle Chat gespeichert, deren Zeitstempel neuer ist als der des Cookies "online". Anschießend wird solange eine While-Schleife durchlaufen bis kein Datensatz aus $result1 mehr in $data1 gespeichert werden kann. Die Datensätze werden so zusammen gefasst, das zuerst der Name, dann ein doppelpunkt und dann ein Leerzeichen nachdem dann der Text folgt. Der Text wird in der Variablen $nachricht gespeichert und dann im DIV-Tag ausgegeben. Hier endet dann die PHP-Anweisung.-->

<form action="chat.php" method="post">
<?php
if(isset($_POST['name']))
{ $name=$_POST['name']; }
else
{ $name='guest'; }
?>
<input type="Text" name="name" value="<?php echo $name; ?>" size="10" maxlength="20"><input type="Text" name="text" size="105" maxlength="1000"> <input type="Submit" name="schreiben" value="Senden">
</form>
<!--Hier kommen das nachrichten formular ins spiel. fals bereits ein name im namen feld eingegeben wurde wird dieser gespeichert und bei einem reload wieder angezeigt. darauf werden das namens feld, das text feld und der sendne button definiert.-->

<b>nach einer Stunde wird der Cache geleert</b> - <a href="chat.php?clear=true">Jetzt</a> leeren
<meta http-equiv="refresh" content="2,chat.php#down">
</body>
</html>
<!--Zum Schluss kommt nur noch ein Hinweis das der Chat-Catch nach 1 stunde gelehrt wird, ein link zum sovortigen Löschen, der das oben genannten Cookie-Reload zur folge hat. Dann kommt nur noch eine META-Anweisung, in der festgelegt ist das der Chat alle 5 Sekunden neugeladen wird um neue Nachrichten anzuzeigen und schließlich der HTML-footer;)-->

abspann^^
ich hoffe ich habe mich verständlich ausgedrückt, bisher habe ich leider noch nichts zum thema automatisches runterscrollen gefunden ;) aber ansonsten läuft es bei mir ohne probs

bei fragen gerne via pn an mich wenden;)

much fun

greez
gero

Bewertung Anzahl
6
76,5 %
13 Bewertungen
5
17,6 %
3 Bewertungen
1
5,9 %
1 Bewertungen