За последние 24 часа нас посетили 17398 программистов и 1723 робота. Сейчас ищут 1549 программистов ...

Порядок выполнения скрипта в бд

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

  1. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    Вот мой скрипт -
    Код (PHP):
    1.                         $elita_keys = isset($_POST['elita_keys']) ? htmlspecialchars($_POST['elita_keys']) : '';
    2.                         $mysqlis = new mysqli('localhost', '', '', '');
    3.                         if (mysqli_connect_errno()) {
    4.                    printf($stop .= $errorno = "Ошибка подключения к бд, попробуйте еще раз", mysqli_connect_error());
    5.                     exit();
    6.                         } else {
    7.                         $user01 = mysqli_query($mysqlis, "SELECT id FROM kod WHERE login = '$elita_keys'");
    8.                 $id_users01 = mysqli_fetch_array($user01);
    9.                         if (empty($id_users01['id']))
    10.                         {
    11.             $stop .= $errorno = "Ключ неверный.";
    12.                 } else{
    13.                         mysqli_query($mysqlis, "DELETE from kod WHERE login = '$elita_keys'");
    14.                         mysqli_close($mysqlis); 
    Как сделать что бы сначала проверился код ,а только потом удалился? У меня получается так, что код удаляется и скрипт не успевает его сравнить.
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Вложенные if else используй
     
  3. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    подскажите пожалуйста . каК?
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Чувак, ты пароли к бд-то не вываливай так :D

    Добавлено спустя 1 минуту 6 секунд:
    Код (PHP):
    1. printf($stop .= $errorno = "Ошибка подключения к бд, попробуйте еще раз", mysqli_connect_error());
    2. exit();
    походу ты не понимаешь, что ты делаешь вообще =)

    Добавлено спустя 3 минуты 5 секунд:
    во-первых, htmlspecialchars() тут нафиг не нужна, и ты её сюда засунул ради защиты бд видимо, но она этого не делает, а что делает - можно прочесть в доке на русском языке же.

    во-вторых, какой ключ ты хочешь проверить и как?
     
  5. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    c поля передается методом пост ключ для проверки , скрипт ищет в бд, если есть ключ ,то пускает иначе ошбка.Все работает,но когда я добавил делет, то он удаляет не успев сравнить ключи.
    htmlspecialchars() - запрещает же ввод html кодов, разве нет?
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    так

    ты берёшь из бд строку по логину из поста
    из этой строки ты проверяешь наличие поля id
    если поле есть (а значит и строка) - наухй удаляешь эту строку

    это вот то что ты делаешь.

    где там у тебя ключ и с чем и что ты хочешь сравнить - не понятно.
     
  7. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    Код (Text):
    1.   $user01 = mysqli_query($mysqlis, "SELECT id FROM kod WHERE login = '$elita_keys'");
    2.                 $id_users01 = mysqli_fetch_array($user01);
    3.                         if (empty($id_users01['id']))
    4.                         {
    5.             $stop .= $errorno = "Ключ неверный.";
    я не знаю как сделать по порядку ...
     
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    у тебя тут в принципе не происходит то что ты говоришь. Тебе приходит логин в посте. Ты в бд запрашиваешь из таблицы `kod` строку с этим логином. Если она есть, то она есть, и проверять нечего.
     
  9. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    как запросить правильно ,а если все прошло успешно , то удалить?
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    если она есть - значит успешно =)
    что с чем проверять - не ясно до сих пор.
     
  11. machetero

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

    С нами с:
    25 окт 2014
    Сообщения:
    499
    Симпатии:
    21
    я так понял ему надо удалить строку, в которой логин имеется
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Вот он её и удалил! =)
     
  13. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    есть форма, в нее пользователь вводит код, скрипт принимает данные и сверяет код с тем кодом который в бд если успешно , то его пускает на форму02 и удаляет ключ, иначе ошибка.
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Какой нейм у инпута с ключом и название поля в бд?
     
  15. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    input name - "elita_keys"
    бд таблица
    id login
    5 4564654 (код)
     
  16. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А id я так понимаю это просто так?
     
  17. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    ага, просто если ид убрать , то мускул жалуется что mysqli_query ждет аргементы(не помню эту ошибку) )

    Добавлено спустя 40 минут 17 секунд:
    подскажите пожалуйста как правильно сделать
     
  18. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    короче ты просто хочешь проверить, если ли присланный код в таблице кодов и всё?
     
  19. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    короче мне нужно :
    если есть присланый код в таблице, то удаляем его и пускаем дальше, иначе - ошибка
     
  20. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    короче, переведи это предложение на php+mysql и радуйся ))) if … delete … else die
    тыжпрограммист!
     
  21. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    дак я перевел) только не так работает :D
     
  22. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    а кому сейчас легко! пробуй еще.
     
  23. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да этот функционал у него УЖЕ реализован.
     
  24. energy455

    energy455 Новичок

    С нами с:
    30 янв 2015
    Сообщения:
    122
    Симпатии:
    0
    Код (PHP):
    1.         $elita_keys = isset($_POST['elita_keys']);
    2.         $mysqlis = new mysqli('localhost', '', '', '');
    3.         if (mysqli_connect_errno()) {
    4.         printf($stop .= $lang = "Ошибка подключения к бд, попробуйте еще раз", mysqli_connect_error());
    5.         exit();
    6.         } else {
    7.         $user01 = mysqli_query($mysqlis, "SELECT login FROM kod");
    8.         $id_users01 = mysqli_fetch_array($user01);
    9.                 
    10.         if ($id_users01 == $elita_keys) 
    11.         {
    12.         $stop .= $lang = "все ок";
    13.         
    14.        } else { 
    15. неверно
    16. }
    17. } 
    может так лучше будет?
     
  25. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    имитация программирования )))

    [​IMG]

    Добавлено спустя 1 минуту 56 секунд:
    energy455, раскажи как ты понимаешь хотябы первые пять строк из этого исходника?