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
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
díky moc, ale buď to neumim, nebo to nechápu:) spíš myslim ta první možnost....
Alphard
Profil
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
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
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
Great. výkon poladim až bude potřea;). Díky moc

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: