Autor | Zpráva | ||
---|---|---|---|
Skorpion Profil |
Čau, mám takovej skript, kterej pocita kolik bodu ma dat kterymu kontaktu, plus zaokrouhlovani a tak, ale nevim co dat za where, aby to fungovalo tak, ze ke kazdymu idUser v tabulce se ulozi spravny zbytek. Takhle se ulozi stejnej zbytek kazdymu idUser.
$proUzivatele = array(); // spoctu kolik mam dat kazdymu foreach($celkove as $uzivatel) { $uzivatelVysledek = array(); $uzivatelVysledek['idUser'] = $uzivatel['idUser']; $uzivatelVysledek['pocetBodu'] = $pocetBodu*($uzivatel['celkove']/$celkoveNakoupeno); $uzivatelVysledek['pocetBoduZaokrouhleno'] = floor($pocetbodu*($uzivatel['celkove']/$celkoveNakoupeno)); $uzivatelVysledek['zbytek'] = $uzivatelVysledek['pocetBodu']-$uzivatelVysledek['pocetBoduZaokrouhleno']; $proUzivatele[] = $uzivatelVysledek; } var_dump($proUzivatele); $query = "UPDATE sloty SET zbytek = ('$uzivatelVysledek[zbytek]') WHERE idUser"; // ....????? Moderátor Alphard: Vkládej prosím kód mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
Alphard Profil |
#2 · Zasláno: 10. 6. 2009, 22:42:50
To bude problém, chtělo by to dotaz na každého uživatele, tj. iterovat cyklem a vždy where idUser = $uzivatel['idUser'], což by bylo dost náročné.
Lepší bude přepsat ten výpočet do sql updatu. |
||
Skorpion Profil |
#3 · Zasláno: 10. 6. 2009, 22:45:33
díky moc, ale buď to neumim, nebo to nechápu:) spíš myslim ta první možnost....
|
||
Alphard Profil |
#4 · Zasláno: 10. 6. 2009, 22:54:46
Skorpion:
Teď na to koukám pečlivěji, v dotazu mimo cyklus používáte $uzivatelVysledek, v ní je ale hodnota z poslední iterace, protože se stále přepisuje. Přepsat to by neměl být problém: mysql_query ("update sloty set pocetBodu = pocetBodu*celkove/$cekoveNakoupeno"); Je to jen ukázka, nevím, jak máte pojmenované sloupce a které proměnné dodáváte samostatně. Podstatné je, že tento dotaz edituje celou tabulku sloty, ale pro výpočet použije data z konkrétního záznamu a pouze vydělí dodanou (pro všechny stejnou) $celkoveNakoupeno. |
||
Skorpion Profil |
#5 · Zasláno: 10. 6. 2009, 23:01:55
kdyz dam vardump pred provedenim query, tak to vypada takhle (nevim jestli to pomůže):
[/pre]array(2) { [0]=> array(4) { ["idUser"]=> string(1) "7" ["pocetBodu"]=> float(1.55555555556) ["pocetBoduZaokrouhleno"]=> float(1) ["zbytek"]=> float(0.555555555556) } [1]=> array(4) { ["idUser"]=> string(1) "4" ["pocetBodu"]=> float(0.888888888889) ["pocetBoduZaokrouhleno"]=> float(0) ["zbytek"]=> float(0.888888888889) } } Kouknu jestli to nejde udělat jinak, ale takhle to vypadá, že to počítá správně pro každýho idUser. = $PHPzáhada |
||
Alphard Profil |
#6 · Zasláno: 10. 6. 2009, 23:05:29
Skorpion:
Nechápete, o co mi jde, když to uděláte takhle, bude to fungovat, ale nebude to moc výkonné. $proUzivatele = array(); // spoctu kolik mam dat kazdymu foreach($celkove as $uzivatel) { $uzivatelVysledek = array(); $uzivatelVysledek['idUser'] = $uzivatel['idUser']; $uzivatelVysledek['pocetBodu'] = $pocetBodu*($uzivatel['celkove']/$celkoveNakoupeno); $uzivatelVysledek['pocetBoduZaokrouhleno'] = floor($pocetbodu*($uzivatel['celkove']/$celkoveNakoupeno)); $uzivatelVysledek['zbytek'] = $uzivatelVysledek['pocetBodu']-$uzivatelVysledek['pocetBoduZaokrouhleno']; $proUzivatele[] = $uzivatelVysledek; mysql_query ("UPDATE sloty SET zbytek = ('$uzivatelVysledek[zbytek]') WHERE idUser = $uzivatel[idUser]"); } |
||
Skorpion Profil |
#7 · Zasláno: 10. 6. 2009, 23:08:58
Great. výkon poladim až bude potřea;). Díky moc
|
||
Časová prodleva: 15 let
|
0