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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Функция для удаления постов, не возвращает значение

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Coder1994
Отправлено: 21 Июня, 2011 - 13:30:37
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




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.
В чём проблема?

(Отредактировано автором: 21 Июня, 2011 - 13:31:10)

 
 Top
EuGen Администратор
Отправлено: 21 Июня, 2011 - 13:35:12
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




http://phpfaq[dot]ru/debug

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

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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Coder1994
Отправлено: 21 Июня, 2011 - 13:36:20
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




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

(Отредактировано автором: 21 Июня, 2011 - 13:45:36)

 
 Top
EuGen Администратор
Отправлено: 21 Июня, 2011 - 13:47:29
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ну вероятно дело в том, как Вы вызываете и обрабатываете результат функции.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Coder1994
Отправлено: 21 Июня, 2011 - 13:50:42
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




сделал вар дамп внутри самой функции - 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.         }

(Отредактировано автором: 21 Июня, 2011 - 13:51:02)

 
 Top
EuGen Администратор
Отправлено: 21 Июня, 2011 - 13:56:10
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Coder1994 пишет:
#
delete_posts($table = "forum_posts", $element_id = "theme_id");
#
echo $text;

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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Coder1994
Отправлено: 21 Июня, 2011 - 13:59:14
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




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.
---
Обрезает страницу.
 
 Top
EuGen Администратор
Отправлено: 21 Июня, 2011 - 14:02:26
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Идея, я думаю, очевидна (то, что Вы никак и ничему не присваиваете результат). Ошибки, думаю, все та же ссылка http://phpfaq[dot]ru/debug поможет исправить.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Coder1994
Отправлено: 21 Июня, 2011 - 14:04:46
Post Id


Частый гость


Покинул форум
Сообщений всего: 213
Дата рег-ции: Май 2010  
Откуда: Россия, Ростов-на-Дону


Помог: 3 раз(а)




EuGen пишет:
Идея, я думаю, очевидна (то, что Вы никак и ничему не присваиваете результат). Ошибки, думаю, все та же ссылка http://phpfaq[dot]ru/debug поможет исправить.

вставил в код

$text начала выводиться))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB