Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: POST запрос
Форумы портала PHP.SU » » Вопросы новичков » POST запрос

Страниц (1): [1]
 

1. EnerdzaiseR - 27 Ноября, 2011 - 16:49:52 - перейти к сообщению
Доброго времени суток. Столкнулся с проблемкой при создании комментариев.

Есть код:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. $comment=mysql_query("SELECT
  3. comments.comment,
  4. comments.user_name,
  5. comments.year,
  6. p.id
  7. FROM comments
  8. JOIN peoples p ON p.id = comments.id_people
  9. WHERE p.name_ru LIKE '".$_GET['act']."'
  10. ORDER BY p.id DESC", $db);
  11. while ($tables = mysql_fetch_assoc($comment)) {
  12.         echo $tables['user_name'].'<br/>';
  13.         echo $tables['comment'].'<br/>';
  14.         echo $tables['year'];
  15.         $people_id=$tables['id'];
  16. }
  17. ?>
  18. <form action="" method="POST">
  19. <input type="text" name="login" /><br/>
  20. <input type="text" name="email" id="" /><br/>
  21. <textarea name="comment"></textarea><br/>
  22. <input type="submit" value="Комментировать" />
  23. <?
  24. if(!empty($_POST['login']) && !empty($_POST['email']) && !empty($_POST['email'])){
  25.         mysql_query("INSERT INTO comments (comment, id_film, id_people, user_name, email, year) VALUES ('".$_POST['comment']."', 0, ".$people_id.", '".$_POST['login']."', '".$_POST['email']."', '".date("Y-m-d")."')",$db);
  26. }
  27. ?>
  28. </form>
  29. <br/>


Все работает нормально, но при нажатии на кнопку комментировать то, что только что я добавил не отображается. Добавляю следующую запись, выводится предыдущая. Подскажите пожалуйста как решить проблему.
2. Bio man - 27 Ноября, 2011 - 17:05:50 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. if(!empty($_POST['login']) && !empty($_POST['email']) && !empty($_POST['email'])){
  3.         mysql_query("INSERT INTO comments (comment, id_film, id_people, user_name, email, year) VALUES ('".$_POST['comment']."', 0, ".$people_id.", '".$_POST['login']."', '".$_POST['email']."', '".date("Y-m-d")."')",$db);
  4. }
  5. $comment=mysql_query("SELECT
  6. comments.comment,
  7. comments.user_name,
  8. comments.year,
  9. p.id
  10. FROM comments
  11. JOIN peoples p ON p.id = comments.id_people
  12. WHERE p.name_ru LIKE '".$_GET['act']."'
  13. ORDER BY p.id DESC", $db);
  14. while ($tables = mysql_fetch_assoc($comment)) {
  15.         echo $tables['user_name'].'<br/>';
  16.         echo $tables['comment'].'<br/>';
  17.         echo $tables['year'];
  18.         $people_id=$tables['id'];
  19. }
  20. ?>
  21. <form action="" method="POST">
  22. <input type="text" name="login" /><br/>
  23. <input type="text" name="email" id="" /><br/>
  24. <textarea name="comment"></textarea><br/>
  25. <input type="submit" value="Комментировать" />
  26. </form>
  27. <br/>
3. EnerdzaiseR - 27 Ноября, 2011 - 17:11:35 - перейти к сообщению
На 3 строке ошибка, так как $people_id задается ниже, на 18 строчке.
4. Bio man - 27 Ноября, 2011 - 17:20:49 - перейти к сообщению
а вы выберете его до ошибки. $people_id это последняя запись таблицы, судя по коду.
PHP:
скопировать код в буфер обмена
  1. $sql = "SELECT LAST(`id`) FROM peoples";
  2. $res = mysql_query($sql);
  3. $people_id = mysql_result($res, 0);
5. EnerdzaiseR - 27 Ноября, 2011 - 17:38:04 - перейти к сообщению
Сделал вот так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?
  2. if(!empty($_POST['login']) && !empty($_POST['email']) && !empty($_POST['comment'])){
  3.        mysql_query("INSERT INTO comments (comment, id_film, id_people, user_name, email, year) VALUES ('".$_POST['comment']."', 0, ".$_POST['id'].", '".$_POST['login']."', '".$_POST['email']."', '".date("Y-m-d")."')",$db);
  4. }
  5. $comment=mysql_query("SELECT
  6. comments.comment,
  7. comments.user_name,
  8. comments.year,
  9. p.id
  10. FROM comments
  11. JOIN peoples p ON p.id = comments.id_people
  12. WHERE p.name_ru LIKE '".$_GET['act']."'
  13. ORDER BY p.id DESC", $db);
  14. while ($tables = mysql_fetch_assoc($comment)) {
  15.        echo $tables['user_name'].'<br/>';
  16.        echo $tables['comment'].'<br/>';
  17.        echo $tables['year'];
  18.        $_POST['id']=$tables['id'];
  19. }
  20. ?>
  21. <form action="" method="POST">
  22. <input type="text" name="login" /><br/>
  23. <input type="text" name="email" id="" /><br/>
  24. <textarea name="comment"></textarea><br/>
  25. <input type="submit" value="Комментировать" />
  26. </form>
  27. <br/>


Обратите внимание на 18 строку.

При добавлении пишет ошибку

Notice: Undefined index: id in O:\home\Dropbox\total\test\pages\actor_comment.php on line 3

Разве так нельзя?


P.S. people_id это id человека которому добавляем комментарий.
6. Bio man - 27 Ноября, 2011 - 17:45:56 - перейти к сообщению
ну, ошибка потому, что $_POST['id'] не определена. можно так:
Спойлер (Отобразить)
7. EnerdzaiseR - 27 Ноября, 2011 - 18:02:01 - перейти к сообщению
Выдает ошибку

Warning: Cannot modify header information - headers already sent by (output started at O:\home\Dropbox\total\test\options.php:1) in O:\home\Dropbox\total\test\pages\actor_comment.php on line 27

Пробовал еще так:

<script type="text/javascript">
document.location.href = "?url=<?=$_GET['url']?>&act=<?=$_GET['act']?>&page=comment#pag";
</script>

А в файле options.php ничего такого не находится

<?php
error_reporting(E_ALL);
ini_set('session.use_trans_sid', false); #Отключаем транс сид
ini_set('session.use_only_cookies', true); #Для сессий искользуются только куки
ini_set('allow_url_fopen', true); #Разрешить открывать файлы удаленно
ini_set('magic_quotes_gpc', false); #Отключить магические кавычки
ini_set('register_globals', false); #Отключить глобальные переменные
session_set_cookie_params(0, '/', '', false, true); #
?>
8. Bio man - 27 Ноября, 2011 - 18:08:20 - перейти к сообщению
код конечно ужасный. делай так:
PHP:
скопировать код в буфер обмена
  1.         <?
  2. if($_SERVER['REQUEST_METHOD'] == 'GET'){
  3.         $comment=mysql_query("SELECT
  4.       comments.comment,
  5.       comments.user_name,
  6.       comments.year,
  7.       p.id
  8.       FROM comments
  9.       JOIN peoples p ON p.id = comments.id_people
  10.       WHERE p.name_ru LIKE '".$_GET['act']."'
  11.       ORDER BY p.id DESC", $db);
  12.         while ($tables = mysql_fetch_assoc($comment)) {
  13.                 echo $tables['user_name'].'<br/>';
  14.                 echo $tables['comment'].'<br/>';
  15.                 echo $tables['year'];
  16.                 $people_id=$tables['id'];
  17.         }
  18.         ?>
  19.         <form action="" method="POST">
  20.         <input type="text" name="login" /><br/>
  21.         <input type="text" name="email" id="" /><br/>
  22.         <textarea name="comment"></textarea><br/>
  23.         <input type="submit" value="Комментировать" />
  24.         <?
  25. }
  26.         if(!empty($_POST['login']) && !empty($_POST['email']) && !empty($_POST['email'])){
  27.                 mysql_query("INSERT INTO comments (comment, id_film, id_people, user_name, email, year) VALUES ('".$_POST['comment']."', 0, ".$people_id.", '".$_POST['login']."', '".$_POST['email']."', '".date("Y-m-d")."')",$db);
  28.         }
  29.         header('Location: '.$_SERVER['PHP_SELF']);
  30.         ?>
  31.         </form>
  32.         <br/>

(Добавление)
не, не то написал. лень думать, но мой вариант с запросом по моему самый простой

 

Powered by ExBB FM 1.0 RC1