ФорумПрограммированиеPHP для идиотов → PHP: Частичное совпаение переменных

PHP: Частичное совпаение переменных

  • ibizn

    Сообщения: 44 Репутация: N Группа: Кто попало

    Spritz 14 апреля 2008 г. 8:35

    Здравствуйте! Есть такой код:


    $fn = fopen("db_nm.txt", "r");
    while (!feof($fn))
    {
    $fr1=fgets($fn);
    echo $fr1;
    $fr2=fgets($fn);
    echo $fr2;
    if ($fr1 == $_POST['nm'] and $fr2 == $_POST['ps'])
    {
    echo "<br>Совпадение найдено !";
    }
    else
    {
    echo "<br>Нет совпадений!<br>";
    }
    echo "<br> ——————- <br>";
    }
    По идее, ондолжен считывать пары значений и сравнивать их с переданными из формы в массиве $_POST

    НО: Когда в проверемых данных есть вхождения (например пользователь ввел "кот", он сравнил со словом "котик" из файла и выдал - Совпадение найдено!) то принмает их за совпадение. Пробывал вместо = даже == - так вообще ни одного совпадения.

    Помогите решить эту проблему, так как сам в PHP новичок.
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 14 апреля 2008 г. 8:54, спустя 19 минут 21 секунду

    = и == это совершенно разные вещи.
    Если тебе надо сравнить что-то, то используешь ==, если надо присвоить переменной какое-то значение, то =.
    Вместо and используй && аналагично с or, юзай ||.
    from TRIAL with LOVE
  • ibizn

    Сообщения: 44 Репутация: N Группа: Кто попало

    Spritz 14 апреля 2008 г. 9:01, спустя 6 минут 45 секунд

    Спасибо за ответ, но когда я использую == то он вообще не находит совпадений, хотя я заведомо ввожу данные, которые есть в файле. Почему так? Если интересно, могу выложить все файлы, которые построил. Посмотрите?
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 14 апреля 2008 г. 9:10, спустя 9 минут 13 секунд


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

    ЗЫ. Надо бы сделать, чтоб когда код вставляешь по умолчанию тип был PHP
    а то задрали эти мелкие буковки
  • ibizn

    Сообщения: 44 Репутация: N Группа: Кто попало

    Spritz 14 апреля 2008 г. 9:17, спустя 6 минут 50 секунд

    Var_dump? Не объясните поподробнее… Может выражения оличаются наличим символа перевода каретки?
  • welder

    Сообщения: 2945 Репутация: N Группа: в ухо

    Spritz 14 апреля 2008 г. 9:19, спустя 1 минуту 28 секунд

    + заодно обрати внимание на знаки переноса строки
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо
  • ibizn

    Сообщения: 44 Репутация: N Группа: Кто попало

    Spritz 14 апреля 2008 г. 9:32, спустя 13 минут 1 секунду

    Понял, применил - но почему-то у меня в ех переменных, которые формируются из файла в конце стоит пробел (или символ какой, который выглдит как продел). Применяю к тому, что записано в файле trim($моя пер-ная) - не исчезает - значит не пробел, а смвол перевода строки. Как быть не подсажите?

    P.S.: В следующий раз код как-ниь по другому выделю - покрупнее :)
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 14 апреля 2008 г. 9:34, спустя 2 минуты 6 секунд


    trim($моя пер-ная) - не исчезает
    код в студию
  • ibizn

    Сообщения: 44 Репутация: N Группа: Кто попало

    Spritz 14 апреля 2008 г. 9:38, спустя 3 минуты 38 секунд

    Это enter.php
    Как раз тот, который обрабатывает днные полученные от пользователя.

    <?php
    echo "Данные введенные пользователем:".$_POST['nm']." и ".$_POST['ps']."<br><br>";
    $fn = fopen("db_nm.txt", "r");
    while (!feof($fn))
    {

    trim($fr1=fgets($fn));
    echo $fr1;
    trim($fr2=fgets($fn));
    echo $fr2;
    if ($fr1 == $_POST['nm'] and $fr2 == $_POST['ps'])
    {
    echo "<br>Совпадение найдено !";
    }
    else
    {
    echo "<br>Нет совпадений!<br>";
    }
    echo "<br> ——————- <br>";
    var_dump($_POST['nm']);
    var_dump($_POST['ps']);
    var_dump($fr1);
    var_dump($fr2);
    }
    ?>


  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 14 апреля 2008 г. 9:38, спустя 42 секунды

    Я так и знал.
    Читаем внимательно описание функции trim
    http://ru2.php.net/manual/ru/function.trim.php
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 14 апреля 2008 г. 9:40, спустя 1 минуту 46 секунд

    Попробуй сделать так $a = strip_tags(nl2br($your_text));
    И уже потом $a сравнивай.
    Насколько я помню у тебя в конце символ переноса строки должен быть.
    from TRIAL with LOVE
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 14 апреля 2008 г. 9:41, спустя 1 минуту 19 секунд

    TRIAL, левой ногой правое ухо удобно чесать?
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 14 апреля 2008 г. 9:43, спустя 1 минуту 30 секунд

    Нет, но как вариант можно хотя бы проверить будет работать или нет )))
    Хотя я не парюсь и порой юзаю такой вот ужас )))
    А вобще файлы зло, юзайте БД и будет вам счастье.
    from TRIAL with LOVE
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 14 апреля 2008 г. 9:45, спустя 1 минуту 58 секунд


    Нет, но как вариант можно хотя бы проверить будет работать или нет )))

    Какой нафиг вариант? Чел совершенно верно нашел функцию trim, которая ему нужна. Осталось только корректно ее применить.


    А вобще файлы зло, юзайте БД и будет вам счастье.

    да какое отношение это имеет к данной задаче?

Пожалуйста, авторизуйтесь, чтобы написать комментарий!