За последние 24 часа нас посетили 15477 программистов и 1606 роботов. Сейчас ищут 869 программистов ...

хелп. не пойму в чем проблема.

Тема в разделе "PHP для новичков", создана пользователем harek13, 4 мар 2011.

  1. harek13

    harek13 Активный пользователь

    С нами с:
    4 ноя 2010
    Сообщения:
    26
    Симпатии:
    0
    доброе время суток. сразу к проблеме.
    есть такой вот кусок кода.

    PHP:
    1. echo "<pre>";
    2.     print_r($_POST);
    3. echo "</pre>";
    4.  
    5.     // Добавление всех ошибок в массив
    6.     $error = array();
    7.     foreach($all as $key => $value){
    8.         if ($value > '0'){
    9.             $error [] = $my->err_to_str($value);
    10.         }
    11.     }
    12.  
    13.  
    14. echo "<pre>";
    15.     print_r($_POST);
    16. echo "</pre>";
    выводит он следующее:
    PHP:
    1. [skype] => 34636
    в первом случае
    и:
    PHP:
    1. [skype] => 0
    во втором.

    [skype] - одно из значений массива $_POST.
    если убрать массив 'Добавление всех ошибок в массив' то все нормально - значение не теряется. в чем может быть проблема?
     
  2. harek13

    harek13 Активный пользователь

    С нами с:
    4 ноя 2010
    Сообщения:
    26
    Симпатии:
    0
    вот листинг err_to_str():

    PHP:
    1.     function err_to_str($num){
    2.         // Фатальные ошибки
    3.         $err[1]="Ошибка управления или попытка взлома системы. Администратору отправлено сообщение!";
    4.         $err[2]="Ошибка авторизации.";
    5.         $err[3]="Выберите страну и город";
    6.         $err[4]="Проверьте заполненные данные";    // модификация кода - нулевая длина
    7.         $err[5]="Проверьте заполненные данные"; // модификация кода - длина больше чем заявленно
    8.         $err[6]="Произошла ошибка при отправке письма. Пароль не изменен. Попробуйте заново";
    9.         $err[7]="Длина предложенной модели, марки не может быть больше 30";
    10.  
    11.         // Ошибки работы с SQL
    12.         $err[10]="Не удалось соединиться с БД";
    13.         $err[11]="Ошибка выполнения SQL-запроса";
    14.         $err[12]="Ошибка активации нового пароля";
    15.         $err[12]="Ошибка sql-запроса при отправке почты";
    16.  
    17.         // Ошибки добавления при регистрации
    18.         $err[20]="В числовые поля вводите только числа";
    19.         $err[21]="Логин не должен превышать 20 символов";
    20.         $err[22]="Длина пароля не меньше 6 символов";
    21.         $err[23]="Длина пароля не больше 20 символов";
    22.         $err[24]="Email не может превышать 30 символов";
    23.         $err[26]="Номер Scype не может превышать 50 символов";
    24.         $err[27]="Номер icq не может превышать 9 цифр";
    25.         $err[28]="Номер icq должен состоять только из цифр";
    26.         $err[29]="Указанный E-mail имеет недопустимый формат";
    27.         $err[31]="Пароль не может быть пустым полем";
    28.         $err[32]="Логин не может быть пустым полем";
    29.         $err[33]="Email не может быть пустым полем";
    30.         $err[36]="Указанный Вами логин уже занят";
    31.         $err[37]="На этот Email уже зарегистрировано";
    32.         $err[38]="Длина логина не меньше 5 символов";
    33.  
    34.         // телефон
    35.         $err[25]="Номер телефона не может превышать 11 цифр";
    36.         $err[30]="Номер телефона должен состоять только из цифр";
    37.         $err[34]="Номер телефона не может быть пустым полем";
    38.         $err[35]="Номер телефона должен состоять из 11 цифр";
    39.  
    40.         // Ошибки при добавлении нового объявления
    41.         $err[51]="Неправильный формат года выпуска";
    42.         $err[52]="Выберите один из предложенных вариантов руля";
    43.         $err[53]="Цена не может быть пустым полем";
    44.         $err[54]="Цена не может превышать 99999999";
    45.         $err[55]="Цена не может быть меньше 1000";
    46.         $err[56]="Пробег указан больше 999999";
    47.         $err[57]="Объем двигателя не может быть больше 99999";
    48.         $err[58]="Мощность двигателя не может быть больше 999";
    49.         $err[59]="Длина поля дополнительной информации не может быть больше 2500 символов";
    50.         $err[60]="Длина поля место осмотра не может быть больше 50 символов";
    51.         $err[61]="Выберите марку и/или модель";
    52.         $err[62]="Год выпуска не может быть пустым полем";
    53.         $err[63]="Неверно заполненно время для звонка";
    54.         $err[64]="Неккоректное изображение";
    55.  
    56.         // Ошибки для web-сервера
    57.         $err[101]="Ошибка выполнения SQL-запроса";
    58.  
    59.  
    60.         // Отправка ошибки администратору
    61. //        if($this->DEBUG_LEVEL >= $num) $this->mail_err($err[$num]);
    62.  
    63.         // Возврат текста ошибки
    64.         return($err[$num]);
    65.     }
     
  3. harek13

    harek13 Активный пользователь

    С нами с:
    4 ноя 2010
    Сообщения:
    26
    Симпатии:
    0
    Directive:register_globals Local Value:Off Master Value:Off
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    попробуй if ($value > 0){ без кавычек
     
  6. gorbenko.alex

    gorbenko.alex Активный пользователь

    С нами с:
    15 мар 2011
    Сообщения:
    2
    Симпатии:
    0
    if ($value > '0') :

    если ($value > srting)

    ' ' and " " - это строки ! условие сравнения значения со строкой
     
  7. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    harek13
    Лады, и при чем тут массив _POST?
     
  8. harek13

    harek13 Активный пользователь

    С нами с:
    4 ноя 2010
    Сообщения:
    26
    Симпатии:
    0
    тут баг епт. вы что такие все? сравнение и со строкой и с цифрой не проходит. причем пост - я и сам не пойму каким боком идет влияние на массив пост - если работа идет совсем с другим массивом. я такое еще не встречал - но тут реальный баг. спасибо всем за помощь.
     
  9. runner

    runner Активный пользователь

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    посмотри в какой момент у тебя изменяется значение переменной
    PHP:
    1.  
    2.  echo "<pre>";
    3.       print_r($_POST);
    4.   echo "</pre>";
    5.  
    6.       // Добавление всех ошибок в массив
    7.       $error = array();
    8.       foreach($all as $key => $value){
    9.       echo $_POST['skype'].' key='."$key<br>";
    10.           if ($value > '0'){
    11.               $error [] = $my->err_to_str($value);
    12.           }
    13.       }
    14.  
    15.  
    16.   echo "<pre>";
    17.       print_r($_POST);
    18.   echo "</pre>";
    19.