Data ophalen doormiddel van prijs

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tim Kampherbeek

Tim Kampherbeek

15/11/2012 11:14:11
Quote Anchor link
Hoi allemaal,

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
 
PHP hulp

PHP hulp

14/11/2019 05:31:20
 
Martiveen -

Martiveen -

15/11/2012 11:27:45
Quote Anchor link
Kijk even naar 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!!
 
John D

John D

15/11/2012 11:31:03
Quote Anchor link
Quote:
48.61 en zelf denk ik dat als ze er als 46,61 in hadden gestaan het script goed gewerkt had
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
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
Gewijzigd op 15/11/2012 11:38:42 door John D
 
Erwin van Hoof

Erwin van Hoof

15/11/2012 13:29:55
Quote Anchor link
Beste Tim,

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
$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";
 
Terence Hersbach

Terence Hersbach

15/11/2012 13:45:12
Quote Anchor link
Tip: maak het voor je jezelf overzichtelijk en werkbaar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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";

Nu kun je snel terugzien wat er waar gebeurd.
 
Tim Kampherbeek

Tim Kampherbeek

16/11/2012 14:49:15
Quote Anchor link
@Erwin:

Bedankt voor de tip!
Maar nu heb ik het volgende en ik krijg nog steeds niet de goede resultaten.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
&& `productPrice` >= ". $selectPrice[0]." && `productPrice` <= ".$selectPrice[1]."


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!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.