Вот решил написать скрипт коментов. Начал думать как это всё можно организовать.
Вот есть таблица 'posts' с полями 'id','title','menu_name','description','keywords','date','text'.
И придумал я сделать так:
Создать ещё одну таблицу 'comment' с полями 'post','name','text'(примерно так).
При заполнении в 'post' добавлялось бы соответствующее 'id' постов из таблицы 'posts'.
А потом вытягивать коменты примерно так SELECT * FROM 'comment' WHERE 'post'=$id
Как вы считаете, удачное ли это решение? И есть ли какие нибудь другие способы?
Спустя 35 минут, 29 секунд (20.05.2010 - 17:35) Kuzya написал(а):
Помоему это самый удобный вариант
Спустя 6 часов, 32 секунды (20.05.2010 - 23:35) Unlikely написал(а):
А можно как нибудь убить $_POST после выполнения заявки? А то, если клацнуть по "Обновить" то заявка выполняется второй раз и третий и четвёртый...
Спустя 3 минуты, 8 секунд (20.05.2010 - 23:39) Unlikely написал(а):
Вот такой код получился:
<br />
<br />
<?php
if(!$_POST) {
echo "Вы можете оставить свои комментарии";
}
else {
if($_POST) {
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$age = $_POST['age'];
$name = trim($name, " .");
$email = trim($email, " .");
$message = trim($message, " .");
$name = htmlspecialchars($name, ENT_QUOTES, "UTF-8", false);
$email = htmlspecialchars($email, ENT_QUOTES, "UTF-8", false);
$message = htmlspecialchars($message, ENT_QUOTES, "UTF-8", false);
if($name and $email and $message and !$age) {
$ip = getenv("REMOTE_ADDR");
$query = "INSERT INTO `".$DB_NAME."`.`comment` (`post`, `name`, `email`, `message`, `date`, `ip`) VALUES ('".$id."', '".$name."', '".$email."', '".$message."', NOW(), '".$ip."')";
$result = mysql_query($query, $connection);
echo "Заявка отправлена";
}
else {
echo "Заполните необходимые поля";
}
}
}
?>
<form method="post" action="">
<input type="text" name="name" size="30" /> Имя*<br />
<input type="text" name="email" size="30" /> E-Mail*<br />
<textarea name="message" cols="58" rows="7"></textarea><br />
<input type="text" name="age" size="10" /> Анти-спам(оставить пустым)<br />
<input type="submit" name="submit" />
</form>
Спустя 2 минуты, 18 секунд (20.05.2010 - 23:41) waldicom написал(а):
Cделайте перенаправление с помощью функции header() на свою же страницу.
Примерно так:
Примерно так:
header("Location: YOUR_SITE");
exit;
Спустя 30 минут, 40 секунд (21.05.2010 - 00:12) Unlikely написал(а):
Цитата (waldicom @ 20.05.2010 - 20:41) |
Cделайте перенаправление с помощью функции header() на свою же страницу. Примерно так: header("Location: YOUR_SITE"); |
Не получается. Говорит "Warning: Cannot modify header information - headers already sent by".
Я так понимаю это из за того что у меня в начале header('Content-Type: text/html; charset=UTF-8', true); прописано?
Спустя 9 минут, 3 секунды (21.05.2010 - 00:21) waldicom написал(а):
Нет, именно эта функция не влияет, но вот любой вывод в браузер (echo() или вообще любой символ) уже не позволит использовать эту функцию (обойти можно, но это не тот случай)
Спустя 24 минуты, 10 секунд (21.05.2010 - 00:45) Unlikely написал(а):
То есть, мне нужно её выполнить перед выводом чего либо в браузер.
Как это сделать если у меня скрипт добавления коментов(выше вставлял) инклюдится по середине страницы?
Как это сделать если у меня скрипт добавления коментов(выше вставлял) инклюдится по середине страницы?
Спустя 6 часов, 51 минута, 23 секунды (21.05.2010 - 07:36) Raito-kun написал(а):
$name = htmlspecialchars($name, ENT_QUOTES, "UTF-8", false);
$email = htmlspecialchars($email, ENT_QUOTES, "UTF-8", false);
$message = htmlspecialchars($message, ENT_QUOTES, "UTF-8", false);
зачем? при выводе обрабатывайте этой функцией, а при записи в бд используйте
mysql_real_escape_string()
Спустя 5 часов, 4 минуты, 6 секунд (21.05.2010 - 12:40) Unlikely написал(а):
Цитата (Raito-kun @ 21.05.2010 - 04:36) |
$name = htmlspecialchars($name, ENT_QUOTES, "UTF-8", false); зачем? при выводе обрабатывайте этой функцией, а при записи в бд используйте mysql_real_escape_string() |
Только если ради экономии места в дб. Другой разницы не вижу.
Спустя 1 день, 21 час, 39 минут, 39 секунд (23.05.2010 - 10:20) Unlikely написал(а):
Есть какой нибудь простой способ подсчитывать количество запросов в дб?
А то я что то создал переменную
Можно конечно создать функцию которая содержала бы в себе mysql_query() и $querycounter++; но я немогу придумать как и где хранить $querycounter ="0";
А то я что то создал переменную
$querycounter ="0";и после каждого запроса пишу
$querycounter++;
Можно конечно создать функцию которая содержала бы в себе mysql_query() и $querycounter++; но я немогу придумать как и где хранить $querycounter ="0";
Спустя 13 минут, 57 секунд (23.05.2010 - 10:34) Basili4 написал(а):
Unlikely
Я бы не стал проверять только на ноличие массива $_POST но и на личеие какойнибудь переменной а после выполнения скрипта unset ($_POST ['Переменная']); я не проверял 100% результат не гарнтриую
Я бы не стал проверять только на ноличие массива $_POST но и на личеие какойнибудь переменной а после выполнения скрипта unset ($_POST ['Переменная']); я не проверял 100% результат не гарнтриую