Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2011, 15:09   #1
zmey1
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 30
По умолчанию Привязка комментариев к новостям

Всем привет.

У меня есть сайт, написанный на PHP, с кучей новостей, хранящихся в базе данных MySQL.
Захотелось мне как то, чтобы новости можно было комментировать.
Скачал скрипт PHP, использующий базу данных SQL для хранения комментариев, не много отредактировал и наткнулся на проблему. Я заинтересован, чтобы комментарии добавлялись только к тем новостям, которые я комментаривал. В итоге при нажатии кнопки "добавить комментарий" данные уходят в базу данных, все кроме поля news_id. Оно остается пустым, когда туда должен записаться id новости.

Переменная $id_news - рабочая. Id она выводит, но в базу не записывается результат.

Помогите пожалуйста.

Открывок кода формы комментариев:

<div id="addCommentContainer">
<p>Добавить комментарий</p>
<form id="addCommentForm" method="post" action="">
<div>
<label for="name">Ваше имя:</label>
<input type="text" name="name" id="name" />

<label for="email">Ваш E-mail:</label>
<input type="text" name="email" id="email" />

<label for="url">Ваш сайт (не обязательно):</label>
<input type="text" name="url" id="url" />

<label for="body">Введите текст комментария:</label>
<textarea name="body" id="body" cols="20" rows="5"></textarea>


<input type="hidden" name="news_id" id="news_id" value="<?=$id_news?>" />

<input type="submit" id="submit" value="Submit" />
</div>
</form>
</div>

</div>

Код который задействуется при нажатие кнопки "Submit":

$arr = array();
$validates = Comment::validate($arr);

if($validates)
{
/* Everything is OK, insert to database: */

mysql_query(" INSERT INTO comments(name,url,email,body,news_i d)
VALUES (
'".$arr['name']."',
'".$arr['url']."',
'".$arr['email']."',
'".$arr['body']."',
'".$arr['news_id']."'
)");

$arr['dt'] = date('r',time());
$arr['id'] = mysql_insert_id();
zmey1 вне форума Ответить с цитированием
Старый 15.08.2011, 16:07   #2
8oOoRPM
Форумчанин
 
Регистрация: 12.11.2010
Сообщений: 146
По умолчанию

Во первых не видно как именно данные приходят в массив... т.е. сначала массив инициализируется, и проверяется ПУСТЫМ !!! где там хоть упоминнаие у суперглобальном $_POST массиве ?
8oOoRPM вне форума Ответить с цитированием
Старый 15.08.2011, 20:21   #3
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

Сделайте во так и посмотрите что отобразится. Если news_id будет пустым то ищите ошибки в реализации приема данных. Просто $arr = array(); на входе висеть не может.

PHP код:
$arr = array();
$validates Comment::validate($arr);

if(
$validates)
{
echo
"<pre>".print_r($arr)."</pre>";
); 
to 8oOoRPM, а $arr = array(); что не может быть ассоциативным массивом с уже забитыми данными? какая х-н разница.
Просто автор что то недоговаривает.

Вот это совсем не обязательно
Цитата:
Сообщение от zmey1 Посмотреть сообщение
$arr['dt'] = date('r',time());
$arr['id'] = mysql_insert_id();

Последний раз редактировалось dem66; 15.08.2011 в 20:23.
dem66 вне форума Ответить с цитированием
Старый 15.08.2011, 20:53   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от dem66 Посмотреть сообщение
а $arr = array(); что не может быть ассоциативным массивом с уже забитыми данными?
Не может, эта строка инициализирует пустой массив, даже если в нем ранее были какие-то данные - они удаляются.
Andkorol вне форума Ответить с цитированием
Старый 15.08.2011, 21:00   #5
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

я не это имел в виду.
Можно ведь сделать вот так.
PHP код:
$arr = array('name' => 'user''url' => 'http://blablabla'); 
А вот если автор написал $arr = array(); то это уже другая проблема, здесь ведь не весь код опубликован. не ясно как попадают в этот массив данные из поста
dem66 вне форума Ответить с цитированием
Старый 15.08.2011, 22:42   #6
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Может вот так должно быть
Код:
$arr = array();
$arr = $_POST;
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 16.08.2011, 09:35   #7
dem66
Форумчанин
 
Регистрация: 31.05.2011
Сообщений: 316
По умолчанию

TranceSmile прав, так все будет работать.

И вот еще что. Это к автору.

Проверку лучше реализовать таким макаром:
PHP код:
$validates Comment::validate($arr);

 if(!
$validates==NULL)
{

А сама функция проверки
PHP код:
static validate($arr){
// В случаи если данные соответствуют правилам то
return 'TRUE';
//В сулчаи провала 
return NULL;

Ну что то типа этого
dem66 вне форума Ответить с цитированием
Старый 16.08.2011, 11:32   #8
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

dem66, а вы знаете толк в извращениях ( if (!$validates==NULL) ) )))
Хотя для начала я бы отметил, что пусть php и не является строго типизированным языком, но все же ради порядка, если ваша функция где-то возвращает булево TRUE, то хорошо бы что она в противном случае возвращала где-нибудь такое же булево FALSE, а не NULL . И тогда всегда справедлива будет проверка
Код:
if (Comment::validate($arr)) 
или как у вас 
if (Comment::validate($arr) !== false)
Cronos20 вне форума Ответить с цитированием
Старый 16.08.2011, 12:05   #9
zmey1
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 30
По умолчанию

Всем пасиб, проблема решилась. Нужно было прописать в массив arr переменную id_news из post
zmey1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление комментариев из кода dab00 Microsoft Office Excel 9 17.08.2011 15:37
Виджет комментариев vkontakte kpachbiu JavaScript, Ajax 8 17.01.2011 18:04
[C#] Удаление блочных комментариев AquaticSoul C# (си шарп) 7 10.11.2010 21:01
Работа комментариев в WordPress amdbodia WordPress и другие CMS 3 25.09.2010 15:09
Добавление комментариев Amen PHP 9 20.10.2009 19:34