Вопрос по PHP

WC
На сайте с 26.07.2013
Offline
10
473

Добрый вечер,

Столкнулся с такой проблемой: нужно сделать форму добавления комментариев в базу данных MYSQL. Использую следующую конструкцию но по не понятной мне причине не работает...

Массив пустой.

Буду очень признателен, если сможете помочь.

Массив

 if(isset($_POST['send']))

{
$comment['author'] = "'".$_POST['author']."'";
$comment['text'] = "'".$_POST['text']."'";
$comment['note_id'] = "'".$_POST['note_id']."'";
$comment['section'] = "'".$_POST['section']."'";
$comment['date'] = "'".date('Y-m-d')."'";
$comment['time'] = "'".date('H:i:s')."'";
$comment = implode(',',$comment);
add_comment($comment);
header('Location: index.php?view='.$view.'&t='.$title);
}

Функция добавления в БД

function add_comment($data)

{
db_connect();

mysql_query(" INSERT INTO comments (author,text,note_id,section,date,time) VALUES($data) ");
}

ФОРМА ДОБАВЛЕНИЯ

<div id="comments-form">

<form method="post" action="index.php?view=<?=$view;?>&t=<?=$page_data['title_url'];?>" class="comments-form">
<label><b>Ваше имя:</b></label><br />
<input type="text" name="author" size="55" /><br />
<label><b>Текст:</b></label><br />
<textarea rows="10" cols="45" name="text" ></textarea><br />
<input type="hidden" name="note_id" value="<?=$page_data['title_url'];?>" />
<input type="hidden" name="section" value="<?=$view;?>" />
<input type="submit" name="send" value="Отправить" />

</form>
</div>
edogs software
На сайте с 15.12.2005
Offline
775
#1
Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
WC
На сайте с 26.07.2013
Offline
10
#2

Здесь мне кажется проблема в том, что массив почему то пустой приходит

IL
На сайте с 20.04.2007
Offline
435
#3
WebCreativo:
Здесь мне кажется проблема в том, что массив почему то пустой приходит

Какой массив? куда приходит?

http://www.phpfaq.ru/debug

найти подходящее место для...

print_r ($_POST);
var_dump($data);
echo mysql_error();
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
siv1987
На сайте с 02.04.2009
Offline
427
#4
WebCreativo:
INSERT*INTO*comments*(author,text,note_id,section,date,time)*VALUES($data)

Это как так? Указываете несколько полей, а передаете всего лишь одно значение $data, и то не понятно каким образом. Если это массив значит нужно перечислить все его элементы, sql запросы php массивы не понимают.


function add_comment(array $data)
{
$data = array_map('mysql_real_escape_string', $data);

mysql_query("INSERT INTO comments (`".implode('`, `', array_keys($data))."`) VALUES('".implode("', '", $data)."')");
}

и вызов функции


if(isset($_POST['send']))
{
add_comment(array(
'author' => $_POST['author'],
'text' => $_POST['text'],
'note_id' => $_POST['note_id'],
'section' => $_POST['section'],
'date' => date('Y-m-d'),
'time' => date('H:i:s')
));
header('Location: index.php?view='.$view.'&t='.$title);
}
Anamnado
На сайте с 08.02.2010
Offline
242
#5

может потому что вот так проще

if(isset($_POST['send']))

....

....

kiowas
На сайте с 06.02.2010
Offline
61
#6

А чего за звездочки такие? ****93. Это что за шляпа?

подпись
L
На сайте с 07.12.2007
Offline
351
#7
kiowas:
А чего за звездочки такие? ****93. Это что за шляпа?

Это движок форума квадратные скобки [ ] так уродует, когда они внутри [ PHP ] [ /PHP ]. Лучше писать в [ QUOTE ] [ /QUOTE ], но не будет подсветки синтаксиса.

IL
На сайте с 20.04.2007
Offline
435
#8
siv1987:
Это как так? Указываете несколько полей, а передаете всего лишь одно значение $data,

как-то так:

WebCreativo:
                $comment=implode(',',$comment);

add_comment($comment);

Но в целом - дополнительное место для потенциальной ошибки.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий