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 :: Версия для печати :: Функция для удаления постов, не возвращает значение
Форумы портала PHP.SU » » Если скрипт не работает » Функция для удаления постов, не возвращает значение

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

1. Coder1994 - 21 Июня, 2011 - 13:30:37 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. function delete_posts($table, $element_id)
  4.         {
  5.         global $db;
  6.         foreach($_POST as $key => $value)
  7.                 {
  8.                 if (preg_match('#^posts_([0-9]*)$#', $key, $postnum) && $value = '1')
  9.                         {
  10.                         $delpost[] = $postnum[1];
  11.                         }
  12.                 }
  13.  
  14.         $result = $db->query("SELECT * FROM `$table` WHERE `$element_id` = '" . $_GET['id'] . "'")->num_rows;
  15.         if (isset($delpost) && is_array($delpost) && $result >= count($delpost))
  16.                 {
  17.                 $db->query("DELETE FROM `$table` WHERE `$element_id` = '" . $_GET['id'] . "' AND (`id` = '" . implode("'" . ' OR `id` = ' . "'", $delpost) . "') LIMIT " . count($delpost));
  18.                 $text = "Успешно удалено " . count($delpost) . " постов!<br />\n<a href=\"theme.php?id=$_GET[id]&p=last\">Перейти в тему!</a><br />\n";
  19.                 }
  20.           else
  21.                 {
  22.                 $text = "Вы не выбрали посты для удаления!<br />\n";
  23.                 }
  24.  
  25.         return $text;
  26.         }
  27.  
  28. ?>

Написал такую функцию, но она почему-то не возвращает переменную text.
В чём проблема?
2. EuGen - 21 Июня, 2011 - 13:35:12 - перейти к сообщению
http://phpfaq[dot]ru/debug

Coder1994 пишет:
if (isset($delpost) && is_array($delpost) && $result >= count($delpost))

подозреваю, что не входит сюда.
3. Coder1994 - 21 Июня, 2011 - 13:36:20 - перейти к сообщению
EuGen пишет:
http://phpfaq[dot]ru/debug

Coder1994 пишет:
if (isset($delpost) && is_array($delpost) && $result >= count($delpost))

подозреваю, что не входит сюда.

Посты удаляются нормально, но функция не возвращает $text
PHP:
скопировать код в буфер обмена
  1. function delete_posts($table, $element_id)
  2.         {
  3.         global $db;
  4.         foreach($_POST as $key => $value)
  5.                 {
  6.                 if (preg_match('#^posts_([0-9]*)$#', $key, $postnum) && $value = '1')
  7.                         {
  8.                         $delpost[] = $postnum[1];
  9.                         }
  10.                 }
  11.  
  12.         $result = $db->query("SELECT * FROM `$table` WHERE `$element_id` = '" . $_GET['id'] . "'")->num_rows;
  13.         if (isset($delpost) && is_array($delpost) && $result >= count($delpost))
  14.                 {
  15.                 $db->query("DELETE FROM `$table` WHERE `$element_id` = '" . $_GET['id'] . "' AND (`id` = '" . implode("'" . ' OR `id` = ' . "'", $delpost) . "') LIMIT " . count($delpost));
  16.                 $text = "Успешно удалено " . count($delpost) . " постов!<br />\n<a href=\"theme.php?id=$_GET[id]&p=last\">Перейти в тему!</a><br />\n";
  17.                 }
  18.           else
  19.                 {
  20.                 $text = "Вы не выбрали посты для удаления!<br />\n";
  21.                 }
  22.     if(empty($text))$text = "TEXT!!!";
  23.         return $text;

сделал так, ничего не изменилось.
Сделал var_dump($text), рез-тат - NULL
4. EuGen - 21 Июня, 2011 - 13:47:29 - перейти к сообщению
Ну вероятно дело в том, как Вы вызываете и обрабатываете результат функции.
5. Coder1994 - 21 Июня, 2011 - 13:50:42 - перейти к сообщению
сделал вар дамп внутри самой функции - return var_dump($text);
string(94) " - вот, что вывело
(Добавление)
EuGen пишет:
Ну вероятно дело в том, как Вы вызываете и обрабатываете результат функции.

PHP:
скопировать код в буфер обмена
  1. if ($user['access'] == 4 || $theme['autor'] == $user['id'])
  2.         {
  3.     include_once FNC_DIR.'/delete_posts.php';
  4.     delete_posts($table = "forum_posts", $element_id = "theme_id");
  5.         echo $text;
  6.         }
6. EuGen - 21 Июня, 2011 - 13:56:10 - перейти к сообщению
Coder1994 пишет:
#
delete_posts($table = "forum_posts", $element_id = "theme_id");
#
echo $text;

Ну вот. А переменная $text у Вас сама собой не появится. Надо так:
PHP:
скопировать код в буфер обмена
  1. $text = delete_posts($table, $element_id);
7. Coder1994 - 21 Июня, 2011 - 13:59:14 - перейти к сообщению
EuGen пишет:
Coder1994 пишет:
#
delete_posts($table = "forum_posts", $element_id = "theme_id");
#
echo $text;

Ну вот. А переменная $text у Вас сама собой не появится. Надо так:
PHP:
скопировать код в буфер обмена
  1. $text = delete_posts($table, $element_id);

выдало ошибку
This page contains the following errors:

error on line 13 at column 33: Encoding error
Below is a rendering of the page up to the first error.
---
Обрезает страницу.
8. EuGen - 21 Июня, 2011 - 14:02:26 - перейти к сообщению
Идея, я думаю, очевидна (то, что Вы никак и ничему не присваиваете результат). Ошибки, думаю, все та же ссылка http://phpfaq[dot]ru/debug поможет исправить.
9. Coder1994 - 21 Июня, 2011 - 14:04:46 - перейти к сообщению
EuGen пишет:
Идея, я думаю, очевидна (то, что Вы никак и ничему не присваиваете результат). Ошибки, думаю, все та же ссылка http://phpfaq[dot]ru/debug поможет исправить.

вставил в код

$text начала выводиться))

 

Powered by ExBB FM 1.0 RC1