За последние 24 часа нас посетили 17854 программиста и 1704 робота. Сейчас ищут 955 программистов ...

Нужна ваша помощь.

Тема в разделе "PHP и базы данных", создана пользователем Farjo, 14 фев 2017.

  1. Farjo

    Farjo Новичок

    С нами с:
    14 фев 2017
    Сообщения:
    7
    Симпатии:
    0
    Привет всем нужна ваша помочь как мне сделать так чтобы при покупке акций в минусе не шло а бил ноль вот видно на рисунке http://prntscr.com/e8qc79
    2) При нуле нужно удалять таблицу где купили акции . вот сам код

    PHP:
    1. //защищаем поле ввода
    2. if (isset ($_POST['Akca'])){
    3. $kypiti = trim($_POST['Akca']);
    4. $kypiti=mysql_real_escape_string($kypiti);
    5. $kypiti=htmlentities($kypiti);
    6. }
    7.  
    8. //создаем переменую
    9.  
    10. $price=0.011;
    11. $sum_price=$kypiti * $price;
    12.  
    13. //снимаем деньги со счета
    14. $sql="SELECT * FROM tab_user WHERE username='$login'";
    15. $query=mysql_query($sql);
    16. $row=mysql_fetch_assoc($query);
    17. $user_money=$row['rmoney'];
    18. $user_lmoney=$row['lmoney'];
    19. $user_sklad=$row['sklad']+$kypiti;
    20. $user_money_result=$user_money-$sum_price;
    21. $user_lmoney_result=$user_lmoney+$sum_price;
    22. $sql="UPDATE tab_user SET rmoney='$user_money_result' WHERE username='$login'";
    23. $queri=mysql_query($sql)or die(error);
    24.  
    25. //получаем логин первого лузера
    26. $sql="SELECT * FROM Akchuu ORDER BY date DESC";
    27. $query_user_akcii=mysql_query($sql);
    28. $row=mysql_fetch_assoc($query_user_akcii);
    29. $user_login=$row['login'];
    30. $user_akcii=$row['akc_pro'];
    31. $user_id=$row['id'];
    32. $user_akcii_res=$user_akcii - $kypiti;
    33.  
    34. //снимаем акции у первого лузера и перекидываем второму лузеру
    35.  
    36. $sql="UPDATE Akchuu SET akc_pro='$user_akcii_res' WHERE login='$user_login'";
    37. if($user_akcii==0){
    38. $sql="DELETE FROM Akchuu WHERE id='$user_id'";
    39. }
    40.  
    41.  
    42. $sql="UPDATE tab_user SET sklad=sklad+'$kypiti' WHERE username='$login'";
    43. $sql="UPDATE tab_user SET lmoney=lmoney+'$sum_price' WHERE username='$user_login'";
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    :eek:
     
  3. Farjo

    Farjo Новичок

    С нами с:
    14 фев 2017
    Сообщения:
    7
    Симпатии:
    0
    не могу понять
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    @Farjo чувак, подскажи деревенскому, а лузер это кто?
     
  5. Farjo

    Farjo Новичок

    С нами с:
    14 фев 2017
    Сообщения:
    7
    Симпатии:
    0
    user не так написал
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну ты выбираешь из бд инфу по юзеру и его акциям. ты прежде чем апдейтить, ты посчитай, сколько получилось, и тогда уже принимай решение апдейтить или удалять строку.
     
  7. Farjo

    Farjo Новичок

    С нами с:
    14 фев 2017
    Сообщения:
    7
    Симпатии:
    0
    а как сделать чтобы в меньше нуля не било
     
  8. igordata

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

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

    Farjo Новичок

    С нами с:
    14 фев 2017
    Сообщения:
    7
    Симпатии:
    0
    Большое спасибо в роде понял
     
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тут есть подводный камень, который называется "race condition" :D
    но ты пока запили так, авось не заметишь.
     
  11. Farjo

    Farjo Новичок

    С нами с:
    14 фев 2017
    Сообщения:
    7
    Симпатии:
    0
    все уже работает;)
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну господь тя храни, чтобы два раза одновременно не нажали
     
  13. Farjo

    Farjo Новичок

    С нами с:
    14 фев 2017
    Сообщения:
    7
    Симпатии:
    0
    Igordatа вы даете услуги ваши
    --- Добавлено ---
    Можно вас попросить доработать один модуль я заплачу если вы свободни
     
  14. igordata

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

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