Это файл который выводит поля чата в браузер пользователя! PHP: <?php include ("bd_chat.php"); include ("bd.php"); $sql = "SELECT `chat`.*, `users`.`name`, `users`.`fupload` FROM `chat`, `users` WHERE `chat`.`user_id` = `users`.`id` ORDER BY `idchat` DESC"; $result8 = mysql_query($sql, $dbchat)or die("Ошибка в запросе: " . mysql_error()); $result9 = mysql_query($sql, $db)or die("Ошибка в запросе: " . mysql_error()); if ((!$result8) or (!$result9)) { echo "ошибка - ".mysql_error()."<br>"; echo $sql; exit(); } $myrow8 = mysql_fetch_array($result8); $myrow9 = mysql_fetch_array($result9); if (!empty($myrow8['idchat'])) { $massage = $myrow8['massage']; if (empty($myrow9['fupload'])) { $avachat = "../file/avatars/net-avatara.jpg"; } else { $avachat = $myrow9['fupload']; } $w_chat = 30; $w_src_chat = imagesx($avachat); $h_src_chat = imagesy($avachat); $dest_chat = imagecreatetruecolor($w_chat,$w_chat); if ($w_src_chat>$h_src_chat) { imagecopyresampled($dest_chat, $avachat, 0, 0, round((max($w_src_chat,$h_src_chat)-min($w_src_chat,$h_src_chat))/2), 0, $w_chat, $w_chat, min($w_src_chat,$h_src_chat), min($w_src_chat,$h_src_chat)); if ($w_src_chat<$h_src_chat) { imagecopyresampled($dest_chat, $avachat, 0, 0, 0, 0, $w_chat, $w_chat, min($w_src_chat,$h_src_chat), min($w_src_chat,$h_src_chat)); if ($w_src_chat == $h_src_chat) { imagecopyresampled($dest_chat, $avachat, 0, 0, 0, 0, $w_chat, $w_chat,$w_src_chat, $w_src_chat); } } } } while ($myrow8 = mysql_fetch_array($result8)) { if (!empty($myrow9['id'])) { printf("<table class='' border='1'> <tr> <td> <div class='avachat'>%s</div><div class=''>%s</div><div class=''>%s</div> </td> <tr> </table>", $avachat, $myrow9['name'], $massage); } else { echo("Напиши сообщение !"); } } ?> Это обработчик введённых данных: PHP: <?php session_start(); include ("bd_chat.php"); if(isset($_POST['massage'])) { $massage = mysql_real_escape_string($_POST['massage']); $massage = stripslashes($massage); $massage = htmlspecialchars($massage); $message=str_replace("<", "<", $message); $message=str_replace(">", ">", $message); $message=str_replace("\r\n", " ", $message); $message=str_replace("\r", "", $message); $message=str_replace("\n", "", $message); $message=str_replace("|", "_", $message); if (($massage == '') or empty($massage)) { unset($massage); } } if (strlen($massage) > 70) { die ("Текст не должен превышать 70 символов!"); } if (!empty($_SESSION['login']) and !empty($_SESSION['pass'])) { $login = mysql_real_escape_string($_SESSION['login']); $pass = mysql_real_escape_string($_SESSION['pass']); include ("bd.php"); $result2 = mysql_query("SELECT id FROM users WHERE login='$login' AND pass='$pass'",$db); $myrow2 = mysql_fetch_array ($result2); if (empty($myrow2['id'])) { exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); } if (!preg_match("|^[\d]+$|", $id)) { exit("<p>Неверный формат запроса! Проверьте URL</p>"); } } else { exit("Вход на эту страницу разрешен только зарегистрированным пользователям!"); } $user_id = $id; } $result4 = sprintf("INSERT INTO chat (massage, user_id) VALUES ('%s','$s');", mysql_real_escape_string(strip_tags($massage)), $user_id); $res = @mysql_query($result4); if(!$res) { die("Error: ".mysql_error()); } else { return $res; } if ($result4 == 'TRUE') { header("Location: [url=http://localhost/znakomstva/page_user.php]http://localhost/znakomstva/page_user.php[/url]"); } else { exit ("При отправке Вашего сообщения возникли проблемы.Обратитесь в службу поддержки по адресу [email=bvstrechi@list.ru]bvstrechi@list.ru[/email]"); } ?> Не обессудте-я только учусь! Вопросы: 1. Выдаёт такие ошибки: Код (Text): Warning: imagesx(): supplied argument is not a valid Image resource in Z:\home\localhost\www\...... Warning: imagesy(): supplied argument is not a valid Image resource in Z:\home\localhost\www\...... Понимаю в чём смысл (примерно!!!),но поделать ничего не могу!Гугл спросил,но он в конкретеке молчит как партизан(даже иголки под ногти и раскалённый утюг на грудь не помогли) ! 2.Хочу сделать так,что бы выводились только десять очередных сообщений на страницу,потом проходит пять минут и происходит рефреш страницы.При этом уже показанные сообщения удаляются на всегда,а выводятся очередные десять!Помогите в этом плане-как реализовать!?Не прошу написать код (заранее перестраховываюсь от гневных сообщений более опытных товарищей по цеху),а хоть натолкните,пару строчик кода (может быть), а дальше сам додумаю (надеюсь)! :roll: 3.Прошу натолкнуть по какому принцыпу осуществлять выборку из базы?Как будет php понимать что мне нужны очередные 10 строк сообщений с выборкой из базы юзеров,по их конкретным id? 4.Думаю реализовать таким образом,что бы эти десять сообщений выводились в окошке определённого размера (с прокруткой оно должно быть).Это с помощью CSS делать,какие свойства?
я особо не работал с изображениями, но говорит о том, что переданная в функцию переменная не является правильным ресурсом изображения. http://php.net/manual/ru/function.imagesx.html посмотрев описание можно увидеть что параметр функции resource $image а не string $filename следовательно вам нужно не путь передавать а ресурс сомтрите те функции который возвращают ресурс, например http://www.php.net/manual/ru/function.i ... omjpeg.php
Ага!Спасибо!Буду пробовать.И действительно,передаю ссылку на изображение ведь... А есть ещё предложения по остальным вопросам? Понимаю,что накатал много текста и большенству программистов не интересно читать столько строк для помощи,но призываю всех к ответу!...а точнее помощи!)))
[css]overflow[/css] по поводу 10 сообщений и рефреша раз в 5 минут - это уже не чат получается не совсем понятна мысль... а что будет если юзер сам обновит страницу? а не дождётся авторефреша.
Про overflow почитал-всё понял! Бли-и-и-и-ин!А вот про это не подумал совсем,и действительно...(((А можно,что бы код фиксировал время вывода сообщений,потом проверял сколько прошло времени и если он видит,что прошло пять минут,то производил рефреш с очередной десяткой!? Пример:http://www.24open.ru/users/online/там с правой стороны есть как бы чат,только я хочу,что бы он ещё и обновлялся тем способом как ранее написал!Или это сильно будет грузить страницу-нет смысла?
А что это получается!Человек написал сообщение,оно высветилось (как его очередь подошла) и все его увидели,заценили,так сказать?Аль нет?
раз в 5 минут это сильно нагрузит?) сомневаюсь... а время, ну можно, напрмиер в куках или сессии, но опять же а если браузер закрыл, куки почистил. сдлайте просто последние 10 сообщений и всё, зачем вам время, а если не кто не писал за 5 минут? голый чат будет - некрасиво. вообще сделайте на аяксе подгрузку, зачем перезагружать страницу? отправляйте просто ID последнего выведенного сообщения раз в 20 секунд например, и если есть новые выводите их.
Загнали меня в тупик!!!Знал бы прикуп-жил бы в Сочи!))) Я не умею на аяксе программировать (мой недостаток-каюсь) и от сюда понятия как отправлять id каждого последнего сообщения...(((А главное куда отправлять!?Можно больше физики в этом вопросе обьяснить!?Заранее благодарен,сансей)))
Всё приходит с опытом-представляете,я даже не подумал о подобных вариантах!Но у меня же на будущем сайте будут только активные пользователи,которые днём и ночью будут в чат стросить сообщения без усталости и мозолей на пальцах!))) Хочу всё как в этом чате,только писать в том же окне где и выводитятся сообщения и обновления постоянные!Как вот выборку делать правильно и порядок вывода-вот дилема!
1. Выдаёт такие ошибки: Код: Warning: imagesx(): supplied argument is not a valid Image resource in Z:\home\localhost\www\...... Warning: imagesy(): supplied argument is not a valid Image resource in Z:\home\localhost\www\...... Есть варианты в помощи!? А про чат:может кто-нибудь хоть кусочеГ кода кинет,а я додумаю!?