Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] aktualizacja danych
Forum PHP.pl > Forum > Bazy danych > MySQL
jawka7
mam w bazie tabele z loginami uzytkownikow i np kolumne z wplywami od sponsorow i chce aktualizowac cala tabela w taki sposob zeby za jednym razem przeleciala kazdego uzytkownika wyciagla kongretne dane dotyczece niego i wyliczyla mu konkretna kwote. jak to zrobic??
linuxoida
Napisz jakie są kolumny konkretnej tabeli lub tabel to której chcesz wprowadzić zmiany to może coś sie wykombinuje i według czego chcesz przyznawać kasę, czy stażu czy innych atrybutów oraz czy to ma być użyciem kodu PHP czy czystego kodu SQL
jawka7
poprostu mam w bazie tabele dotyczaca finansow kazedego uzytkownika i chce zeby w kazdy czwartek jak bede3a ktualizowal dane to zeby sprawdzalo kazdego uzytkowniko sprawdzalo jergo lige jakich ma zawodnikow i wogole jego poziom gry i wedlug tego wyliczalo mu ile kasy dostanie od sponsorow tylko chce to tak zrobic zeby wyliczalo to kazdemu uzytkownikowy z wyznaczonego schematu tak zeby i aktualizowac kazdemju uzytkownikowi z osobna finanse tylko zrobic to wszystkim za jednym zamachem i chcialbym zeby bylo to od strony php maze byc tez sql nie widze przeszkod zeby bylo tylko w miare szybkie i zrozumiale ;]
linuxoida
Proszę Cię o to, aby mi podał mi strukturę swoich tabel w bazie, bo nie wiem od czego sie zabrać.
jawka7
a wiec login|stan konta| wplaty od sponsorow
nastepna tabela to druzyna|nazwa ligi|Poziom druzyny

i jak wiadomo wplaty od sponsorow beda uzalezniane od tej drugiej tabeliu chce tylko wiedziec jak to mniej wiecej ma wygladac nie chce gtowca jak zalape to sam zrobir cos takiego tylko chce to zrozumiec jak zrobic
linuxoida
A nie możesz napisać kod w SQL - u na forum Twoich tabel ale jakie masz tam pola i ich wartości bo To co napisałeś to mi nic nie mówi. Poza tym nie widzę żadnych związków między tabelami. Więc jak skonstułujesz coś sensownego to daj znać
jawka7
nie ro zumiem o co ci chodzi podalem ci jak wyglodaja moje tabele chodzi mi o to zeby stworzyc tak zabytania do bazy zeby aktualizowalo dane login oczywiscie jest inddentyfikatorem i chce zeby kazdego uzutkownika na podstawie tego loginu zliczalo mu kwote jaka dostal od sponsorow i zeby to zliczalo na podstawie tej drugirj tabeli w ktorej takze indentyfikatorem jest login i zeby za rowno w jednaj jak oi w drugiej tabeli znalazlo tego uzytkownika i na podstawie poziomu w tabeli pierwszej zwiekszylo stan konta podanego w drugiej tabeli nie rozumiem czemu nie wiesz o co mi chodzi mysle ze podalem ci wystarczajaco danych ten kod nie musi byc dokladny do moich tabel wystarczy ze podasz jak to ma wygladac ja juz sobie reszte sam zrobie chodzi mo tylko o to zebym zrozumial jak to zrobic zeby za jednym razem kazdemu uzytkownikowi zliczalo kwote od sponsorow na podstawie jego danych z drugiej tbeli nie musisz tego pisac idealnie pod strukture moich tabeli
linuxoida
Moim zdaniem najpierw powinieneś się chyba nauczyć obsługi tego forum, bo trzeba pokazać kawałek kodu jaki stworzyłeś a nie jak Ty piszesz w zwykłym tekście.
Ale Wracając do bazy w Mysql - u to wydaje mi się, że powinna wyglądać co najmniej tak (bo nawet tabele sa zle napisane):
  1. CREATE TABLE uzytkownik(login autoincrement PRIMARY KEY, stan_konta MONEY);

druga tabela to:
  1. CREATE TABLE sponsorzy(sponsorid autoincrement PRIMARY KEY, nazwa_sponsora VARCHAR, login INT REFERENCES uzytkownik(login));

trzecia to:
  1. CREATE TABLE druzyna(druzynaid autoincrement PRIMARY KEY, nazwa_druzyny VARCHAR, nazwa_ligi CHAR, poziom INT, login INT REFERENCES uzytkownik(login));

Takie jest moje zdanie co do konstrukcji bazy.

Następnie co do zliczania jest jedna wada tego, bo nie wiem czy Twoja baza badzie posiadać kilku stałych użytkowników czy ta ilość się zmienia. Ja zakładam, że ona będzie sie zmieniać. Więc powinieneś zliczyć wszystkich użytkowników jakich masz w bazie i w procentowo w stosunku do ich poziomu przyznawać im kasę.
Podajesz przy tym pętle for() ustalając przy tym największy poziom ligi (ja to zrobie to dla max=10) i wtedy konstrukcja wygląda tak:
  1. <?php
  2. $conn=mysql_connect();
  3. for($max=10; $max>=0; $max--)
  4. {
  5. $select_user=mysql_fetch_row($conn,"SELECT login AS log FROM druzyna WHERE poziom=".$max.");
  6.  for($user_max=0, $procenty_do_przydzielenia=0.6; $select_max<=$select_user, $procenty_do_przydzielenia>=0; $user_max++, $procenty_do_przydzielenia-=0.1)
  7.  {
  8.  $update=msql_query($conn,"UPDATE uzytkownik SET stan_konta=stan_konta+1*".$procenty_do_przydzielenia."");
  9.  }
  10. }
  11. ?>

Moim zdaniem możesz kombinować coś w tym kierunku, ale nie wiem może ktoś ma inne zdanie.


Pozdrawiam!!!
jawka7
mam jeszcze jedno pytanie bo moze to bylo bylepsze jak przechodzic tablicami poprzez wyszystkie rekordy pokolei petla??
linuxoida
np:
  1. <?php
  2. $tab=array('1','2','3','4','5','6','7','8','9');
  3. $conn=mysql_connect();
  4. $
  5. for($i=0; $i<=count($tab)-1; $i++)
  6. {
  7. $select=mysql_query($conn,"SELECT * FROM user WHERE login="'.$tab[$i].'"");
  8.  
  9. }
  10. ?>

ale nie wiem czy to jest dobre rozwiązanie ponieważ wielu użytkowników może mieć taki sam poziom sprawności w swojej lidze.
A powiedz jak chcesz ich rozliczać? Czy od osiągnięć grupy czy od stażu użytkownika, czy osiągnięć grupy.

Pozdrawiam
jawka7
od tego i tego nie wiem musze jeszcze przemyslec to wszystko
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.