Помогите пожалуйста как это можно реализовать? вот код я пытался с БД сделать, но скрипт почему то не раеботает, :( как можно это по другому сделать?
<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 написал(а):
Нечего страшного! я только наxинаю, хотябы что то на подобии этого, Можно ли без БД обойтись? или как по другому это сделать?
Спустя 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 в БД? Хотя, как то это всё не логично, покажи структуру этой таблицы.
для начала есть ли таблица 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 написал(а):
спасибо! но как их вносить БД, допустим я ввел текст и нажал отправить, потом текст записывается в БД и сразу оттуда выводить? так? или как?
Спустя 53 минуты, 18 секунд (22.08.2011 - 22:27) inpost написал(а):
Arsenx777
Вот и зря, что ты берёшь инфу из разных источников.
Текст у тебя отправляет форма:
<textarea name="text" cols="30" rows="4"></textarea>
Имя у нас какое? TEXT, значит весь текст, находящийся в этой форме будет как раз содержаться именно в $_POST['text'];
А в обработчике ты берёшь уже: $text=$_POST['ott']; , Но ott - это кнопка, это совсем не ТЕКСТ, который был введён в форму.
Вот и зря, что ты берёшь инфу из разных источников.
Текст у тебя отправляет форма:
<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 у тебя получает массив данных, их потом необходимо будет вывести.
Если всё очень сложно понимается тебе, начни изучение языка с какого-нибудь из видео-курсов наподобии Попова, или Специалиста.
Значения, которые ты добавляешь, необходимо обрамлять обычными одинарными кавычками '$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>:( :( не получается, не могу понять! я только 5 день практикую пхп! покажите пожалуйста как?
<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>
Спустя 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 написал(а):
спасибо буду пробовать!
Спустя 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, или перед этим выводится какой-то символ.
Заголовки и работа с кукисами должна быть в самом начале скрипта.
У тебя UTF with BOM, или перед этим выводится какой-то символ.
Заголовки и работа с кукисами должна быть в самом начале скрипта.
Спустя 1 час, 6 минут, 1 секунда (23.08.2011 - 21:59) Arsenx777 написал(а):
Цитата (inpost @ 23.08.2011 - 17:53) |
Arsenx777 Заголовки и работа с кукисами должна быть в самом начале скрипта. |
спсибо! теперь понял что луче cookie, session и header надо писать перед html