За последние 24 часа нас посетили 17290 программистов и 2080 роботов. Сейчас ищут 1207 программистов ...

[IF] Как сделать несколько условий?

Тема в разделе "PHP для новичков", создана пользователем Danil005, 17 июл 2015.

  1. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Здравствуйте, как мне сделать несколько условий IF (То есть более 2):
    Код (PHP):
    1. $server = mysql_query("SELECT `server` FROM `users_profiles` WHERE `username`='$username'");
    2. $gr =mysql_query("SELECT * FROM `TAstopgrouptime` WHERE `username`='$username'");
    3.     {
    4.     while($row=mysql_fetch_assoc($gr))
    5.     {
    6.     $TAday=$row['day'];
    7.     $TAmonth=$row['month'];
    8.     $TAtime=$row['time'];
    9.     $TAQmin=$row['min'];
    10.     $TAyears=$row['years'];
    11.     }
    12.     } 
    13.     
    14.     $gr1 =mysql_query("SELECT * FROM `grouptime` WHERE `username`='$username'");
    15.     {
    16.     while($row=mysql_fetch_assoc($gr1))
    17.     {
    18.     $day=$row['day'];
    19.     $month=$row['month'];
    20.     $time=$row['time'];
    21.     $Qmin=$row['min'];
    22.     $years=$row['years'];
    23.     }
    24.     } 
    25.  
    26. if(($TAday >= $day) && ($TAmonth >= $month) && ($TAtime >= $time) && ($TAQmin >= $min) && ($TAyears >= $years) && ($server == 1)) {
    27.     
    28.     mysql_query("UPDATE `group` SET TA='User' WHERE `username`='$username'");
    29. }
    Не хочет работать. Пробовал "AND", "&&", " || ", без толку. Если сделать одно условие, работает. Кстати, попробовал сделать так
    Код (PHP):
    1. if($TAday >= $day) {
    2.     if($TAmonth >= $month) {
    3.         if($TAtime >= $time) {
    4.             if($TAQmin >= $Qmin) {
    5.                 if($TAyears >= $years) {
    6.                     if($server == 1) {
    7.                         mysql_query("UPDATE `group` SET TA='User' WHERE `username`='$username'");
    8.                     }
    9.                 }
    10.             }
    11.         }
    12.     }
    13. }
    14.  
    Так же бесполезно.
     
  2. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    да ни может этого быть.

    ты выведи в переменные результат, т.е. НЕ так:
    Код (PHP):
    1. if (($TAday >= $day) && ($TAmonth >= $month) && ...) 
    а вот так:
    Код (PHP):
    1. $one = ($TAday >= $day);
    2. $two = ($TAmonth >= $month);
    3. ... 
    а потом
    Код (PHP):
    1. if ($one && $two && ..) 
    и за одно проверь какие именно результаты записываются у тебя в переменные $one, $two и т.д.
    т.к. косяк в них, а не в том, что что-то не работает.
     
  3. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Сейчас попробую
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    проверить можно при помощи var_dump:
    Код (PHP):
    1. var_dump($one); 
     
  5. MusArtVlad

    MusArtVlad Новичок

    С нами с:
    17 июл 2015
    Сообщения:
    8
    Симпатии:
    0
    Код (PHP):
    1. <?
    2. $a=$q;
    3. $q="E";
    4. $b="88888";
    5.  
    6. if ($a=="E" AND $b=="88888"){
    7.     echo $a, $b;
    8. }else{
    9.     echo "123";
    10. }
    11. ?>
    Конечно бестолку. Ведь простой пример не сделать, чтобы перейти к сложному. (сарказм) В данном случае скрипт выведет 123, хотя $q = E и $a приравняли к результату $q. Дело не в условиях.
    Необходимо приравнять переменные к полученному результату:
    Код (PHP):
    1. $qu_day = ($TAday >= $day);
    2. $qu_month = ($TAmonth >= $month); 
    Я бы высчитывал дату рождения и делал бы условие:
    если разница между текущей секундой и датой рождения больше, чем (число), то делал бы запрос.
    Код (PHP):
    1. $db->query("UPDATE group SET TA='User' WHERE username='$username'");  /*
    2. 1. Переходи на mysqli (для этого нужно немного отредактировать config.php и изменить запросы) 
    3. 2. Не ставь ` перед и после называния столбца в таблице в запросе. Может, даёт какую-то видимость, но не рекомендуется.*/
     
  6. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Все, я сделал. Как и сказал @VLK, дело было в переменных.
    Мне нужно было от реального времени к времени, которое было занесено в другую таблицу.

    Код (PHP):
    1. $three = ($time >= $TAtime);
    2.  
    Вот таким образом, а не оборот. Спасибо всем за помощь. :)
     
  7. MusArtVlad

    MusArtVlad Новичок

    С нами с:
    17 июл 2015
    Сообщения:
    8
    Симпатии:
    0
    Делай запросы на mysqli.
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    А если я скажу, что:
     
  9. MusArtVlad

    MusArtVlad Новичок

    С нами с:
    17 июл 2015
    Сообщения:
    8
    Симпатии:
    0
    Может быть. Но phpStorm ругается на такие `кавычки`. ± Где-то читал, что они не требуются.
     
  10. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.594
    Симпатии:
    1.764
    Они не требуются, если имена полей не совпадают с ключевыми словами mysql. А если есть, к примеру, поле order, то без них его никак в запросе использовать невозможно. Или таблица order (что вполне вероятно, учитывая, что кроме "порядок" это слово ещё обозначает "заказ")
     
  11. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Просто нужно указать тип соединения с sql-сервером в настройках проекта.