За последние 24 часа нас посетили 42456 программистов и 1816 роботов. Сейчас ищут 845 программистов ...

Не происходит сравнения строковых переменных

Тема в разделе "PHP для новичков", создана пользователем Delphin911, 1 авг 2017.

  1. Delphin911

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

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Народ, всю голову сломал. Есть файлик, в который из БД SQL выгружаются списки томов присутствующих на файловом хранилище. Во время формирования полей типа Select я считываю данные из этого файлика и в разных случаях пытаюсь выбрать из них только нужные.
    Скажем в текстовом файле есть в столбик
    vl11
    vl12
    vl13
    vl21
    vl22
    vl23
    vl24

    Мне нужно выбрать все кроме vl13 и мд21. В конце столбца есть пустая строка. Как ее убрать при выгрузке не знаю, поэтому убираю при загрузке в Select

    Код (Text):
    1. <?php
    2. $FileVars = fopen("C:\\inetpub\\wwwroot\\TestPHP\\VarLists\\VlList.txt", "r");
    3. while(!feof($FileVars))
    4. {
    5.     $Line = fgets($FileVars);
    6.     if ($Line!="" && $Line!=="vl13" && $Line!=="vl21")
    7.     echo '<option>'.$Line.'</option>';
    8. }
    9. fclose($FileVars);
    10. ?>
    Так вот первый параметр отфильтровывание пустой строки отрабатывает. А отфильтровывание значений vl13 и vl21 нет. В чем может быть проблема?
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    ну... чего же стока велосипедов то?
    1. А нельзя из PHP к БД подключиться и по человечески забрать данные?
    2. скорее всего в файле в строках присутствуют "невидимые" но значащие символы, типа /r /n и прочие
    3. А может вообще в коде фильтрования ошибки.... )

    или тут разговор о
    Код (Text):
    1. $Line!=="vl13"
    ? так у вас типы наверное не совпадают... сделайте сравнение !=
     
  3. Delphin911

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

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Сначала было != , а потом когда не добился чтобы это заработало попробовал !==.
    Из БД каждый раз выгружать очень сильно тормозит. Поэтому и сделал, что из БД в эти файлики выгружается по шедулеру, а уже сайт использует эти файлики.
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    если не заработает то в следующий раз будете !==== использовать? ))))
     
  5. Delphin911

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

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Смешно, но не информативно. Это уже были танцы с бубном, т.к. непонятно почему $Line!="" работает, а $Line!='Vl13' не работает. Вот я и начал думать, что там что-то с переменными не то.
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    информативно - см. пункт 2 первого ответа
    для проверки вставьте новую строку и впишите свои vl12
    а все же почему файл? Если долгий запрос - можно результат в таблицу какую то и оттуда использовать с всей мощью SQL
    или почему такие условия, формируйте список в файл добавив сразу в SQL отсеивание ненужных элементов
     
  7. Delphin911

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

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Честно говоря не понял куда вставить? Хотя наверное понял. Создал файл вручную и вручную вписал туда тома включая те, которые нужно по условию исключить. Не работает. Снова не исключает их.
    Возможно к этому и приду, если не разберусь с фильтром. Просто очень много тогда файликов создавать придется.
     
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    или лыжи не едут... или ... п2
    не веришь?
    PHP:
    1. $FileVars = fopen("C:\\inetpub\\wwwroot\\TestPHP\\VarLists\\VlList.txt", "r");
    2. while(!feof($FileVars)){
    3.     $Line = fgets($FileVars);
    4.     $ClearLine = trim($Line);
    5.      var_dump($Line);
    6. echo " =>";
    7.     var_dump($ClearLine);
    8.     if ($ClearLine!="" && $ClearLine!=="vl13" && $ClearLine!=="vl21")
    9.     echo '<option>'.$ClearLine.'</option>';
    10. }
    11. fclose($FileVars);
     
  9. Delphin911

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

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Я же говорю. Я создал такой файл вручную и вручную вписал туда список томов. там точно никаких спецсимволов. Не работает.
     
  10. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    ты приведенный код пробывал? var_dump смотрел забитых вручную ?
    удивишься - но и там они есть
     
  11. Delphin911

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

    С нами с:
    18 дек 2015
    Сообщения:
    72
    Симпатии:
    0
    Код вписал. Не работает. Все равно все тома выводит.
     
  12. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    Я проверял - все норм. Var_dump что показывает то?