X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> При передаче переменной методом post через форму она пустая
Kuchuluk
Kuchuluk
Topic Starter сообщение 5.2.2012, 19:39; Ответить: Kuchuluk
Сообщение #1


вот такая форма

<form action="comment.php" method="post" name="form_com">
<p><label>Ваше имя: </label><input name="author" type="text" size="30" maxlength="30"></p>
<p><label>Текст комментария: <br><textarea name="text" cols="40" rows="4"></textarea></label></p>
<p style="border:1px solid black;">Введите сумму с картинки<br><img style='margin-top:20px;' src="<? echo $myrow4['img']; ?>" width="80" height="40">
  <input style='margin-bottom:25px;' name="pr" type="text" size="5" maxlength="5"></p>
<input name="id" type="hidden" value="<? echo "$id"; ?>">
<p><input name="sub_com" type="submit" value="Комментировать"></p>
</form>


Эта форма передает данные обработчику comment.php, который заносит их в базу. При обновлении страницы должен появляться новый комментарий, но он не появляется. Проверил на вывод все переменные таким кодом:

[PHP]
if (isset ($_POST['author'])) { $author = $_POST['author']; }
if (isset ($_POST['text'])) { $text = $_POST['text']; }
if (isset ($_POST['pr'])) { $pr = $_POST['pr']; }
if (isset ($_POST['sub_com'])) { $sub_com = $_POST['sub_com']; }
if (isset ($_POST["$id"])) { $id = $_POST["$id"]; }
echo '<pre>';
var_dump($_POST);
[/PHP]
выдает такой результат:

array(5) {
["author"]=>
string(0) ""
["text"]=>
string(0) ""
["pr"]=>
string(1) "3"
["id"]=>
string(1) "3"
["sub_com"]=>
string(14) "Комментировать"
}
Проверил переменную id таким кодом if (empty ($id)) {echo "Переменная id пустая";}
оказалось переменная id пустая. Почему она не передалась?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 5.2.2012, 19:53; Ответить: matroskin8
Сообщение #2


[PHP]
if (isset ($_POST["$id"])) { $id = $_POST["$id"]; }
[/PHP]
Проверил переменную id таким кодом if (empty ($id)) {echo "Переменная id пустая";}
оказалось переменная id пустая. Почему она не передалась?

Потому что правильно не $_POST["$id"], а $_POST["id"]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 5.2.2012, 21:26; Ответить: Kuchuluk
Сообщение #3


спасибо, теперь переменная id передается. Но комментарий в базу так и не заносится. дальше в обработчике идет такой код:

if (isset ($sub_com))
{
if (isset($author)) { trim($author); }
else {$author = "";}
if (isset($text)) { trim($text); }
else {$text = "";}
if (empty($author) or empty($text))
{ exit ("<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля.</p><br> <input name='back' type='button' value='вернуться назад' onclick='javascript:self.back();'>"); }
$result = mysql_query ("SELECT sum FROM comments_setting",$db);
$myrow = mysql_fetch_array($result);
echo '<pre>';
var_dump($myrow);
if ($pr == $myrow["sum"])
{
$date = date("Y-m-d");
$result2 = mysql_query("INSERT INTO comments (post,author,text,date) VALUES ('$id','$author,'$text','$date')",$db);
}
else
{
exit ("<p>Вы ввели сумму с картинки неправильно, вернитесь назад и перепроверьте.</p><br> <input name='back' type='button' value='вернуться назад' onclick='javascript:self.back();'>");
}
$myrow2 = mysql_fetch_array($result2);
echo '<pre>';
var_dump($myrow2);
}

выдается сообщение об ошибке:
array(2) {
[0]=>
string(1) "3"
["sum"]=>
string(1) "3"
}


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:homelocalhostwwwphpblogcomment.php on line 45

bool(false)
то есть я так понимаю, что новые поля не были добавлены в таблицу БД?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 5.2.2012, 22:28; Ответить: matroskin8
Сообщение #4


