Помогите с функцией

Тема в разделе "PHP", создана пользователем ilya-bunker, 5 апр 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ilya-bunker

    ilya-bunker Создатель

    Регистр.:
    5 май 2009
    Сообщения:
    48
    Симпатии:
    6
    ...первый раз в жизни делаю функцию...
    собственно подключаюсь к базе, всё как положено

    PHP:
    function getusertype() {
        if (
    $row['rang'] === 3){
            return 
    "admin"; }
        if (
    $row['rang'] === 2){
            return 
    "manager"; }
        if (
    $row['rang'] === 1){
            return 
    "user"; }
        else{
                   return 
    "Ошибка: тип клиента не определен";
                     }
    }
    в столбце rang могут быть 3 значения: admin, manager, user

    echo $row['rang']; - показывает значения (1,2 или 3)
    echo getusertype(); - выдает "Ошибка: тип клиента не определен" т.е. ничего не показывает

    где ошибка? нужно через эхо получить и показать тип клиента
     
  2. lobzik

    lobzik

    Регистр.:
    8 авг 2006
    Сообщения:
    311
    Симпатии:
    49
    Переменная $row не определена в области видимости функции. Что бы работало надо вызывать так:
    PHP:
    echo getusertype($row)
    а сама функция должна выглядеть так:
    PHP:
    function getusertype($row) { ... }
    p.s. вопрос возник из-за того, что вы не изучили оф. мануал, этим вы нарушаете правила раздела....
     
  3. ilya-bunker

    ilya-bunker Создатель

    Регистр.:
    5 май 2009
    Сообщения:
    48
    Симпатии:
    6
    спасибо, действительно что то я тупанул))) наверно из-за недосыпа, прошу прощение за потраченое на меня время))
     
  4. legendar

    legendar Писатель

    Регистр.:
    9 дек 2008
    Сообщения:
    9
    Симпатии:
    1
    можно еще сделать
    global $row;
    внутри функции.
     
  5. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Нафига? Эта функция будет вызываться в разных местах и из разных переменных...
    кстати лучше не передавать массив в функцию, а сделать так.
    PHP:
    function getusertype($rang) { 
        if (
    $rang === 3){ 
            return 
    "admin"; } 
        if (
    $rang === 2){ 
            return 
    "manager"; } 
        if (
    $rang === 1){ 
            return 
    "user"; } 
        else{
            return 
    "Ошибка: тип клиента не определен"
        } 
    }
    // вызывать так
    getusertype($row['rang']);
    Кстати если клиент не определен наверное это гость :)
     
  6. wukill

    wukill Создатель

    Регистр.:
    26 апр 2009
    Сообщения:
    10
    Симпатии:
    0
    это один из способов... :)
    вот пример использования...
    PHP:
    $foo 1;
    $bar 2;
    $res $foo $bar;
    echo 
    $res;  // 3
    PHP:
    $foo 1;
    $bar 2;
    function 
    MyFunction($foo) {
        global 
    $bar;
        
    $res $foo $bar;
        return 
    $res;
    }
    echo 
    MyFunction($foo); // 3
    PHP:
    //php5 oop
    $foo 1;
    $bar 5;


    class 
    MyClass {


        protected 
    $var TRUE;
        protected 
    $bar 0;
        private 
    $res 0;


        
    // конструкор
        
    public function __construct($bar) {
            
    $this->bar $bar;
        } 
    // __construct


        
    public function increment($foo){
            while (
    $this->var){
                if (
    $this->res $this->bar)
                    { 
    $this->res += $foo; }
                else
                    { break; }
                } 
    //while
        
    // increment


        
    public function res() {
            return 
    $this->res
        } 
    // res
    // class


    $MyObj = new MyClass($bar);
    $MyObj->increment($foo);
    echo 
    $MyObj->res(); //5
     
  7. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Это коню понятно, но судя по тому, что функция определяет права доступа глупо было бы брать переменную через global, запутаешься потом... Да и не факт, что ранг не будет определен после функции.
    PHP:
    function getrang(){
        global 
    $rang;
        
    //.....
    }
    //.......
    $rang=1;
    getrang();
    Нафиг ведь пошлет...
     
Статус темы:
Закрыта.