вот структура самого чата:
<?php
session_start();
include 'conf.php';
?>
<!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=utf-8" />
<title>Чат</title>
</head>
<body>
<form method="post">
<input type="text" name = "msg" />
<input type="submit" value = "Написать" name = "write" />
</form>
<?php
$name = $_SESSION['name'];
if (isset($_POST['write']))
{
if (isset($_POST['msg']))
{
$msg = htmlspecialchars($_POST['chat']);
$time = date('H:i');
$query = "INSERT INTO user (msg, time_msg, wrt_user) VALUES ('".$msg."','".$time."','".$name."')";
$sql = mysql_query($query);
$msg_get = mysql_query("SELECT * FROM `chat` WHERE `msg` = '{$msg}' LIMIT 1") or die(mysql_error());
if (mysql_num_rows($msg_get) == 1 )
{
$row = mysql_fetch_assoc($msg_get);
$time_msg = $row['time_msg'];
$wrt_user = $row['wrt_user'];
$msg_print = $row['msg'];
print ("$time_msg $wrt_user /: $msg_echo <BR>") ;
}
}
}
?>
<a href = "main.php">На главную</a>
</body>
</html>
P.S : если что сильно не ругать - я еще новичок в этих делах(кстати,html,php и mysql изучал только по инету)
Спустя 14 минут, 59 секунд (9.09.2012 - 18:28) Игорь_Vasinsky написал(а):
ты интересный.))) пишешь что сделал чат, но не знаешь почему не выводятся сообщения.
Спустя 43 минуты, 51 секунда (9.09.2012 - 19:12) Shkiper написал(а):
CitRus
<?php
/////
if (mysql_num_rows($msg_get) == 1 )
{
$row = mysql_fetch_assoc($msg_get);
$time_msg = $row['time_msg'];
$wrt_user = $row['wrt_user'];
$msg_print = $row['msg'];
print ("$time_msg $wrt_user /: $msg_echo <BR>") ;
}
else
{
echo "Not message";
}
/////
Спустя 5 минут, 48 секунд (9.09.2012 - 19:18) CitRus написал(а):
Цитата (Игорь_Vasinsky @ 9.09.2012 - 18:28) |
ты интересный.))) пишешь что сделал чат, но не знаешь почему не выводятся сообщения. |
ну пытался сделать... блин,почему вы все так острить любите? а подсказать никак?
Спустя 2 минуты (9.09.2012 - 19:20) CitRus написал(а):
Shkiper, выводит Not message... значит проблема там.
Спустя 55 секунд (9.09.2012 - 19:21) CitRus написал(а):
там вроде в бд опять ничего не записывается
Спустя 36 минут, 6 секунд (9.09.2012 - 19:57) Игорь_Vasinsky написал(а):
а как тут не острить???
ты не спрашиваешь - почему не работает функция, ты не говоришь что выводиться ошибка.
Ты просто говоришь: написал чат, а он не работает.
ты не спрашиваешь - почему не работает функция, ты не говоришь что выводиться ошибка.
Ты просто говоришь: написал чат, а он не работает.

Спустя 10 часов, 8 минут, 52 секунды (10.09.2012 - 06:06) Shkiper написал(а):
$query = "INSERT INTO user (msg, time_msg, wrt_user) VALUES ('".$msg."','".$time."','".$name."')";
$sql = mysql_query($query);
Замени на
$query = "INSERT INTO `user` (`msg`, `time_msg`, `wrt_user`) VALUES ('".$msg."','".$time."','".$name."')";
$sql = mysql_query($query) or die(mysql_error());
Спустя 13 часов, 51 минута, 4 секунды (10.09.2012 - 19:57) CitRus написал(а):
сори,извиняюсь - надо было писать INSERT INTO не user а chat
Спустя 5 минут, 18 секунд (10.09.2012 - 20:02) CitRus написал(а):
хмм... это помогло но только частично,в бд записывается время и автор а сообщение не записывается и не выводиться. что делать? никакие ошибки броузер не выводит, adobe dreamweawer тоже не материться на синтаксические ошибки. подскажите где ошибка.
Спустя 1 минута, 19 секунд (10.09.2012 - 20:03) CitRus написал(а):
так,нашел еще 2 ошибки:
1) вместо $msg=htmlspecialchars($_POST['msg']) почему-то написал $msg=htmlspecialchars($_POST['chat'])
2) вместо print ("$time_msg $wrt_user : $msg_print <BR>") ;
стояло print ("$time_msg $wrt_user : $msg_echo(раньше так назвал переменную,потом переименовал и забыл поменять.) <BR>") ;
но только у меня появился очередной вопрос: после того как я пишу другое сообщение прошлое стирается,как сделать чтоб все по порядку было ? это надо осуществить через циклы? и еще как потом сделать чтоб если на странице 10 сообщений то прошлые будут перемещаться в другую страницу? посоветуйте что нибудь.
1) вместо $msg=htmlspecialchars($_POST['msg']) почему-то написал $msg=htmlspecialchars($_POST['chat'])
2) вместо print ("$time_msg $wrt_user : $msg_print <BR>") ;
стояло print ("$time_msg $wrt_user : $msg_echo(раньше так назвал переменную,потом переименовал и забыл поменять.) <BR>") ;
но только у меня появился очередной вопрос: после того как я пишу другое сообщение прошлое стирается,как сделать чтоб все по порядку было ? это надо осуществить через циклы? и еще как потом сделать чтоб если на странице 10 сообщений то прошлые будут перемещаться в другую страницу? посоветуйте что нибудь.
Спустя 5 минут, 27 секунд (10.09.2012 - 20:09) Shkiper написал(а):
$msg = htmlspecialchars($_POST['chat']);
Поменяй на:
$msg = htmlspecialchars($_POST['msg']);
Спустя 1 день, 16 часов, 55 минут, 32 секунды (12.09.2012 - 13:04) CitRus написал(а):
ну блин,люди помогите пожалуйста - вы же знаете что делать. как сделать чтоб после написания еще одного сообщения оно не ставилось вместо первого а шло по порядку?
Спустя 8 минут, 33 секунды (12.09.2012 - 13:13) inpost написал(а):
Для даты надо хранить формат date-time.
А теперь по твоему чату, объясни данный запрос:
SELECT * FROM `chat` WHERE `msg` = '{$msg}' LIMIT 1
По порядку, я начну:
Теперь твоя очередь объяснять то, что ты написал! :)
А теперь по твоему чату, объясни данный запрос:
SELECT * FROM `chat` WHERE `msg` = '{$msg}' LIMIT 1
По порядку, я начну:
SELECT - запрос на выборку.
* - выбираем все поля.
Теперь твоя очередь объяснять то, что ты написал! :)
Спустя 4 часа, 37 минут, 14 секунд (12.09.2012 - 17:50) CitRus написал(а):
Цитата |
еперь твоя очередь объяснять то, что ты написал! ![]() |
FROM `chat` - в табличе чат
WHERE `msg` = '{$msg}' - где поле msg равно тексту полученному из формы... это лишнее? извиняюсь,я php только в инете учил и я еще новичок - объясните что нужно сделать.
Спустя 5 минут, 23 секунды (12.09.2012 - 17:55) CitRus написал(а):
только что попробовал кое-что и я почти обрадовался когда увидел что сообщения идут по порядку,но не тут-то было - после того как я перезахожу в чат
сообщений там уже нет. скажите - что я делаю не так? что надо сделать?
сообщений там уже нет. скажите - что я делаю не так? что надо сделать?
Спустя 5 минут, 20 секунд (12.09.2012 - 18:01) CitRus написал(а):
вот дурак - я ставил echo внутрь условия if (isset($_POST['write'])) ,надо было просто вынести его оттуда. но все-таки один вопрос у меня еще есть - сообщения идут сверху вниз,как сделать так чтоб самые старые сообщения были внизу а новые наверху?
Спустя 2 часа, 54 минуты, 1 секунда (12.09.2012 - 20:55) inpost написал(а):
ORDER BY `id` ASC или DESC на твой выбор.
Спустя 15 часов, 34 минуты, 55 секунд (13.09.2012 - 12:30) CitRus написал(а):
inpost ок спасибо. щя прикреплю пагинатор и оставлю здесь весь код - вдруг понадобится новичкам.
Спустя 2 часа, 43 минуты, 40 секунд (13.09.2012 - 15:13) CitRus написал(а):
вот весь чат(без дизайна)
<?php
session_start();
include 'conf.php';
?>
<!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=utf-8" />
<title>Чат</title>
</head>
<body>
<form method="post">
<input type="text" name = "msg" />
<input type="submit" value = "Написать" name = "write" />
</form>
<?php
$name = $_SESSION['name'];
if (isset($_POST['write']))
{
if (isset($_POST['msg']))
{
$msg = htmlspecialchars($_POST['msg']);
$msg = mysql_real_escape_string($msg);
$time = date('H:i');
$query = "INSERT INTO `chat` (`msg`, `time_msg`, `wrt_user`) VALUES ('".$msg."','".$time."','".$name."')";
$sql = mysql_query($query) or die(mysql_error());
}
}
$nums = 10;
if (isset($_GET['page']))
{
$page = intval($_GET['page']);
}
else
{
$page = 1;
}
$query = "SELECT COUNT(*) AS `counter` FROM `chat`";
$sql = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_assoc($sql);
$elements = $row['counter'];
$pages = ceil($elements/$nums);
if ($page < 1)
{
$page = 1;
}
elseif ($page > $pages)
{
$page = $pages;
}
$start = ($page-1)*$nums;
if ($start < 0) $start = 0;
$msg_get = mysql_query("SELECT *
FROM `chat` ORDER BY `id_msg` DESC
LIMIT {$start}, {$nums}") or die(mysql_error());
while($line = mysql_fetch_array($msg_get))
{
echo "[".$line['time_msg']. "] ".$line['wrt_user']." : ".$line['msg']."<br>";
}
$neighbours = 6;
$left_neighbour = $page - $neighbours;
if ($left_neighbour < 1) $left_neighbour = 1;
$right_neighbour = $page + $neighbours;
if ($right_neighbour > $pages) $right_neighbour = $pages;
if ($page > 1)
{
print ' <a href="?page=1">начало</a> ... <a href="?page=' . ($page-1) . '"><-Вперед</a> ';
}
for ($i=$left_neighbour; $i<=$right_neighbour; $i++)
{
if ($i != $page)
{
print ' <a href="?page=' . $i . '">' . $i . '</a> ';
}
else
{
print ' <b>' . $i . '</b> ';
}
}
if ($page < $pages)
{
print ' <a href="?page=' . ($page+1) . '">назад-></a> ... <a href="?page=' . $pages . '">конец</a> ';
}
?>
<hr />
<a href = "chat.php">Обновить</a><br />
<a href = "main.php">На главную</a>
</body>
</html>
Спустя 1 минута, 10 секунд (13.09.2012 - 15:14) CitRus написал(а):
спасибо всем кто помогал