Сама ошибка говорит, что в функцию mysql_fetch_array() попадает не то, что должно, а именно - булев тип false вместо ресурса. Следовательно, ошибку нужно искать в запросах.
После каждого запроса нужно ставить проверки, чтобы проще отлавливались ошибки, об этом уже говорилось:
$result = mysql_query ("SELECT sum FROM comments_setting",$db) or die(mysql_error());

то есть я так понимаю, что новые поля не были добавлены в таблицу БД?

Почему? Вполне может быть, что добавилось - достаточно легко проверить это... просто посмотри в БД ;) . В скрипте я вижу 2 запроса. Ошибка, скорее всего, идет на второй из них ($result2), поскольку он добавляет данные и фетчить добавление просто бессмысленно.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 5.2.2012, 23:00; Ответить: Kuchuluk
Сообщение #5


matroskin8, как ты и предполагал, ошибка оказалась во втором запросе. выдал вот такую ошибку You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'g','2012-02-05')' at line 1
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 5.2.2012, 23:26; Ответить: matroskin8
Сообщение #6


Ну тогда вот отличный метод отладки запросов:
1) формируем текст запроса;
2) выводим текст запроса на экран, останавливая работу скрипта;
3) смотрим текст запроса и ищем ошибки - сравниваем имена полей в запросе с именами полей в БД, смотрим, что попадает в каждое конкретное значение поля и т.д.
В коде это выглядит так:
$query = "INSERT INTO comments (post,author,text,date) VALUES ('$id','$author,'$text','$date')"; // формируем текст запроса
echo $query; // распечатываем текст запроса
exit; // останавливаем на этом выполнение скрипта

4) после устранения всех ошибок - уже отсылаем сам запрос, убирая распечатку и выход из программы:
$query = "INSERT INTO comments (post,author,text,date) VALUES ('$id','$author,'$text','$date')"; // формируем текст запроса
$res = mysql($query) or die(mysql_error()); // отправляем запрос
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 6.2.2012, 18:14; Ответить: Kuchuluk
Сообщение #7


блин, такая тупая ошибка оказалась))) оказывается в запросе после $author апостроф не стоял. спасибо большое!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 6.2.2012, 18:49; Ответить: matroskin8
Сообщение #8


Пожалуйста ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 9.3.2012, 16:12; Ответить: Kuchuluk
Сообщение #9


Здравствуйте еще раз.
делаю вот такой запрос на вывод из тыблицы БД:

$result0 = mysql_query("SELECT id, name, mini_biography, mini_portrait FROM authors WHERE cat='$cat'",$db);

вроде все написано правильно, но выдает такую синтаксическую ошибку - Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in Z:homelocalhostwwwhavebookview_cat.php on line 48 - именнов этой строке.
переменная cat передается в этот файл методом GET, но ее я уже до этого вывел в простую переменную $cat. не пойму в чем ошибка, запрос же правильный.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 9.3.2012, 16:23; Ответить: matroskin8
Сообщение #10


Где-то перед этой строкой, скорее всего, не закрыта инструкция, т.е., в конце строки пропущена точка с запятой. На сам запрос не ругается.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыBropush - Твой бро в монетизации через Push-уведомления
28 bropush 11194 Вчера, 12:52
автор: bropush
Открытая тема (нет новых ответов) Через какой браузер и как можно найти в кэшэ браузера видео
10 Room 1929 23.3.2024, 7:41
автор: Room
Открытая тема (нет новых ответов) Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на первый заказ.
Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на п
6 stu999 1551 21.3.2024, 20:45
автор: stu999
Открытая тема (нет новых ответов) Если статья не в индексе Google - она уникальна или нет?
2 uahomka 796 20.3.2024, 11:17
автор: Vmir
Открытая тема (нет новых ответов) XMLSeo - поисковая выдача Яндекс, Wordstat, Google, Bing, DuckDuckGo через API
0 Malpertu36 1533 25.12.2023, 19:34
автор: Malpertu36


 



RSS Текстовая версия Сейчас: 28.3.2024, 19:45
Дизайн