За последние 24 часа нас посетили 17933 программиста и 1649 роботов. Сейчас ищут 1653 программиста ...

Выборка и групповое присвоение

Тема в разделе "PHP и базы данных", создана пользователем wap3t, 8 мар 2018.

  1. wap3t

    wap3t Новичок

    С нами с:
    8 мар 2018
    Сообщения:
    5
    Симпатии:
    0
    Добрый день! Ломаю голову два дня, не пойму как сделать что то на подобии групповых сражений.
    Алгоритм такой:
    1 - выбор локации(при переходе в локацию создаю в базе tmp строку со значениями и status=0 значит ожидается вступление в локацию ешё людей )
    2 - если собралась команда командир стартует бой( status=1)
    3 - при победе присвоить всем участникам команды награды( вот здесь у меня проблемы, присвоение идёт только одному человеку)
    PHP:
    1. $tmp = mysql_query("SELECT * FROM `tmp` WHERE `bot_id`='" . $bot_data['bot_id'] . "'");
    2.     $i = 0;
    3.     while ($postrow = mysql_fetch_assoc($tmp)) {
    4.         $idi[$i]['id'] = $postrow['id'];
    5.         mysql_query("UPDATE `users` SET `opit`='$newopit', WHERE `id`='" . $idi[$i]['id'] . "'");
    6.         $i++;
    7.     }
    Заранее благодарен за помошь.
     
  2. wap3t

    wap3t Новичок

    С нами с:
    8 мар 2018
    Сообщения:
    5
    Симпатии:
    0
    Пробывал разные варианты исполнения, всё отказывается работать. В чём моя ошибка не пойму.
     
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    возможно эта запятая лишняя - раз
    и два - ты можешь все айдишники одним запросом пихать - where `id` in (1, 2, 3)
     
  4. wap3t

    wap3t Новичок

    С нами с:
    8 мар 2018
    Сообщения:
    5
    Симпатии:
    0
    запятая это я просто на форум чтобы длинный запрос не писать удалил да и не заметил её. А насчёт второго варианта можно пример кода?
     
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можно
    UPDATE `users` SET `opit`='$newopit', where `id` in (1, 2, 3)
     
  6. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    PHP:
    1. while($postrow=mysql_fetch_assoc($tmp)){ // mysql_fetch_assoc ))
    2.     $ids = $postrow['id'];
    3. }
    4. $ids = implode("','",$ids);
    5. mysql_query("UPDATE users SET opit=1 WHERE id IN ('".$ids."')"); // mysql_query))
     
    igordata нравится это.