Witam!

Mam problem ze stworzeniem czegos w rodzaju automatyzacji rekordow w bazie danych MySQL. Chociaz dylemat ten sklada z kilku prostych zapytan, to ogolna calosc jest skomplikowana – przynajmniej dla mnie. Uwierzcie, ze szukalem pomocnych informacji na tematy mnie nurtujace, ale slaby poziom wiedzy z zakresu mysql i php albo uniemozliwial mi rozwiazanie, albo powodowal rozpadanie sie ogolnego konceptu. Prawdopodobnie ta sprawa wyda Wam sie smiesznie banalna, jednak mnie zaczela przerastac, w dodatku odczulem nacisk czasu, dlatego zwracam sie z prosba o pomoc. Jestem nowy w tematyce php/mysql, co bedzie widac w nastepnych wierszach tego postu. Prosze o cierpliwe przeczytanie tresci.

Do rzeczy: W tabeli tb_users, oprocz standardowych danych kazdego uzytkownika, mam 3 kolumny: referals (uzytkownicy „poleceni”), refhired (uzytkownicy wynajeci na 1 miesiac) i refsum (suma dwoch poprzednich). Rozpisze zagadnienie w punktach dla przejrzystosci i lepszego zrozumienia:



1. Sumowanie wartosci pol referals i refhired w polu refsum.

Moje doswiadczenie w zakresie php i mysql jest w zasadzie kilkutygodniowe i polega na analogicznych przerobkach gotowego skryptu oraz tabel w miare wlasnych potrzeb. Zrobilem wiec tak:



Kod
$numero=$myrowz["referals"] + $referals;

$sqlex = "UPDATE tb_users SET refhired='$numero', refsum='$numero' WHERE username='$customer'";
$resultex = mysql_query($sqlex);




i prosze sie nie smiac, bo to dziala.. tylko nie tak jak trzeba dokladnie. Wlasciwie nie rozumiem dlaczego, ale raz dodaje prawidlowo, innym razem zamiast dodac 10 dodaje tylko 1 lub 3 i nie zawsze w odpowiedniej kolumnie. Wiem, ze sql dysponuje komenda SUM, jednak nie potrafie tego jeszcze sklecic do kupy z php. W tym punkcie prosze wiec o pomoc przy sformulowaniu prawidlowego zapytania do bazy danych wraz z zastosowaniem go w skrypcie php tak, aby [referals] + [refhired] = [refsum].



2. Odliczanie dni dotyczace refhired, ktorzy sa wynajmowani na 1 miesiac, czyli od 30 do 0 z zachowaniem odpowiedniej kolejnosci czasowej.

Dla przykladu: jezeli dany user wynajal 100 refhired pierwszego dnia miesiaca, a 15-go dnia kolejne 80, to ta pierwsza 100-tka wygasnie po 30-tym dniu miesiaca, natomiast ta 80-tka bedzie trwala do wlasnego konca, ktory nadejdzie 14-go dnia nastepnego miesiaca (czyli po 30-tu dniach wynajmu). Przy czym pole refsum powinno nieprzerwanie wyswietlac aktualna liczbe wszystkich posiadanych ref’ow. I jeszcze po wygasnieciu okresu wynajmu liczba referals spada do 5.

Znalazlem swietny skrypt szanownego nospor’a odliczajacy dni robocze, jednak w moim przypadku nie jest wazne czy to piatek czy swiatek, weekend czy dzien roboczy. Po prostu powinno liczyc kazdy dzien tak samo. Na moj chlopski rozum nalezaloby wiec z tego skryptu usunac wszystkie zmienne odpowiadajace za liczenie dni swiatecznych. Ale czy takie rozwiazenie jest konwencjonalne? Jesli tak, to co nalezaloby zrobic, aby dzialalo ono dla odpowiednich pakietow refhired przeplatajacych sie w czasie?



3. Jak sformulowac odpowiednie zapytanie dla okreslonej liczby uzytkownikow (np. 500) ze statusem ‘pioneer’, dla ktorych liczba dni wynajmu refhired to 40, a nie 30?

Przypuszczam, ze mogloby to wygladac tak:

Kod
$table = mysql_query(SELECT * FROM tb_users where status=’pioneer’ ORDER BY id ASC);



I dalej prawdopodobnie funkcja i zmienna wczesniej ustalona i powiazana ze skryptem odliczajacym dni – tym razem od 40 do 0. Tylko jakich dokladnie funkcji uzyc i jak je powiazac z tym skryptem??



Przepraszam za zenujacy poziom mojej wiedzy, jednak zauwazcie, ze przychodze z moim problemem do Przedszkola. Bardzo prosze o wszelkie podpowiedzi i przyklady zapytan lub skryptow, ktore moglbym zastosowac.



Pozdrawiam!

veex