За последние 24 часа нас посетил 22991 программист и 1229 роботов. Сейчас ищут 735 программистов ...

как сравнить две строковые переменные?

Тема в разделе "Прочие вопросы по PHP", создана пользователем Сорока, 16 фев 2006.

  1. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    помогите начинающему программисту!! :D
    Необходимо сравнить две строковые переменные $a и $b
    была попытка сделать так if($a==$b)
    но она провалилась :?
     
  2. Danilevsky

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

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    видимо переменные и есть разные :)
     
  3. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    точно не разные. Я специально для того, чтобы проверить одинаковое значение им присвоила.
     
  4. Nimous

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

    С нами с:
    5 фев 2006
    Сообщения:
    64
    Симпатии:
    0
    Адрес:
    Москва
    Код в студию.
     
  5. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    Хорошо, вот код:
    <html>
    <head>
    <title>result</title>
    <body>
    <?php
    $button=$HTTP_POST_VARS['button'];
    $fsurname=$HTTP_POST_VARS['fsurname'];
    $fsurname=trim( $fsurname);
    $db = @mysql_connect('localhost','root');
    if(!$db)
    {
    echo "не могу подключиться к серверу";
    echo "ERROR".mysql_errno()." ".mysql_error()."\n";
    exit;
    }
    mysql_select_db('friends',$db);
    if ($button=="next")
    {
    $result=mysql_query("select * from fio order by surname asc");
    $num=mysql_num_rows($result);
    $row=mysql_fetch_assoc($result);
    if($fsurname==$row['surname'])
    {
    echo $row['surname'];
    }
    else
    {
    echo 'ничего нет';
    }
    }
    ?>
    </body>
    </html>
    Переменная $fsurname поступает из формы в файле хтмл next - это кнопка
     
  6. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    сама таблица :
    create table fio
    (surnameid int unsigned not null auto_increment primary key,
    surname char(50) not null);

    insert into fio values
    (null,Putin),
    (null,sorokin),
    (null,Anais);
     
  7. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    а все-таки это безумство с моей стороны бало закалачивать сюда код :)
     
  8. Nimous

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

    С нами с:
    5 фев 2006
    Сообщения:
    64
    Симпатии:
    0
    Адрес:
    Москва
    Ну и что конкретно в приведённом творении работает не так?
    Началось всё вот так:
     
  9. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    PHP:
    1.  $result=mysql_query('select * from fio where surname="' .$fsurname. '"');
    так, думаю, будет правильнее :)
     
  10. Nimous

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

    С нами с:
    5 фев 2006
    Сообщения:
    64
    Симпатии:
    0
    Адрес:
    Москва
    simpson
    Улучшать приведённый код можно до бесконечности.
    Напр.

    $result=mysql_query('select * from fio where surname="' .$fsurname. '" LIMIT 1');

    а после $row=mysql_fetch_assoc($result);
    Поставить, например $row = $row[0], дабы потом не искать в индексном массиве
    ключа surname.
    ....
    И убрать $num=mysql_num_rows($result); за ненадобностью.
     
  11. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    согласен.

    зы: разве mysql_fetch_assoc вернет нумерованный массив?
    тогда уж mysql_fetch_row или mysql_fetch_array.

    к тому же $row[0] при таком запросе вернет surnameid.
     
  12. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    это здесь осталось случайно после всех преобразований :lol:
    а не работает именно эта строка if($fsurname==$row['surname'])
    не сравнивается и все.
    никакой ошибки не выдает , а только выходит на альтернативу и все :(
     
  13. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Сорока
    вам стОит почитать про работу с базой данных.
     
  14. Nimous

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

    С нами с:
    5 фев 2006
    Сообщения:
    64
    Симпатии:
    0
    Адрес:
    Москва
    Ай.
    Совсем вы меня запутали.
    У меня все DB-объекты возвращают нумерованный массив по количеству строк выборки.
    Совсем уже разучился с оригинальными функциями работать;)
     
  15. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    а вообще это упрощенный код сам скрипт должен быть другой. Просто проверяя что же конкретно не работает упростила донельзя. Выяснила, что именно не хочет сравнивать. вот и решила написать сюда.))
     
  16. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    этим запросом:
    Код (Text):
    1. select * from fio order by surname asc
    вы выбираете все записи из таблицы.
    а этой строкой:
    Код (Text):
    1. $row=mysql_fetch_assoc($result);
    берете только лишь одну запись из результа.
     
  17. Nimous

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

    С нами с:
    5 фев 2006
    Сообщения:
    64
    Симпатии:
    0
    Адрес:
    Москва
    Опоздал
     
  18. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    вы предлагаетет что надо сравнивать средствами мускула?
    Я раньше считала, что это лишнее. Думала, что проще сравнить так.
     
  19. Nimous

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

    С нами с:
    5 фев 2006
    Сообщения:
    64
    Симпатии:
    0
    Адрес:
    Москва
    Всё, что можно делать средствами БД, нужно делать именно так.
     
  20. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    вы пропустили мое сообщениеЮ,где я писала, что упростила скрипт донельзя, чтобы выяснить что же конкретно не работает.
    Не работает именно операция сравнения.
    млжет мне стоит заколоитьт сюда тогда исходный стрипт, чтобы никого не путать :?:
     
  21. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    нет, этого делать не нужно.

    сообщение я ваше не пропустил.
    а в своем ответе показал вам, что работа с базой у вас неправильная.
     
  22. Nimous

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

    С нами с:
    5 фев 2006
    Сообщения:
    64
    Симпатии:
    0
    Адрес:
    Москва
    Заколотите ту часть, где выбирается из БД и обрабатывается результат выборки.
     
  23. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    сделай вот так и результат сюда:
    PHP:
    1.  
    2. <?
    3. ...
    4. print("[".$fsurname."][".$row['surname']."]");
    5. if($fsurname==$row['surname']) { ...
    6. ?>
    7.  
     
  24. Сорока

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

    С нами с:
    16 фев 2006
    Сообщения:
    81
    Симпатии:
    0
    if ($button=="next")
    {
    $result=mysql_query("select * from fio order by surname asc");
    $num=mysql_num_rows($result);
    $i=0;
    do
    {
    $row=mysql_fetch_assoc($result);
    $i++;
    }
    while($fsurname!=$row['surname'] && $i<$num);
    if($i==$num)
    {
    echo '<table><form action="test.php" method="post"><tr><td><input type=submit name=button value="pre"></td><td><input type=text size=20 value=" '.$fsurname.' " name=fsurname></td><td><input type=submit name=button value="next"></td><td><input type=submit name=button value="plus"></td><td><input type=submit name=button value="delete"></td><td><input type=submit name=button value="delete_all"></td></tr></form></table>';
    }
    else
    {
    if($row['surname']==$fsurname)
    {
    $row=mysql_fetch_assoc($result);
    echo '<table><form action="test.php" method="post"><tr><td><input type=submit name=button value="pre"></td><td><input type=text size=20 value=" '.$row['surname'].' " name=fsurname></td><td><input type=submit name=button value="next"></td><td><input type=submit name=button value="plus"></td><td><input type=submit name=button value="delete"></td><td><input type=submit name=button value="delete_all"></td></tr></form></table>';
    }
    }
     
  25. Nimous

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

    С нами с:
    5 фев 2006
    Сообщения:
    64
    Симпатии:
    0
    Адрес:
    Москва
    Сорока
    PHP:
    1. <?
    2. if (isset($_POST["next"])){
    3.     $query = mysql_query("SELECT * FROM fio WHERE surname='".$fsurname."' LIMIT 1");
    4.     if(mysql_num_rows($query)){
    5.         //$result = mysql_fetch_assoc($query);
    6.         echo '$fsurname: '.$fsurname;
    7.     } else {
    8.         echo "Surname not found";
    9.     }
    10. }
    11. ?>
    Всё.
    И срочно читать про работу с БД.
    Немедленно.