Data ophalen doormiddel van prijs
Momenteel ben ik bezig met een webshop en ik ben op een probleempje gestuiterd waar ik niet uitkom.
Ik heb een slider gemaakt weer je de prijs in kan voeren waar die vervolgens op gaat zoeken maar hij geeft geen correcte uitslagen.
Dit is het script:
<code>
$selectPrice = split(" - ", $_POST['price']);
$sql = "SELECT `productId`, `productName`, `productPrice`, `productImgUrl` FROM `products` WHERE `productPrice` >= '". $selectPrice[0]."' && `productPrice` <= '". $selectPrice[1]."' ORDER BY `id` ASC LIMIT ".$pageLimit.",30";
</code>
De bedragen die door worden gegeven in $selectPrice zijn hele bedragen (0 - 500).
Zelf denk ik dat het probleem in de database ligt, de prijzen worden daar zo weergeven: 48.61 en zelf denk ik dat als ze er als 46,61 in hadden gestaan het script goed gewerkt had, iemand hier een oplossing voor?
Groet,
Tim
http://php.net/manual/en/function.str-replace.php
En je gebruikt nu direct je $_POST data zonder dat je checked of er gebruik word gemaakt van SQL injection.
Hier moet je altijd op checken als je user input gebruikt!!
Kijk even naar En je gebruikt nu direct je $_POST data zonder dat je checked of er gebruik word gemaakt van SQL injection.
Hier moet je altijd op checken als je user input gebruikt!!
Quote:
Dat zou niet uit mogen maken, wanneer je 50 invoert heb je niets met punten of komma's en SQL handelt dat wel goed af. Gebruik aub blokhaken ipv <> voor je code 48.61 en zelf denk ik dat als ze er als 46,61 in hadden gestaan het script goed gewerkt had
Edit:
@Martijn: Niet gaan zitten replacen, kost veel teveel energie en programmeerwerk. Maak gebruik van de beschikbare format functies. http://stackoverflow.com/questions/8669212/change-decimal-separator-in-mysql
@Martijn: Niet gaan zitten replacen, kost veel teveel energie en programmeerwerk. Maak gebruik van de beschikbare format functies. http://stackoverflow.com/questions/8669212/change-decimal-separator-in-mysql
Gewijzigd op 15/11/2012 11:38:42 door John D
Hoe sla je nu je prijs op? als decimal of als varchar, want in je sql query gebruik je qoutes dit is niet toegestaan bij het opvragen van decimal waardes.
Dus indien het price veld een decimal is zou je query als volgt moeten zijn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
$sql = "
SELECT
`productId`,
`productName`,
`productPrice`,
`productImgUrl`
FROM
`products`
WHERE
`productPrice` >= '". $selectPrice[0]."' &&
`productPrice` <= '". $selectPrice[1]."'
ORDER BY
`id` ASC
LIMIT ".$pageLimit.",30";
SELECT
`productId`,
`productName`,
`productPrice`,
`productImgUrl`
FROM
`products`
WHERE
`productPrice` >= '". $selectPrice[0]."' &&
`productPrice` <= '". $selectPrice[1]."'
ORDER BY
`id` ASC
LIMIT ".$pageLimit.",30";
Nu kun je snel terugzien wat er waar gebeurd.
Bedankt voor de tip!
Maar nu heb ik het volgende en ik krijg nog steeds niet de goede resultaten.
productPrice staat als decimal(10,2)
Toevoeging op 16/11/2012 15:20:50:
Heb het opgelost, bleek aan een ander gedeelte in de SQL te liggen de fout.
Allen bedankt!