За последние 24 часа нас посетили 18503 программиста и 1604 робота. Сейчас ищут 914 программистов ...

Почему не выполняется условие запроса

Тема в разделе "PHP для новичков", создана пользователем LAlexS, 19 янв 2012.

  1. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    В конце запроса стоит:
    Код (Text):
    1. (ts.session = '".$id_session."' OR ts.user = '".$user_ids."')
    но выполняет он только первое условие, а второе игнорирует

    Весь запрос:
    Код (Text):
    1. $user_exist = mysql_query("
    2. SELECT tp.onoff, tp.id, tp.model_name, tp.price_normal, tp.image_main, tp.parent_brand, tb.brand_name, tb.bid, tc.synonym, ts.product, ts.session, ts.user, ts.type, ts.id_cart, ts.cart, ts.qty
    3. FROM product_info AS tp LEFT JOIN brands AS tb ON (tp.parent_brand = tb.bid) LEFT JOIN categories AS tc ON (tp.parent_categorie = tc.id) LEFT JOIN shopping_cart AS ts ON (tp.id = ts.product)
    4. WHERE tp.onoff = 1 AND ts.cart = 1 AND (ts.session = '".$id_session."' OR ts.user = '".$user_ids."')")
    5. or die("Error! ".mysql_error());
     
  2. asokol

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

    С нами с:
    17 янв 2012
    Сообщения:
    162
    Симпатии:
    0
    OR - это или.

    Если дело не в этом, то скорей всего в том, что user_ids - это массив, и надо сделать вот так:
    Код (Text):
    1. "... OR `ts`.`user` IN (" . implode(',', $user_ids) . ")"
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    OR -> AND ? =)
     
  4. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    это не массив
     
  5. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Не понял
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    у тебя написано "то либо это"
    если хочешь чтобы обязательно выполнялись два условия, надо написать "то и это"
     
  7. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Я как раз хочу чтобы выполнялось "то либо это". Проблема в том, что если "то" не верно "это" не проверяется и игнорируется :(
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    что у тебя в $user_ids?
     
  9. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    переменная - целое число. специально выводил через echo, чтобы проверить, все нормально.
     
  10. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Я специально ввел в базу два товара, но чтобы $id_session получились разные, а $user_ids одинаковые. Вот и получилось, что одно из условий игнорируется.

    Что самое забавное, дальше идет вот этот код
    Код (Text):
    1. $user_list = mysql_fetch_array ($user_exist);
    2. $summ_list = mysql_query("SELECT SUM(".$user_list['price_normal']."*qty) FROM shopping_cart WHERE cart = '1' AND (session = '".$id_session."' OR user = ".$user_ids.")");
    Но тут все нормально.
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вместо
    Код (Text):
    1.  
    2.  
    3. $user_exist = mysql_query("
    4. SELECT tp.onoff, tp.id, tp.model_name, tp.price_normal, tp.image_main, tp.parent_brand, tb.brand_name, tb.bid, tc.synonym, ts.product, ts.session, ts.user, ts.type, ts.id_cart, ts.cart, ts.qty
    5. FROM product_info AS tp LEFT JOIN brands AS tb ON (tp.parent_brand = tb.bid) LEFT JOIN categories AS tc ON (tp.parent_categorie = tc.id) LEFT JOIN shopping_cart AS ts ON (tp.id = ts.product)
    6. WHERE tp.onoff = 1 AND ts.cart = 1 AND (ts.session = '".$id_session."' OR ts.user = '".$user_ids."')")
    7. or die("Error! ".mysql_error());
    напиши это и посмотри как выглядит запрос

    Код (Text):
    1.  
    2. $query = "
    3. SELECT tp.onoff, tp.id, tp.model_name, tp.price_normal, tp.image_main, tp.parent_brand, tb.brand_name, tb.bid, tc.synonym, ts.product, ts.session, ts.user, ts.type, ts.id_cart, ts.cart, ts.qty
    4. FROM product_info AS tp LEFT JOIN brands AS tb ON (tp.parent_brand = tb.bid) LEFT JOIN categories AS tc ON (tp.parent_categorie = tc.id) LEFT JOIN shopping_cart AS ts ON (tp.id = ts.product)
    5. WHERE tp.onoff = 1 AND ts.cart = 1 AND (ts.session = '".$id_session."' OR ts.user = '".$user_ids."')";
    6. echo "<pre>$query</pre>";
    7. $user_exist = mysql_query($query)
    8. or die("Error! ".mysql_error());
     
  12. asokol

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

    С нами с:
    17 янв 2012
    Сообщения:
    162
    Симпатии:
    0
    А есть ли при tp.onoff = 1 и ts.cart = 1 такие записи, которые содержат в ts.user то же, что и в $user_ids?
     
  13. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
     
  14. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    да
     
  15. LAlexS

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

    С нами с:
    12 авг 2010
    Сообщения:
    179
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Решил код переделать...

    UPD дело оказалось в чем-то другом. Сделал другую тему.

    Эта тема закрыта