Frage Chat Tutorial

MasterDP23

Mitglied
]Hi liebe tutorials Gemeinde,

ich habe das Chat tutorial hier auf tutorials.de mitgemacht und dann hab ich versucht den Mini Chat einzubinden.

Ich bin so vorgegeangen das ich den Code aus chat.php dann in die entsprechende Seite einkopiert habe, aber wenn ich diese Seite aufrufe passiert einfach garnichts, als hätte ich nichts dahin geschrieben.

Was hab ich da nur falsch gemacht.:confused:

Wenn Ihr ne Idee für mich dazu hättet, wärd das echt klasse.

Vielen Dank im vorraus.

Mfg

Dom
 
Code, z.B. wo du es eingebunden hast, oder den Code vom Script oder oder oder nur sollte man hier Quellcode zu lesen bekommen und helfen zu können.

Vorab, statt den ganzen Code aus der Datei chat.php rauszukopieren und in eine Andere einzufügen gibt es auch die Funktion include().
 
Vielen Dank für Eure Hilfe.

Sorry, selbstredent bekommt Ihr den Code.


Das hier ist Nr.1, das Chat.php
PHP:
$timeout = 50; // Sekunden
$timeout_msg = 2; // Stunden

if (isset($_POST["action"])) {
	include("connect.php");
	db_connect();
	db_select();

	checkTimeout();
	
	switch($_POST["action"]) {
		case "login": doLogin($_POST["nickname"], $_POST["uid"]); break;
		case "logout": doLogout($_POST["uid"], true); break;
		case "posting": doPosting($_POST["message"], $_POST["uid"]); break;
		case "update": doUpdate($_POST["uid"], false); break;
	}
}

function checkTimeout() {
	global $timeout, $timeout_msg;
	$now = date("Y-m-d H:i:s");
	$query = 'DELETE FROM chat_user WHERE last_action < DATE_SUB("'.$now.'", INTERVAL '.$timeout.' SECOND)';
	$result = mysql_query($query) or doError(mysql_error());
	$ar = mysql_affected_rows();
	$query = 'DELETE FROM chat_history WHERE msg_time < DATE_SUB("'.$now.'", INTERVAL '.$timeout_msg.' HOUR)';
	$result = mysql_query($query) or doError(mysql_error());
	if ($ar > 0 || mysql_affected_rows() > 0) {
		initTables();
	}
}

function initTables() {
	$query = 'SELECT * from chat_history WHERE 1';
	$result = mysql_query($query) or doError(mysql_error());
	$lines = mysql_num_rows($result);
	if ($lines == 0) {
		$query = 'ALTER TABLE chat_history AUTO_INCREMENT=0';
		$result = mysql_query($query) or doError(mysql_error());
	}
	$query = 'SELECT * from chat_user WHERE 1';
	$result = mysql_query($query) or doError(mysql_error());
	$lines = mysql_num_rows($result);
	if ($lines == 0) {
		$query = 'ALTER TABLE chat_user AUTO_INCREMENT=0';
		$result = mysql_query($query) or doError(mysql_error());
	}
}

function doLogin($nickname, $uid) {
	if (isset($uid)) {
		doLogout($uid, false);
	}
	if (!nickExists($nickname)) {
		$uid = uniqid(rand()); 
		$query = 'SELECT id FROM chat_history WHERE 1 ORDER BY id DESC LIMIT 1';
		$result = mysql_query($query) or doError(mysql_error());
		if ($line = mysql_fetch_assoc($result)) {
			$lid = $line["id"];
		} else {
			$lid = 0;
		}
		$now = date("Y-m-d H:i:s");
		$query = 'INSERT into chat_user (nickname, user_id, last_id, last_action)  VALUES("'.$nickname.'", "'.$uid.'", "'.$lid.'", "'.$now.'")';
		$result = mysql_query($query) or doError(mysql_error());
		doUpdate($uid, false);
	} else {
		doError("Nick exists");
	}
}

function nickExists($nick) {
	$query = 'SELECT id from chat_user WHERE nickname="'.$nick.'"';
	$result = mysql_query($query) or doError(mysql_error());
	if (mysql_affected_rows() > 0) {
		return true;
	} else {
		return false;
	}
}

