Помогите исправить ошибку

3.76K
.
ДоХтор

Bahakz, Смотри, я тебе немного переписал блок case 'ok': дописал обработку ошибок, если они есть, то выводим их, если нет - пишем в базу.

Отрывок из твоего кода (+/-)
case 'ok':
        $error = array();
        if (empty($name)) {
            $error[] = '<b>Введите имя!</b>';
        }
        if (empty($text)) {
            $error[] = '<b>Введите текст сообщения!</b>';
        }
        if (!empty($error)) {
            echo implode($error) .'<br />';
        } else {
            $name = mysql_real_escape_string($name);
            $text = mysql_real_escape_string($text);
            $query = mysql_query('INSERT INTO `chat` SET `name`='. $name .', `text`='. $text .', `time`='. time());
            if(isset($query)) {
                echo 'Сообщение отправлено';
            } else {
                echo 'Ощибка'. mysql_error();
            }
        }
            break;


Дописал фильтры перед записью в бд

А если запутаешься, что и куда вставлять, то вот полный изменённый вариант:
* (+/-)
require_once '../sys/head.php';
require_once '../sys/db.php';
 
$act = trim(strip_tags($_POST['act']));
 
switch($act) {
    default:
        echo '<form action="../chat/index.php?act=ok" method="post">'.
             'Ваше имя:<br /><input type="text" name="name" size="12" />'.
             'Сообщение:<br /><input type="text" name="text" />'.
             '<input type="submit" value="Отправить" />'.
             '</form>';
            break;
 
    case 'ok':
        $error = array();
        if (empty($name)) {
            $error[] = '<b>Введите имя!</b>';
        }
        if (empty($text)) {
            $error[] = '<b>Введите текст сообщения!</b>';
        }
        if (!empty($error)) {
            echo implode($error) .'<br />';
        } else {
            $name = mysql_real_escape_string($name);
            $text = mysql_real_escape_string($text);
            $query = mysql_query('INSERT INTO `chat` SET `name`='. $name .', `text`='. $text .', `time`='. time());
            if(isset($query)) {
                echo 'Сообщение отправлено';
            } else {
                echo 'Ощибка'. mysql_error();
            }
        }
            break;
}
 
require_once '../sys/end.php';

И ещё была ошибка: ты в форме отправлял параметры методом post, а в скрипте принимал методом get. Я только что исправил
.
# Bahakz (20.12.2015 / 18:03)
Неа я не об этом. Когда нажмешь на "отправить" уже следующей странице вылетает все данные
Какие данные и откуда вылетают?
.
Bahakz
# ДоХтор (20.12.2015 / 18:11)
Bahakz, Смотри, я тебе немного переписал блок case 'ok': дописал обработку ошибок, если они есть, то выводим их, если нет - пишем в базу. case 'ok':
$error = array();
if (empty($
Спасибо. Этого
`time`='. time());
кажется должно быть так `time`='. time() .'');
.
# Bahakz (20.12.2015 / 18:26)
Спасибо. Этого `time`='. time());кажется должно быть так `time`='. time() .'');
Я же написал тебе код выше. Копируй и без ошибок вставляй куда надо.
.

Bahakz, На счёт кодировки - в папке с твоим чатом создай файл .htaccess и укажи кодировку, написав в этом файле строку:
AddDefaultCharset UTF-8

.

ДоХтор, Посмотри чат, что-то не так.

.

Вот, теперь с кодировкой всё ок )

.
# Bahakz (20.12.2015 / 18:34)
ДоХтор, Посмотри чат, что-то не так.
Сейчас допишу то, чего не хватает )
.
# ДоХтор (20.12.2015 / 18:34)
Вот, теперь с кодировкой всё ок )
Попробуй вводит что-нибудь в чат
.
ДоХтор

Bahakz, Пробуй этот вариант

* (+/-)
<?php

require_once '../sys/head.php';
require_once '../sys/db.php';

if (isset($_GET['act']) && $_GET['act'] == 'ok') {
    $name = (!empty($_POST['name']) ? trim(strip_tags($_POST['name'])) : '');
    $text = (!empty($_POST['text']) ? trim(strip_tags($_POST['text'])) : '');
    
    $error = array();
    if (empty($name)) {
        $error[] = '<b>Введите имя!</b>';
    }
    if (empty($text)) {
        $error[] = '<b>Введите текст сообщения!</b>';
    }
    if (!empty($error)) {
        echo implode('<br />', $error);
    } else {
        $name = mysql_real_escape_string($name);
        $text = mysql_real_escape_string($text);
        $query = mysql_query('INSERT INTO `chat` SET `name`='. $name .', `text`='. $text .', `time`='. time());
        if ($query) {
            header('Refresh:1; url=index.php');
            echo '<b>Сообщение отправлено!</b>';
        } else {
            echo 'Ощибка'. mysql_error();
        }
    }
} else {
    echo '<form action="../chat/index.php?act=ok" method="post">'.
         'Ваше имя:<br /><input type="text" name="name" size="12" />'.
         'Сообщение:<br /><input type="text" name="text" />'.
         '<input type="submit" value="Отправить" />'.
         '</form>';
}
 
require_once '../sys/end.php';

Протестил этот вариант на локалке, всё ок ))
Всего: 92