Inhoud database ophalen sorteren en variabele toevoegen
Na een dag puzzelen en tig verschillende opties uitgeprobeerd te hebben wil ik hier toch graag wat hulp vragen.
Ik heb een databasetabel bijvoorbeeld
Nieuweprijs Oudeprijs titel url
10 20 blabla http...
20 40 blabla http...
ect...
Nu heb ik deze tabel tabel aangeroepen en met een while
in een array gestopt.
Vervolgens wil ik een variable (korting of percentage) berekenen en
deze variabele weer toevoegen aan een nieuwe array. ( mag ook zelfde array zijn)
De array sorteren en vervolgens de 10 hoogste kortingen presenteren.
Echter krijg ik het veld kortingen niet gepresenteerd in array $kortingen2
Ik moet toe naar het volgende denk ik:
array [0]
array => waarde
[titel]=> waarde
[oudeprijs]=> waarde
[nieuweprijs]=> waarde
[korting]=> waarde
array [url]=> waarde
[titel]=> waarde
[oudeprijs]=> waarde
[nieuweprijs]=> waarde
[korting]=> waarde
enz....
Ik hoop dat iemand mij hiermee verder op weg wil helpen.
let svp maar niet op de rommelige code hieronder.
mvgr
Marcel
-----------------------------------------------------
$sql = "SELECT title,url,prijs,prijs2 FROM dataitems ";
$result = mysql_query($sql);
while ($data = mysql_fetch_array($result)) {
$dataitems[] = $data;
//echo $dataitems['Prijs'].'<br/>';
}
//print_r ($dataitems);
foreach ($dataitems as $item) {
$newprice = $item['Prijs'];
$oldprice = $item['Select2'];
$korting = $oldprice - $newprice;
if ($korting <= 1)
$oldprice = 0.01;
$kortingper = $korting / $oldprice;
$kortingen= array('percentage'=>$kortingper);
//print_r ($kortingen);
//echo '€ '.$kortingper.'<br/>';
}
$kortingen2 = array_merge($kortingen, $dataitems);
foreach ($kortingen2 as $items) {
//print $items['kortingen'].'<br/>';
print_r ($kortingen2['Prijs']);
}
Ik wil best helpen, maar ik snap er geen .... van.
- SanThe - op 04/10/2011 06:29:12:
Ik wil best helpen, maar ik snap er geen .... van.
Ik ook niet, lol.
Maar het lijkt mij sowieso handiger om het kortings percentage in de tabel zetten.
en dan SQL:
SELECT ((100-discount)*price/100) AS newprice, price FROM ....... (etc.)
Ik kan het helaas niet anders uitleggen.
"Ik heb een tabel de gegevens hiervan moeten in een array.
Vervolgens wil ik een variable (bv korting) berekenen en
deze variabele weer toevoegen aan de array.
Deze array sorteren en vervolgens de 10 hoogste kortingen presenteren."
@Ger
Zat ik ook aan te denken
Echter de inhoud van de tabel wijzigt voortdurend doormiddel van enkele Cron jobs.
Ik zou dus wel kunnen proberen om een INSERT in de Cron te zetten maar ben bang dat ik hier op andere plaatsen in de code last mee krijg. Betreft namelijk een bestaand programma.
Toevoeging op 04/10/2011 14:00:17:
Geen hulp meer nodig - ik had een helder moment :-)
kan gewoon in 1 while loop
while ($data = mysql_fetch_array($result)) {
$title = $data['title'];
$url = $data['url'];
$Select2 = $data['Select2'];
$Prijs = $data['Prijs'];
$newprice = $data['Prijs'];
$oldprice = $data['Select2'];
$korting = $oldprice - $newprice;
dataitems[] = array('korting'=>$korting,'title'=>$title,'url'=>$url,'Select2'=>$Select2,'Prijs'=>$Prijs);
}
rsort ($dataitems);
Gewijzigd op 04/10/2011 14:02:31 door Marc willemsen
Marc willemsen op 04/10/2011 11:08:49:
@Ger
Zat ik ook aan te denken
Echter de inhoud van de tabel wijzigt voortdurend doormiddel van enkele Cron jobs.
Ik zou dus wel kunnen proberen om een INSERT in de Cron te zetten maar ben bang dat ik hier op andere plaatsen in de code last mee krijg. Betreft namelijk een bestaand programma.
Zat ik ook aan te denken
Echter de inhoud van de tabel wijzigt voortdurend doormiddel van enkele Cron jobs.
Ik zou dus wel kunnen proberen om een INSERT in de Cron te zetten maar ben bang dat ik hier op andere plaatsen in de code last mee krijg. Betreft namelijk een bestaand programma.
Ik kan begrijpen dat je dan wat voorzichtig bent, maar waarom los je die berekeningen niet in een SQL statement op? Nu ga een hoop data ophalen waarvan je met een groot gedeelte niets meer doet.
ben pas net begonnen met php
Marc willemsen op 04/10/2011 14:48:29:
klopt ga ik ook nog proberen hierna - is allemaal nog een leerschool voor mij
ben pas net begonnen met php
ben pas net begonnen met php
Mijn vorige post was ook een tip, geen kritiek ;-)
Code (php)
1
2
2
SELECT (price - discount_price) AS discount, price, discount_price,
url, title FROM products ORDER BY discount DESC LIMIT 0, 10
url, title FROM products ORDER BY discount DESC LIMIT 0, 10
resulteert in een 'recordset' van 10 records. Met php in een while lus echoen en klaar!
Gewijzigd op 04/10/2011 15:52:24 door Ger van Steenderen
Even geprobeerd - werkt heel goed alleen...
de meeste getallen in de database zijn opgeslagen als floats
Dus ik krijg niet dezelfde(juiste) resultaten via de select manier
gr
Gewijzigd op 04/10/2011 17:04:04 door Marc willemsen
Marc willemsen op 04/10/2011 16:19:52:
lol ook niet opgevat als kritiek
Even geprobeerd - werkt heel goed alleen...
de meeste getallen in de database zijn opgeslagen als floats
Dus ik krijg niet dezelfde(juiste) resultaten via de select manier
Even geprobeerd - werkt heel goed alleen...
de meeste getallen in de database zijn opgeslagen als floats
Dus ik krijg niet dezelfde(juiste) resultaten via de select manier
je bedoelt dat je waardes krijgt van 33.33333?
ik maak zelf een denkfout - want de sql statement moet nog aangepast worden.
want ik zoek eigenlijk niet de waarden met de meeste korting maar de waarden met
de hoogste relatieve korting. ( dus in percentage)
Gewijzigd op 04/10/2011 17:37:20 door Marc willemsen
en percentage is niet meer dan: heteen/hetander*100
Dank je Ger voor de ondersteuning