Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 23 Май, 2012, 12:20:48

Страниц: [1]
Печать
Автор Тема: Функция работает не так, как надо  (Прочитано 1526 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Геннадий    ↓ 
24 Август, 2007, 01:09:17
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 29
Сила слова: 0

Я написал функию для вывода новостей:
 
Text
function ShowAllNews($page, $kol_n, $razdel) {
         if (empty($razdel)) {
       $result = mysql_query("SELECT * FROM `news` ORDER BY date_add DESC LIMIT $page, $kol_n");
         } else {
              $result = mysql_query("SELECT * FROM `news` WHERE razdel='$razdel' ORDER BY date_add DESC LIMIT $page, $kol_n");
         }
                     if (!empty($result)) {
        $rows = mysql_num_rows($result);
       
        for ($i=0; $i<=$rows; $i++) {
             $res_arr = mysql_fetch_array($result, MYSQL_ASSOC);
             $all_news['title'][$i]      = $res_arr['title'];
             $all_news['fname'][$i]      = $res_arr['fname'];
             $all_news['thumb'][$i]      = $res_arr['thumb'];
             $all_news['body'][$i]       = $res_arr['body'];
             $all_news['small_text'][$i] = $res_arr['small_text'];
             $all_news['part'][$i]       = $res_arr['part'];
             $all_news['who_add'][$i]    = $res_arr['who_add'];
             $all_news['date_add'][$i]   = $res_arr['date_add'];
             $all_news['views'][$i]       = $res_arr['views'];
        }
              return $all_news;
              } else {   
                       $my_notice = "Новостей в данной группе нет";
                       return $my_notice;
              }
     }   // end

Подскажите пожалуйста:
1) Почему если функции передать такие параметры ShowAllNews(0,10,"") то она ничего не выводит?
Я ведь написал if(empty($razdel)) {
2) Почему вогда новостей в какой либо группе нет и должна вернуться переменная my_notice с содержанием "Новостей в данной группе нет", я вывожу ее и вылазит надпись Array?
3) Подскажите что еще не правильно на ваш взгляд? Какие недостатки в функции? Слабые места?
Записан
md5    ↓ 
24 Август, 2007, 01:16:37 , спустя 7 минут 20 секунд
НЕ ХУЕТА! ХУЕТА!

выезд, апартаменты, массаж, стриптиз, подружки, дорого
Группа: в ухо

Карма: не нужна
Сообщений: 10494
Сила слова: 1.19

ты как вызываешь функцию?
 
надеюсь print ShowAllNews(0,10,""); ?
 
надо бы переписать эту функцию, очень все сложно =)
я думаю, примерно вот так:
PHP
function ShowAllNews($page, $kol_n, $razdel)
{
    if (empty($razdel))
    {
        $result = mysql_query("SELECT * FROM `news` ORDER BY date_add DESC LIMIT $page, $kol_n") or die(mysql_error());
    }
    else
    {
        $result = mysql_query("SELECT * FROM `news` WHERE razdel='$razdel' ORDER BY date_add DESC LIMIT $page, $kol_n") or die(mysql_error());
    }
   
    if (mysql_num_rows($result) > 0)
    {
        $all_news = array();
 
        while ($row = mysql_fetch_assoc($result))
        {
            $all_news[] = $row;
        }
 
        return ($all_news);
    }
    else
    {
        return ("Новостей в данной группе нет");
    }
}
Записан

8: Undefined variable: str
Файл: /home/pyha/pyha.ru/forum/bbcode/Xbb/Tags/Man.php
Строка: 18
adw0rd: мудень блять, я уже фиксить стал эту фигню :)
md5: вуахахахаха
vasa_c    ↓ 
24 Август, 2007, 01:16:53 , спустя 16 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

mysql_query возвращает значение типа Resource, которое ссылается на набор полученных записей. Количество записей в этом наборе может быть и 0, но сама Resource-переменная никогда empty не будет.
 
Вы возвращаете массив при успешном завершении и строку при неуспешном. Как вы проверяете результат?
Записан

md5    ↓ 
24 Август, 2007, 01:54:31 , спустя 37 минут 38 секунд
НЕ ХУЕТА! ХУЕТА!

выезд, апартаменты, массаж, стриптиз, подружки, дорого
Группа: в ухо

Карма: не нужна
Сообщений: 10494
Сила слова: 1.19

ага тут лучше
 
PHP

$news = ShowAllNews();
 
if (is_array($news))
{
    foreach($news as $key => $news_item)
    {
         // вывод новостей....
    }
}
else
{
    print $news;
}
 
Записан

8: Undefined variable: str
Файл: /home/pyha/pyha.ru/forum/bbcode/Xbb/Tags/Man.php
Строка: 18
adw0rd: мудень блять, я уже фиксить стал эту фигню :)
md5: вуахахахаха
vasa_c    ↓ 
24 Август, 2007, 02:09:46 , спустя 15 минут 15 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

По правильному нужно просто возвращать массив с новостями. Пустой, так пустой. А в основной программе, если хочется можно проверять размер и выводить какие-то строки.
Записан

Геннадий    ↓ 
24 Август, 2007, 02:16:13 , спустя 6 минут 27 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 29
Сила слова: 0


ты как вызываешь функцию?
надеюсь print ShowAllNews(0,10,\"\"); ?

Я получал массив $all_news и потом в зависимости от шаблона выводил в цикле.
В местах где нужно выводить заглавие, текст новости т.д. выводил соответствующий элемент массива
 

надо бы переписать эту функцию, очень все сложно =)
я думаю, примерно вот так:
Да, так проще, но я хочу чтобы функция возвращала массив, и я потом уже с ним что хотел то и делал.
 

mysql_query возвращает значение типа Resource, которое ссылается на набор полученных записей. Количество записей в этом наборе может быть и 0, но сама Resource-переменная никогда empty не будет.
Спасибо, не знал этого.
 

Вы возвращаете массив при успешном завершении и строку при неуспешном. Как вы проверяете результат?
is_array();
Записан
Геннадий    ↓ 
24 Август, 2007, 02:17:49 , спустя 1 минуту 36 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 29
Сила слова: 0


По правильному нужно просто возвращать массив с новостями. Пустой, так пустой. А в основной программе, если хочется можно проверять размер и выводить какие-то строки.
Вот примерно это я и хотел получить. Теперь переделывать буду...
Записан
Страниц: [1]
Печать
 

Перейти в: