Здравейте!
Имам един чат, който извежда съобщенията от MySQL обаче, ако има много хора, които пишат трябва да рефрешна страницата на чата, за да видя кой и какво е писъл. Въпросът ми е: Можете ли да ми го пригодите съобщенията да се зареждат автоматично чрез AJAX и да се показват без да се рефрешва страницата?
Благодаря предварително, а ето и кода на чата:
Имам един чат, който извежда съобщенията от MySQL обаче, ако има много хора, които пишат трябва да рефрешна страницата на чата, за да видя кой и какво е писъл. Въпросът ми е: Можете ли да ми го пригодите съобщенията да се зареждат автоматично чрез AJAX и да се показват без да се рефрешва страницата?
Благодаря предварително, а ето и кода на чата:
<?php
$server="localhost"; //mysql хост
$user="root"; //mysql име
$pass=""; //mysql парола
$db="bazata"; //име на базата данни
$broi_msg = "17"; //тук задаваме колко съобщения да показва
$con=mysql_connect("$server", "$user", "$pass") or die("Error 1"); //свързваме се с mysql
mysql_select_db($db,$con) or die("Error 2"); // свързваме се с базата данни
$chars="set character set cp1251";mysql_query($chars); //този код помага да показва данните които са на български език
$mysql_db=mysql_query("SELECT * FROM `chat` ORDER BY id DESC LIMIT 0,$broi_msg") or die("Error 3"); //тук се свързваме с таблицата на базата данни
echo "<div id='chatbox'>";
while($row=mysql_fetch_array($mysql_db)) //тук изкарваме записаните данни в базата данни
{
$username=$row['username']; //изкарваме потребителските имена
$msg=$row['msg']; //изкарваме съобщенията
$chas = $row['chas'];
$date = $row['data'];
$id = $row['id'];
$username2=htmlspecialchars("$username", ENT_QUOTES); //тук предотвратяваме да се изпълняват < и > в името
$msg2=htmlspecialchars("$msg", ENT_QUOTES); //тук също предотвратяваме да се изпълняват < и > обаче в съобщението
$query = "SELECT * FROM chat WHERE username='$username'";
$result = mysql_query($query) or die('Error, query failed');
while($row = mysql_fetch_array($result))
{
$rank2 = $row['rank'];
if($rank2 == "Администратор"){ $rank1 = "images/u-admin.gif"; }
if($rank2 == "ROOT"){ $rank1 = "images/u-root.gif"; }
if($rank2 == "Модератор"){ $rank1 = "images/u-mod.gif"; }
if($rank2 == "Тестер"){ $rank1 = "images/u-test.gif"; }
if($rank2 == "Потребител"){ $rank1 = "images/u-on.gif"; }
if($rank2 == "ЧатМодератор"){ $rank1 = "images/u-chatmod-on.gif"; }
if($rank2 == "Затворник"){ $rank1 = "images/u-jail.gif"; }
}
echo "<div id='submitmsg' class='msgln' style='font-size: 11px;'>[<text style='font-size: 10px;'>$date, $chas</text>] <b><img src='$rank1' style='border: 0; margin-top: 0px;'>$username2</b>: <text style='color: #ccc; font-weight: normal;'>$msg2</text>"; if($rank == "Администратор" || $rank == "Модератор" || $rank == "ЧатМодератор"){ echo " <a href='delete_chat-msg.php?id=$id'><img src='images/delete.gif' border='0'></a>"; } echo " </div>
"; //тук изкарваме записите от базата данни в php файл
}
echo "</div>";
?>
<form action="" name="submit" method="post" style="margin-top: -40px;">
<input type="hidden" name="username" value="<?php echo $username; ?>"><br />
<input type="hidden" name="rank" value="<?php echo $rank; ?>"><br />
<input type="text" name="msg" style="width: 400px;" />
<?php
$sql = "SELECT * FROM bans_chat";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$sega6noto = time();
$vreme = $row['time'];
$imeto = $row['ip'];
if($vreme < $sega6noto && $username == $imeto){ mysql_query("DELETE FROM bans_chat WHERE time < $sega6noto"); }
if($_SESSION['username'] == $imeto && $sega6noto < $vreme){
?>
<input type="button" name="button" value="Добави" />
<a href="chat-rules.php">Правила</a>
<?php
echo "<ba>Временно не можеш да чатиш</ba>";
}
else if($_SESSION['username'] != $imeto) {
?>
<input type="submit" name="submit" value="Добави" />
<a href="chat-rules.php">Правила</a>
<?php
}
?>
</form>
<?php
if (isset($_POST['submit'])) { //тук правиме кодовете по-долу да се изпълняват само когато се натисне бутона "Добави"
$con2=mysql_connect("$server", "$user", "$pass") or die("Error 1"); //свързваме се с mysql
mysql_select_db("$db",$con2) or die("Error 2"); //свързваме се с базата данни
$chars="SET CHARACTER SET cp1251";mysql_query($chars); //този код помага да добавя данните които са на български език
$username=$_SESSION['username']; //извличаме потребителското име
$msg=$_POST['msg']; //извличаме съобщението
$ex = explode(" ",$msg);
//$password = ""; // твоята парола.
$ex['3'] = $rank;
$getrank = $ex['3']; // взимаме написаната парола.
if ($getrank == "Администратор" || $getrank == "Модератор" || $getrank == "ЧатМодератор")
{
$potrebitel = $ex['1']; // взимаме написаното име.
$zavreme = $ex['2']; // взимаме написаното време.
$time = time()+$zavreme*60;
mysql_query("INSERT INTO bans_chat (ip, time) VALUES ('$potrebitel', '$time')");
}
else
{
echo "";
}
$ip=$_SERVER['REMOTE_ADDR']; //изкарваме IP-то на потребителя
$data=date("j m"); //изкарваме датата
$chas=date("H:i"); //изкарваме часа
if($msg == ""){ die(""); } //ако не е написано съобщение, не изпълнява кода по-надолу
$sql1 = "INSERT INTO `chat` (`username`, `msg`, `ip`, `data`, `chas`, `rank`) VALUES ('$username', '$msg', '$ip', '$data', '$chas', '$rank')" or die("Error 3");
mysql_query($sql1, $con2) or die("Error 4"); //записваме данните в базата данни
$sqlbup = "INSERT INTO `chatbup` (`username`, `msg`, `ip`, `data`, `chas`, `rank`) VALUES ('$username', '$msg', '$ip', '$data', '$chas', '$rank')";
mysql_query($sqlbup);
$sql2 = "SELECT * FROM `chat` WHERE msg='$msg'" or die("Error 5"); //тук се свързваме с таблицата на базата данни
$result = mysql_query($sql2) or die("Error 6"); //свързваме се с таблицата на базата данни
while($row=mysql_fetch_array($result))//изкарваме записаните данни
{
echo "<meta http-equiv='refresh' content='0; url='>"; //ако данните са запизани в базата данни, рефрешва страницата за да покаже новите данни
}
}
?>