Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]zmniejszenia jednego rekordu i zwiększenia drugiego
-princejsg-
post
Post #1





Goście







Witam od razu przejdę do rzeczy . Mam pytanie jak zrobić aby z jednego rekordu zmniejszyło wartość podaną w textboxie i zwiększyła ją o tyle samo drugiemu rekordowi którego nazwa została podana też w textboxie .
Przykład :
Adam ma 200 zł na koncie daje Alkowi 100 . Alek sumie ma na koncie 200 , a Adam 100 .
Kod PhP :
  1. <?php
  2. include('inc/db.php'); //plik odpowiedzialny za poloczenie z baza
  3. $login = $_SESSION['login'];
  4. $result = mysql_query("SELECT * FROM bank WHERE username = '$login'");
  5. ($row = mysql_fetch_object($result))
  6.  
  7. ?>

Czy ktoś może mi wyjaśnić jak coś takiego zrobić ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Ja bym zrobił to na zasadzie:
  1. $ile = 100; // przelew na 100 zł.
  2. $id_od = 101; // użytkownik, który płaci
  3. $id_dla = 102; // użytkownik, który otrzymuje
  4.  
  5. $baza = mysql_connect("localhost", "user", "password");
  6. if ($baza) {
  7. $wynik = mysql_select_db("baza1");
  8. if ($wynik) {
  9.  
  10. // zaczynamy transakcję
  11. mysql_query("BEGIN");
  12. $blad=0;
  13.  
  14. // obsługa pierwszej operacji (zabieramy)
  15. $wynik = mysql_query(
  16. "UPDATE rachunki SET kwota=kwota-$ile WHERE id=$id_od");
  17. if (mysql_affected_rows()<>1) $blad++;
  18.  
  19. // obsługa drugiej operacji (dajemy)
  20. $wynik = mysql_query(
  21. "UPDATE rachunki SET kwota=kwota+$ile WHERE id=$id_dla");
  22. if (mysql_affected_rows()<>1) $blad++;
  23.  
  24. // zatwierdzamy lub odrzucamy zmiany
  25. if ($blad>0) mysql_query("ROLLBACK");
  26. else mysql_query("COMMIT");
  27.  
  28. echo "Błędy podczas wykonywania zapytań: $blad";
  29. }
  30. mysql_close($baza);
  31. }
Go to the top of the page
+Quote Post
Sephirus
post
Post #3





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dodałbym jedynie dodatkowe sprawdzanie czy dany user ma w ogóle taką kwotę:

Przy zapytaniu dla płacącego:

  1. "UPDATE rachunki SET kwota=kwota-$ile WHERE id=$id_od AND kwota >= $ile"


W tym kodzie gdy user nie ma takiej kwoty wiersz nie zostanie zmieniony więc przelew nie dojdzie do skutku (zmienna $blad będzie zawierać conajmniej jeden błąd i wykona się rollback)

Ten post edytował Sephirus 14.02.2012, 08:49:41
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 15:12