function doLogout($uid, $update) {
	$query = 'DELETE FROM chat_user WHERE user_id = "'.$uid.'"';
	$result = mysql_query($query) or doError(mysql_error());
	if ($update) doUpdate($uid, true);
}

function doPosting($msg, $uid) {
	if ($uid && $uid != "") {
		$now = date("Y-m-d H:i:s");
		$query = 'INSERT INTO chat_history (msg_time, user_id, message) VALUES("'.$now.'", "'.$uid.'", "'.$msg.'")';
		$result = mysql_query($query) or doError(mysql_error());
		doUpdate($uid, false);
	} else {
		doError("posting without ID");
	}
}

function doUpdate($uid, $logout) {
	if ($uid) {
		// Userliste ausgeben:
		$query = 'SELECT * FROM chat_user WHERE 1';
		$result = mysql_query($query) or die(mysql_error());
		$last_id = 0;
		if ($logout) {
			$myid = "";
		} else {
			$myid = $uid;
		}
		$ustr = '<users myid="'.$myid.'">';
		while ($line = mysql_fetch_assoc($result)) {
			if ($line["user_id"] == $uid) {
				$last_id = $line["last_id"];
			}
			$ustr .= '<user id="'.$line["user_id"].'" nick="'.$line["nickname"].'" />';
		}
		$ustr .= '</users>';
		// Letzte Postings ausgeben:
		if (!$logout) {
			$query = 'SELECT * FROM chat_history WHERE id > "'.$last_id.'" ORDER BY msg_time ASC';
			$result = mysql_query($query) or doError(mysql_error());
			$hstr = '<messages>';
			while ($line = mysql_fetch_assoc($result)) {
				$hstr .= '<msg uid="'.$line["user_id"].'" time="'.$line["msg_time"].'" ><![CDATA['.$line["message"].']]></msg>';
				$last_id = $line["id"];
			}
			$hstr .= '</messages>';
			// Letzte ID speichern:
			$now = date("Y-m-d H:i:s");
			$query = 'UPDATE chat_user SET last_id="'.$last_id.'", last_action="'.$now.'" WHERE user_id = "'.$uid.'"';
			$result = mysql_query($query) or doError(mysql_error());
		} else {
			$hstr = "<messages />";
		}
		doOutput($ustr, $hstr);
	} else {
		doError("not logged in");
	}
}

function doOutput($user, $msg) {
	echo ($user.$msg);
}

function doError($msg) {
	echo '<error msg="'.$msg.'" />';
	exit();
}


Der Chat log:
PHP:
include("connect.php");
db_connect();
db_select();

$query = 'SELECT * FROM chat_history ORDER BY msg_time ASC';
$result = mysql_query($query) or die(mysql_error());
$ostr = '<history>';
while ($line = mysql_fetch_assoc($result)) {
	$ostr .= '<msg id="'.$line["id"].'" time="'.$line["msg_time"].'" user_id="'.$line["user_id"].'"><![CDATA['.$line["message"].']]></msg>';
}
$ostr .= '</history>';

echo $ostr;

Ich weiß, dass das viel ist , aber es wäre wirklich nett von Euch wenn Ihr mir helfen könntet.

Nochmals vielen Dank für Eure Hilfe.

Mfg

Dom
 
Ist das jetzt der Code direkt ausm Tutorial?
Du hast doch gesagt, du hast den Code in eine andere Datei eingebunden, oder? Diese hätte ich gern, zumindest das Stück.
Hast du auch die Funktion include angepasst als du den Code kopiert hast?
 
Hi,

in der include habe ich meine Myqsl Verbindungen angepsst.

Die Seite in die ich das eingebunden habe ist leicht erklärt.
Ich hab ein normales html Gerüst aufgebaut und dann einen <div layer gezogen.
In den div hab ich dann den Code den ich oben gepostet habe reinkopiert.


Ich hoffe, dass ist das was du meintest.

Ich versteh einfach nicht warum das nicht klappt.

Vielen Dank für Eure Hilfe.

Mfg

Dom
 
Zuletzt bearbeitet:
Zurück