Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Własny system płatności
Forum PHP.pl > Forum > Przedszkole
piotr485
Witam!

Chciałbym stworzyć system płatności.
Rozważmy to na przykładzie:

Na stronie www można się logować. Więc mam tabelę użytkownicy a w niej id, login, hasło.

Każdy użytkownik musi zapłacić raz w roku ileś zł.

Więc teraz taki problem:

- gdzie przechowywać sumy kwot które zapłacili - w nowej tabeli ? (id, id_uzytkownika suma) ?
- czy istnieje jakiś sposób aby wejść na moje konto za pomocą jakiegoś skryptu który sam będzie sprawdzał jeśli zapłacono to doda jakiś rekord do mojej bazy ? jest to możliwe ? czy jednak trzeba to zrobić ręcznie ?
- jak liczyć czy użytkownik zapłacił skoro minie np. 3lata, a suma do płacenia się zmieni ?
- od którego momentu liczyć płatności ? od momentu pierwszej wpłaty ?

Jak wy rozwiązujecie takie coś, jakie tabele tworzycie ? Pomoże ktoś ?
P.S. Nie mówię tu o systemie płatności on-line tylko o standardowym (ręcznym)



Matimor
Najlepiej będzie tak, nie podam Ci kodu, ale powiem miej więcej jak to zrobić, bo robiłem podobny skrypt dla swojego hostingu.

1. Najlepiej w tabeli użytkownika, dodaj tam pola takie jak: Suma(int), DataZaplaty(date), DataWaznosci(date), Zaplacil(smallint)
2. Funkcja SELECT i mysql_fecth_array:
  1. $Zapytanie = sprintf("SELECT * FROM `Uzytkownicy` WHERE `id`='$id'");
  2. $Wykonanie = mysql_query($Zapytanie);
  3. $Rekord = mysql_fetch_array($Wykonanie);
  4. $Zaplacil = $Rekord['Zaplacil'];
  5. if($Zaplacil == 1) {
  6. // Tu daj update jeżeli ma zapłacone
  7. } else {
  8. //Tu jeżeli nie ma
  9. }


3. Na podstawie dat przy logowaniu pobieraj DataZaplaty i zmieniaj ja, jeżeli DataZaplaty i DataWaznosci sa takie same ustaw przez UPDATE zmienna na 0

4. Nie rozumie pytani ;D
piotr485
Mógłbyś wytłumaczyć mi bardziej logikę i działanie tego ? Oczywiście ze nie chce kodu - nawet na niego nie liczę.

Proponujesz pola Suma, DataZapłaty, Zapłacił, Data Ważności

no więc ja to rozumuję tak:

DataZapłaty to data kiedy wpłacił pieniądze
Zapłacił - 0 niezapłacone 1 zapłacone
Suma suma jaką już zapłacił
Data ważności - to data do kiedy ma zapłacic ?

Jak to będzie działac ? Widzę, że pieniążki są na koncie to:
ustalam date zaplaty
suma? czyli np.5zl
Zaplacil 1
Data waznosci 01-11-2010

I teraz jak to bedzie wygladac nastepnym razem?

Czyli aby wyswietlic musze sprawdzic czy zaplacil jest rowne 1 i czy data waznosci jest mniejsza od dzisiejszej daty czy moze niemozemy dopuscic do sytuacji kiedy jest zaplacone to data waznosci zawsze jest mniejsza ? Jak przedluzyc nastepny rok ? Jak to wtedy robic ? Zmieniac istniejace rekordy ? W jaki sposob ?

r4xz
"Suma(int), DataZaplaty(date), DataWaznosci(date), Zaplacil(smallint)"

przy każdym otworzeniu strony sprawdzasz czy data ważności nie została przekroczona porównując z "dzisiejsza" datą. potem podstawiasz kod jaki był już podany przez Matimor, czyli: (+zapytanie do bazy danych i takie tam pierdoły tongue.gif)

if($Zaplacil == 1) {
// Tu daj update jeżeli ma zapłacone
} else {
//Tu jeżeli nie ma wyswielta komunikat ze trzeba placic
}


Matimor
Po prostu podczas logowania sprawdzasz date dzisiejszą z datą w bazie, jeżeli są takie same to dajesz UPDATE Zaplacil na 0 smile.gif
iVorIus
Już od początku dodawaj do bazy date w znacznikach uniksowych (time), żeby później łatwo porównać date z bazy, z teraźniejszą ( time(); ).

Matimor
@UP
Time to jest czas, format musi być date
piotr485
Jeszcze kilka pytań:

1. W takim razie po co pole data_zaplaty? Do czego potrzebne ?

Kwestia tego, że sprawdzam czy kasa na koncie - jak jest to klikam sobie jakiś przycisk który sobie zrobię w panelu "zapłacił", a załóżmy, że przedłuża termin ważności, a w bazie mamy tak:
data_zaplaty - 2008-11-11 data waznosci 2009-11-11 suma 15zl zaplacil 1 i gdy wcisne przycisk zaplacil to:

do sumy dodaje mi 15zl czyli razem mam 30
date_zaplaty zmieniam na 2009-11-11 ?
data_waznosci na 2010-11-11
a zaplacil na 1

2. W takim razie za każdym razem muszę dodawac Update dla pola zaplacil do bazy gdy sprawdzam,
if date>data_waznosci UPDATE zaplacil = 0,
if date<data_waznosci UPDATE zaplacil = 1

3. te dwa warunki musze zrobic na poczatku wyswietlania i za kazdym razem robic update do bazy ? To nie bedzie mialo wplywu na wydajnosc ?

4. Co w przypadku gdy uzytkownik nie ma tylko jednej opcji wplaty, ale placi tez za cos innego, np. 5zl za cos tam a 10zl za cos innego a np. zaplaci tylko za jedno - jak wy to rozwiazujecie ?
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.