01. november 2012 - 08:41Der er
11 kommentarer og 1 løsning
Math calculating in PHP take to much
Det understaaende script opdaterer total brugt credits i min database., Men det tager for meget i total.
credit cost = 1.00 credit Naar jeg har 10 clicks 10 * 1 = 10, det goer den fint nok Men naar den skal opdatere totalen tgaer den 45 credits i stedet for 10.
//Update Credit used
$result = mysql_query ("SELECT * FROM campains where campain='".$campain."'"); while ($row = mysql_fetch_array($result)) { // get total clicks $clicks= $row["clicks"]; //get click cost $costcredits= $row["creditcosts"]; //get awaible balance $credits1= $row["credits"]; //get creditsused $used = $row["creditsused"]; } //calculate the cost $cost=($clicks*$costcredits); //Take the cost from balance $credits = ($credits1-$used);
mysql_query("UPDATE campains SET creditsused =$cost WHERE campain ='".$campain."'"); mysql_query("UPDATE campains SET credits =$credits WHERE campain ='".$campain."'");
Fra start foelgende values var i Database tabellen: credits clicks creditcosts creditsused 1000.00 0 1.00 0.00
nuvaerende data i database tabellen efter 10 Kliks: credits clicks creditcosts creditsused 955.00 10.00 1 10.00
Som du ser tager den 45 i stedt for 10, hvorfor og hvordan kan jeg faa det korrekt.
naar der er 10 kliks goer den det jo rigtigt nok skriver 10 i databasen.
saa minus totalen fra de brugte credits
1000.00 - 10.00 = 990.00
Men den laver det som om der er brugt 45 kliks men skriver stadig 10 i brugte credits Udregning af brugte goer den rigtig nok Skriver jo 10 i usedcredits
total - brugt $credits = ($credits1-$used);
men nar jeg - de brugte fra totalen saa goer den et eller andet forkert.
Forstår ikke feltet clicks. skal det ikke nulstilles efter hver kørsel ? mysql_query("UPDATE campains SET clicks = 0 WHERE campain ='".$campain."'"); Du vil ellers trække samtlige klik fra hver gang du kører dette job.
SKal den da ikke den henter jo fra databasen naar den udregner
hvis du kigger saa er det det totale antal klik * hvad et klik koster den opdaterer i brugte credits for den henter de totale credits derefter traekker de totale brugte clicks fra som ogsaa hentes i data basen efter der er opdateret. det eneste der gaar galt er naar jeg vil traekke de brugte kliks fra den saldoen paa kontoen.
henter de totale antal kliks i databasen: $clicks= $row["clicks"];
Finder ud af havd et klik koster: $costcredits= $row["creditcosts"];
Henter saldoen: $credits1= $row["credits"];
Henter totale den totale kost $used = $row["creditsused"];
Udregner de total brugte kliks $cost=($clicks*$costcredits);
Indsaetter de total kliks i databasen mysql_query("UPDATE campains SET creditsused =$cost WHERE campain ='".$campain."'");
<------Her sker fejlem----------> Traekker de totale kliks fra saldoen paa kontoen: $credits = ($credits1-$used);
Indsaetter ny saldo paa kontoen: mysql_query("UPDATE campains SET credits =$credits WHERE campain ='".$campain."'");
henter de totale antal kliks i databasen: $clicks= $row["clicks"];
Finder ud af havd et klik koster fra databasen: $costcredits= $row["creditcosts"];
Henter saldoen fra databasen: $credits1= $row["credits"];
Henter totale den totale pris for alle kliks fra databasen $used = $row["creditsused"];
Udregner den totale pris --------Kliks * ---Pris----- $cost=($clicks*$costcredits);
Indsaetter den nye totale pris i databasen: mysql_query("UPDATE campains SET creditsused =$cost WHERE campain ='".$campain."'");
<------Her sker fejlem----------> Traekker den totale pris fra saldoen paa kontoen: ------------ Saldo - den totale pris fra databasen: -------- $credits = ($credits1-$used);
Indsaetter ny saldo paa kontoen: mysql_query("UPDATE campains SET credits =$credits WHERE campain ='".$campain."'");
Når du ikke nulstiller feltet 'clicks' ved hver opdatering, går det galt. Prøv det ... alle er enige om, at fejlen er, du tæller klikkene flere gange *o)
Hvis nu jeg skal være konstruktiv, så lad være med at ændre credits i tabellen. Du kan nøjes med at tælle kliks op. I en SELECT sætning kan du så lave en lille beregning, der siger hvor meget de er tilbage.
ja kliks skal nulstilles til 1 hvergang, hvis 0 saa bliver resultat 0 :) og samme for credits_used 1 i begge saa koerte det
:)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.