За последние 24 часа нас посетили 18353 программиста и 1625 роботов. Сейчас ищут 1826 программистов ...

Прошу помощи)

Тема в разделе "Сделайте за меня", создана пользователем Паша92, 30 июн 2016.

  1. Паша92

    Паша92 Новичок

    С нами с:
    30 июн 2016
    Сообщения:
    30
    Симпатии:
    0
    есть база данных, с юзерами
    параметры: "логин" "1 человек" "2 человек" "выполнил"
    как только один из юзеров нажимает на кнопку допустим "Вступить"
    в базу заносится значение логин.
    после нажатия на кнопку вторым, создается новая строка
    Но логин 2-го должен попасть к первому в значение "1 человек"
    после нажатия на кнопку 3-го, создается новая строка
    логин 3-го должен попасть к первому в значение "2 человек"
    как только параметры "1 человек" и "2 человек" заполнены, 1-му юзеру присваивается в графу "выполнил" значение "1" и строка с ("логин" "1 человек" "2 человек" "выполнил") первого юзера удаляется

    далее нажимают 4й, 5й, 6й
    проделывается то же самое.
    но как это оформить, в порядке очереди?
    что бы 4 и 5 попал только к 3му
    а 6й и 7й к 4
    и так дальше
    8й и 9й к 4му
    10й и 11й к 5
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    На какую-то пирамиду похоже.
     
    Паша92 нравится это.
  3. Паша92

    Паша92 Новичок

    С нами с:
    30 июн 2016
    Сообщения:
    30
    Симпатии:
    0
    "вещевая" выдает вещи для "героев". если два человека подпишуться
    --- Добавлено ---
    Или подскажите алгоритм. или от куда достать можно?
     
  4. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Вы сами сейчас описали весь алгоритм. Причём довольно неплохо. Осталось только это продублировать в коде.
    Можете сами начать делать. Если что-то будет непонятно - тут могут подсказать.
    Можете просто заплатить кому-то и вам быстро всё напишут.
     
    Паша92 нравится это.
  5. Паша92

    Паша92 Новичок

    С нами с:
    30 июн 2016
    Сообщения:
    30
    Симпатии:
    0
    Сама суть мне понятна.
    Но не понятно, как организовать запрос, для очереди. Про которую писал выше.
    Как доставать именно тех, кто вступил раньше и у кого одно из мест или два свободны.
    Как это организовать не понятно
    --- Добавлено ---

    Со свободными местами то же разобрался.
    Осталось только "живая очередь"
     
  6. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Непонятно, что подразумевается под понятием "живая очередь".
    Насколько я понял: есть только одна кнопка вступить. Очередь формируется по основам "кто первый встал - того и тапки". Т.е. кто первй вступил - тому и пойдут следующие 2 юзера. Когда он забьёт свои поля, то его запись удаляется (вот тут мне непонятно, если его удалять, то что? куда-то должно сохраняться, что он забил свои поля?) и первым становится уже второй юзер, и ему заполняются поля. Т.е. первая запись в бд всегда будет того юзера, чьи поля надо заполнять
     
    Паша92 нравится это.
  7. Паша92

    Паша92 Новичок

    С нами с:
    30 июн 2016
    Сообщения:
    30
    Симпатии:
    0
    то что он забил поля, сохраняется в той же строке, где эти поля.
    но как только там становится значение допустим "1". выполняется условие выдачи вещи.
    и только после выдачи, удаляется его строка.

    "Т.е. первая запись в бд всегда будет того юзера, чьи поля надо заполнять"
    Вот и суть моего вопроса. Как сделать запрос именно к первой строке? (что бы именно в первую заносились значения о двух "рефералах")
     
  8. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    PHP:
    1. SELECT * FROM `table` ORDER BY `id` ASC, LIMIT 1
    этот запрос вернёт первую строку таблицы
     
    Паша92 нравится это.
  9. Паша92

    Паша92 Новичок

    С нами с:
    30 июн 2016
    Сообщения:
    30
    Симпатии:
    0

    а внести в первую строку

    $db->Query("INSERT INTO 'table' ORDER BY `id` ASC, LIMIT 1 (user_id, user, ref_1, ref_2)
    VALUES ('$usid','$usname', NULL, NULL)");

    Правильно я понял?
     
  10. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Эм. Нет. Я как-то сейчас не могу придумать более лучший вариант, но можно тем запросом сначала найти id первой записи, затем в условии инсерта использовать этот айди.
    Да, запрос на нахождение первого id будет лучше вот этот:
    SELECT MIN(id) FROM `table`
     
    Паша92 нравится это.
  11. Паша92

    Паша92 Новичок

    С нами с:
    30 июн 2016
    Сообщения:
    30
    Симпатии:
    0
    еще одна загвоздка при создании самой бд

    как оставить пустое значение колонок ref_1 и ref_2?
    что бы потом сравнивать, если ref_1 == Null, то записываем логин 2-го пользователя туда!?


    Код (Text):
    1. CREATE TABLE IF NOT EXISTS `db_mlm` (
    2.   `id` int(11) NOT NULL,
    3.   `user_id` varchar(10) NOT NULL,
    4.   `user` int(11) NOT NULL,
    5.   `ref_1` NULL,
    6.   `ref_2` NULL ,
    7.   PRIMARY KEY (`id`)
    8. ) ENGINE=MyISAM DEFAULT AUTO_INCREMENT=0 CHARSET=cp1251;
    Так или где то ошибся?
     
    #11 Паша92, 1 июл 2016
    Последнее редактирование модератором: 1 июл 2016
  12. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Открой для себя phpMyAdmin
    `ref` INT NULL DEFAULT NULL
     
    Паша92 нравится это.