Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]zmniejszenia jednego rekordu i zwiększenia drugiego
Forum PHP.pl > Forum > Przedszkole
princejsg
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ć ?
Kshyhoo
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. }
Sephirus
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)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.