Проблемы с вызовом функции

  • Автор темы friend123
  • Дата начала

friend123

Guest
Проблемы с вызовом функции

Вот код:
WHILE ($row = mysql_fetch_assoc($result)){
IF($row['date']!=$olddate){
echo $row['date'];
sort_date();
}else{
sort_date();
}
}

Может я делаю ерунду: в функции записан большой код и чтобы в IF его (большой код) не писать дважды я вызываю функцию. В других языках проммирования есть оператор перехода goto, здесь он вроде не работает. У меня не выводит содержимое БД
 

Demiurg

Guest
1. зачем в двух ветках if вызывать одну и ту же функцию ? почему не вынести её за if ?
2. Что собственно делает эта функция ?
3. что такое $olddate ?
 

Fedor33

Guest
А что делает эта функция? Она действительно не принимает ни одного параметра?
Вообще, в чем проблема то?
 

friend123

Guest
Originally posted by Demiurg
1. зачем в двух ветках if вызывать одну и ту же функцию ? почему не вынести её за if ?
2. Что собственно делает эта функция ?
3. что такое $olddate ?
1. Я не могу вывести ее за циклом, структура будет в корне неверная
2. Функция вызывает таблицу с данными, взятыми из БД
3. Это не важно
 

Demiurg

Guest
>Я не могу вывести ее за циклом, структура будет в корне неверная
я разве говорил, про вынос за цикл ?

>Функция вызывает таблицу с данными, взятыми из БД
куда вызывает ? судя по тому, что она не принимает и не возвращает ничего, она должна делать что то не зависещее от вышеописаного цикла.

>Это не важно
важно
 

friend123

Guest
Originally posted by Fedor33
А что делает эта функция? Она действительно не принимает ни одного параметра?
Вообще, в чем проблема то?
У меня есть большой кусок кода. Я не хочу его писать и в else и в if дважды, поэтому и пробую функцией
Я вообще не знаю функцию мне надо использовать или что?
 

Fedor33

Guest
Твой вышенаписаный код равносилен следующему:

PHP:
whilte ($row = mysql_fetch_assoc($result))
{
    IF($row['date']!=$olddate) echo $row['date'];
    sort_date();
}
. Функция вызывает таблицу с данными, взятыми из БД
чего чего?
 

Demiurg

Guest
Fedor33
дай человеку поучиться, он должен был понять это сам.
 

friend123

Guest
Это-то понятно, но не здесь суть. На месте sort_date должны были бы быть большие куски кода. Я и пытаюсь их вызвать из одного места. Наверное это не функцией надо?
 

Demiurg

Guest
friend123
каждая функция что-то делает, ты так и не сказал, что делает твоя. Телепатов все равно не дождешься.
 

friend123

Guest
Просто моя функция позволяет не дублировать код, который должен быть на месте sort_date. Простой вызов кода
 

Макс

Старожил PHPClub
функция в данном случае вполне подходит, при условии что ты знаешь о том, что она использует локальное пространство имен
То есть внутри функции все внешние переменные не доступны.

Как вариант использовать [m]include[/m]
 

friend123

Guest
А-а-а, тогда ясно почему не работает. Все дело во внешних переменных
А нельзя сделать так, чтобы они были доступны, но в этом же файле
 

Макс

Старожил PHPClub
добавь перед своим кодом строки:
PHP:
error_reporting(E_ALL);
ini_set('display_errors', 'On');
Ошибки выводятся ?
 

Fedor33

Guest
а... может он в фунуции что-то с $row делает?
Тогда сделай после

function sort_data()
global $row;

но еще лучше

function sort_data(&$row)

и вызывай ее в своем цикле sort_data($row);
 

friend123

Guest
Да я работаю с $row, но также там есть переменные, которые передаются с помощью сессий
 

Макс

Старожил PHPClub
такие массивы как $_POST, $_GET, $_COOKIE, $_SESSION, $_REQUEST доступны внутри функции
ИМХО здесь достаточно простого include без использования функций
 

friend123

Guest
так если include, то значит подключать надо файл, мне в другом файле не удобно. Я попробовал: сессионные переменные не активизируются в функции
 
Сверху