[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Онлайн чат
Arsenx777
Всем привет! хочу написи на пхп очень простой онлайн чат, допустем заходеш в чат, а там только <input text> для ввода имени и <textarea> для ввода текста, вводим свое имя и текст и жмем <input submit> отвравить и текст выводится где нибудь на странице, например снизу.
Помогите пожалуйста как это можно реализовать? вот код я пытался с БД сделать, но скрипт почему то не раеботает, :( как можно это по другому сделать?

<html>
<
head>
<?php
$dbhost="localhost";
$dbuser="root";
$dbpass="";
$dbname="chat";
mysql_connect($dbhost, $dbuser, $dbpass) or die (mysql_error());
mysql_select_db($dbname) or die (mysql_error());
$text=$_POST['ott'];
function insert($text){
$d=date('Y:m:d H:i:s');
if ($text==""){
return false;
}
$query="INSERT INTO user (date,text) VALUE ($d,$text)";
$result=mysql_query($query);
}
function select(){
$query="SELECT * FROM user ORDER BY date DESK";
$message=array();
$m=mysql_num_rows($result);
for ($i=0; i<=$m; $i++){
$row=mysql_fetch_assoc($result);
$message[]=$row;
}
return $message;
}
insert($text);
$messege=select();
?>
<title>Online чат</title>
<
style type="text/css">

</
style>
</
head>
<
body>
<
center>
<
form name="thechat" action="" method="POST">
<
h3>Ваш текст</h3><br />
<
textarea name="text" cols="30" rows="4"></textarea><br />
<
input type="submit" name="ott" value="Отправить" />
</
form>
<
br /><br /><hr />
</
center>
</
body>
</
html>

Помогите очень надо! :) :)



Спустя 8 минут, 44 секунды (22.08.2011 - 21:02) inpost написал(а):
Arsenx777
Так что именно не работает? Логика нарушена? Ошибки пишутся? Что-то конкретное не получается?

Спустя 3 минуты, 6 секунд (22.08.2011 - 21:05) Arsenx777 написал(а):
Не знаю! ошибок много! я половина скрипта скатал из одной статьи! Можно ли без БД обойтись?

Спустя 1 минута, 56 секунд (22.08.2011 - 21:07) killer8080 написал(а):
Это больше похоже на гостевую, чем на чат.

Спустя 2 минуты, 34 секунды (22.08.2011 - 21:10) Arsenx777 написал(а):
biggrin.gif Нечего страшного! я только наxинаю, хотябы что то на подобии этого, Можно ли без БД обойтись? или как по другому это сделать? sad.gif sad.gif

Спустя 16 секунд (22.08.2011 - 21:10) Invis1ble написал(а):
А потому что нефиг бездумно копипастить код.
			function insert($text){
$d=date('Y:m:d H:i:s');
if ($text==""){
return false;
}
$query="INSERT INTO user (date,text) VALUE ($d,$text)";
$result=mysql_query($query) or die(mysql_error());
}
function select(){
$query="SELECT * FROM user ORDER BY date DESC";
$result = mysql_query($query) or die(mysql_error());
$messages=array();
while ($row=mysql_fetch_assoc($result))
$messages[]=$row;
return $messages;
}

Спустя 4 минуты, 5 секунд (22.08.2011 - 21:14) killer8080 написал(а):
Arsenx777
для начала есть ли таблица user в БД? Хотя, как то это всё не логично, покажи структуру этой таблицы.

Спустя 5 минут, 34 секунды (22.08.2011 - 21:20) Arsenx777 написал(а):
Таблица есть все с БД хорошо! Можно ли без БД обойтись? или как по другому это сделать?

Спустя 41 секунда (22.08.2011 - 21:21) killer8080 написал(а):
Цитата (Arsenx777 @ 22.08.2011 - 21:20)
Можно ли без БД обойтись?

а смысл?

Спустя 3 минуты, 37 секунд (22.08.2011 - 21:24) Юрич написал(а):
ну так в текстовый документ можно данныє сохранять, только всеравно это недополу-чат получиться какойто. Потому-что сообщения будуть появляться только после перезагрузки станици. Тут аякс надо подключать.

Спустя 1 минута, 26 секунд (22.08.2011 - 21:26) Юрич написал(а):
И в текстовый документ невозможно вносить данные сразу нескольким пользователям. Вот и получаеться что без БД никак.

Спустя 8 минут, 32 секунды (22.08.2011 - 21:34) Arsenx777 написал(а):
спасибо! но как их вносить БД, допустим я ввел текст и нажал отправить, потом текст записывается в БД и сразу оттуда выводить? так? или как? biggrin.gif

Спустя 53 минуты, 18 секунд (22.08.2011 - 22:27) inpost написал(а):
Arsenx777
Вот и зря, что ты берёшь инфу из разных источников.
Текст у тебя отправляет форма:
<textarea name="text" cols="30" rows="4"></textarea>
Имя у нас какое? TEXT, значит весь текст, находящийся в этой форме будет как раз содержаться именно в $_POST['text'];
А в обработчике ты берёшь уже: $text=$_POST['ott']; , Но ott - это кнопка, это совсем не ТЕКСТ, который был введён в форму.

Спустя 4 минуты, 54 секунды (22.08.2011 - 22:32) inpost написал(а):
В запросах: имена ТАБЛИЦ и ЯЧЕЕК обрамлять необходимо обратными одинарными кавычками кавычками: `user` , `date`, `text`.
Значения, которые ты добавляешь, необходимо обрамлять обычными одинарными кавычками '$text' , '$date'
Вставить в БД у тебя есть, это запрос INSERT INTO
Функция SELECT у тебя получает массив данных, их потом необходимо будет вывести.
foreach($messege as $v)
{
echo $v['text'];
}

Если всё очень сложно понимается тебе, начни изучение языка с какого-нибудь из видео-курсов наподобии Попова, или Специалиста.

Спустя 39 минут, 27 секунд (22.08.2011 - 23:12) Arsenx777 написал(а):
спасибо

Спустя 17 часов, 37 минут, 12 секунд (23.08.2011 - 16:49) Arsenx777 написал(а):
Вот я сам переделал код:
<html>
<
head>
<?php
$dbhost="localhost";
$dbuser="root";
$dbpass="";
$dbname="chat";
mysql_connect($dbhost,$dbuser,$dbpass) or die (mysql_error());
mysql_select_db($dbname) or die (mysql_error());
$text=$_POST['text'];
if ($text!=""){
mysql_query("INSERT INTO user (text) VALUES('$text')");
}
$otv=mysql_query("SELECT * FROM user");
while ($ck=mysql_fetch_array($otv)){
echo "<br />",$ck['text'];
}


?>
<title>Online чат</title>
<
style type="text/css">

</
style>
</
head>
<
body>
<
center>
<
form name="thechat" action="" method="POST">
<
h3>Ваш текст</h3><br />
<
textarea name="text" cols="30" rows="4"></textarea><br />
<
input type="submit" name="ott" value="Отправить" />
</
form>
<
br /><br /><hr /><br />
</
center>
</
body>
</
html>

Код работает! делается ли это тат? правильно что я текст введенный пользователем записываю в БД и тут же их вывожу, это привильно?

если я написал какое то сообщение, оно записывается в бд и выводится на страницу, но при каждом обновлении страницы этот текст будет выводиться! как это исправить?

Спустя 4 минуты, 42 секунды (23.08.2011 - 16:54) Invis1ble написал(а):
Цитата
при каждом обновлении страницы этот текст будет выводиться! как это исправить?

добавить после этапа записи в БД
header('Location: script.php');

и всю логику переместить до вывода, т.е. в начало

Спустя 8 минут, 43 секунды (23.08.2011 - 17:02) Arsenx777 написал(а):
пишу header('Location: chat.php'); -все верно пишу но почему то ошибка выдается

Warning: Cannot modify header information - headers already sent by (output started at S:\home\chat.ru\www\chat.php:3) in S:\home\chat.ru\www\chat.php on line 13

Спустя 14 минут, 5 секунд (23.08.2011 - 17:17) Invis1ble написал(а):
Цитата
всю логику переместить до вывода, т.е. в начало

http://phpforum.ru/index.php?showtopic=43337 - вопрос номер 3, 4

Спустя 14 минут, 11 секунд (23.08.2011 - 17:31) Arsenx777 написал(а):
так?
<html>
<
head>
<?php
if ($text!=""){
mysql_query("INSERT INTO user (text) VALUES('$text')");
header('Location: chat.php');
}
function ot1(){
$otv=mysql_query("SELECT * FROM user");
while ($ck=mysql_fetch_array($otv)){
echo "<br />",$ck['text'];
}
}


$dbhost="localhost";
$dbuser="root";
$dbpass="";
$dbname="chat";
mysql_connect($dbhost,$dbuser,$dbpass) or die (mysql_error());
mysql_select_db($dbname) or die (mysql_error());
$text=$_POST['text'];

?>
<title>Online чат</title>
<
style type="text/css">

</
style>
</
head>
<
body>
<
center>
<
form name="thechat" action="" method="POST">
<
h3>Ваш текст</h3><br />
<
textarea name="text" cols="30" rows="4"></textarea><br />
<
input type="submit" name="ott" value="Отправить" />
</
form>
<
br /><br /><hr /><br />
<?ot1()?>
</center>
</
body>
</
html>
:( :( не получается, не могу понять! я только 5 день практикую пхп! покажите пожалуйста как?

Спустя 2 минуты, 17 секунд (23.08.2011 - 17:33) Invis1ble написал(а):
<?php
$dbhost="localhost";
$dbuser="root";
$dbpass="";

$dbname="chat";
mysql_connect($dbhost,$dbuser,$dbpass) or die (mysql_error());
mysql_select_db($dbname) or die (mysql_error());
$text=$_POST['text'];
if ($text!=""){
mysql_query("INSERT INTO user (text) VALUES('$text')");
header('Location: chat.php');
}
function ot1(){
$otv=mysql_query("SELECT * FROM user");
while ($ck=mysql_fetch_array($otv)){
echo "<br />",$ck['text'];
}
}

?>
<html>
<head>

<!-- остальной код -->

Только в логике нужно сделать занесение сообщений в массив, а выводить их нужно уже в html

UPDATE

Спустя 3 минуты, 53 секунды (23.08.2011 - 17:37) Arsenx777 написал(а):
спасибо буду пробовать! rolleyes.gif

Спустя 2 часа, 21 минута, 56 секунд (23.08.2011 - 19:59) Arsenx777 написал(а):
помогите плиз не могу понять как правилно делать логику :D теперь таже ошибка при установке кукисов
Warning: Cannot modify header information - headers already sent by (output started at S:\home\chat.ru\www\index.php:3) in S:\home\chat.ru\www\indexphp.php on line 12

Warning: Cannot modify header information - headers already sent by (output started at S:\home\chat.ru\www\index.php:3) in S:\home\chat.ru\www\indexphp.php on line 13


<?php		
if (isset($_POST['username']) && isset($_POST['userlog'])){
if ($_POST['btn']==true){
if (($_POST['username']=="") || ($_POST['userlog']=="")){
$eror="Вы не ввели все данные!";
}
else {
$us=$_POST['username'];
$regular='/[а-яА-Я]{3,15}/';
$res=preg_match($regular,$_POST['username']);
if ($res==true){
setcookie('uname',$_POST['username']);
setcookie('ulog',$_POST['userlog']);
$ss="Здравствуйте $us <br /><br /><a href=\"chat.php\">Перейти в чат!</a>";
}
else {
$eror="Имя должно содержать только русские буквы!";
}
}
}
}

?>

Спустя 54 минуты, 38 секунд (23.08.2011 - 20:53) inpost написал(а):
Arsenx777
У тебя UTF with BOM, или перед этим выводится какой-то символ.
Заголовки и работа с кукисами должна быть в самом начале скрипта.

Спустя 1 час, 6 минут, 1 секунда (23.08.2011 - 21:59) Arsenx777 написал(а):
Цитата (inpost @ 23.08.2011 - 17:53)
Arsenx777
Заголовки и работа с кукисами должна быть в самом начале скрипта.


biggrin.gif biggrin.gif biggrin.gif спсибо! теперь понял что луче cookie, session и header надо писать перед html biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.