PHP mysql simpel filter probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Innovatieve, nauwkeurige Senior PHP Developer voor

Eind jaren ’90 is dit bedrijf opgericht. Ze hebben zich altijd beziggehouden met het ontwikkelen van software voor overheidsinstanties. Dit zijn instanties waaronder bijvoorbeeld ook onder andere : de belastingdienst, burgerszaken, verschillende bedrijven, notarissen, incassobureau’s en ook nog bewindvoerders. Momenteel tellen ze 20 medewerkers, waarvan 2/3 deel allemaal developers zijn. Doordat ze de enigste aanbieder van dit soort software op de markt zijn, groeien ze erg hard. Door de enorme groei, hebben ze dan ook concrete groeiplannen in het verschiet. Functie-omschrijving Het bedrijf wordt door allerlei instanties ingeschakeld. Tegenwoordig wordt alles digitaal geregeld en gezien de essentie van dit soort

Bekijk vacature »

Furio Scripting

Furio Scripting

11/02/2019 17:51:21
Quote Anchor link
Beste forumleden,

Ik heb een eenvoudig probleem waar ik niet uitkom na wat uren proberen.

Ik heb 5 checkboxes welke je kan selecteren, elk met zijn eigen waarde. (1-5)

In php loop ik door de array en weet ik welke checkboxes allemaal geselecteerd zijn.

Stel ik heb checkbox 1 en checkbox 3 geselecteerd dan heb ik de waardes 1 en 3.


Nu heb ik in mijn database een tabel score, ook 1-5. Ik wil op basis van wat de gebruiker aanvinkt de resultaten ophalen dus alle data waar score 1 of 3 is. Waar gaat het fout?

Dit is mijn code:

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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$qf = "";
 if ($_SERVER['REQUEST_METHOD'] == 'POST' )
    {
    
    foreach($_POST['filtersterren'] as $selected)
    {
    
        if ($selected == 1)
        {
        $qf .= " AND score = 1 ";
        }
        
        if ($selected == 2)
        {
        $qf .= " AND score = 2 ";
        }
        if ($selected == 3)
        {
        $qf .= " AND score = 3 ";
        }
        if ($selected == 4)
        {
        $qf .= " AND score = 4 ";
        }
        if ($selected == 5)
        {
        $qf .= " AND score = 5 ";
        }
    
    }
    


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $q = 'SELECT * FROM tabel WHERE id = '.$Id.' '.$qf.' ORDER BY id DESC';?>
 
PHP hulp

PHP hulp

15/02/2019 21:10:24
 
Ozzie PHP

Ozzie PHP

11/02/2019 17:58:52
Quote Anchor link
Probeer eens met de volgende syntax:

.... WHERE id = 12 and score IN(1,3)
 
Furio Scripting

Furio Scripting

11/02/2019 18:02:56
Quote Anchor link
Hi Ozzie, dan werkt het inderdaad!, thanks. Nog 1 vraagje hoe moet ik dit in de if else neerzetten?

Ik krijg dus een array met de scores welke geselecteerd zijn, dit moet ik aan mijn bestaande query koppelen.
 
Ozzie PHP

Ozzie PHP

11/02/2019 18:06:28
Quote Anchor link
Even op de gok ... in plaats van die foreach met al die ifjes ...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$in
= implode(',', $_POST['filtersterren']);

$q = 'SELECT * FROM tabel WHERE id = '.$Id.' and score IN('.$in.') ORDER BY id DESC';
 
Thomas van den Heuvel

Thomas van den Heuvel

11/02/2019 19:29:37
Quote Anchor link
De reden waarom het eerder niet werkte was waarschijnlijk omdat een score niet tegelijkertijd meerdere verschillende waarden kan hebben. Dat is in wezen wat je in je eerste query afdwingt (AND score = 1 AND score = 2 et cetera). Die conditie zal nooit voldoen.

Nog een gotcha: niet-aangevinkte checkboxen worden ook niet verstuurd, dus het is helemaal niet gegarandeerd dat $_POST['filtersterren'] bestaat... Controleer hier dus op.
Gewijzigd op 11/02/2019 19:30:01 door Thomas van den Heuvel
 
Rob Doemaarwat

Rob Doemaarwat

11/02/2019 19:31:07
Quote Anchor link
Lalala SQL-injectie ...
 
Thomas van den Heuvel

Thomas van den Heuvel

11/02/2019 22:52:46
Quote Anchor link
In het stukje van @Ozzie is het verstandig om eerst het een en ander te valideren ja :).
 
Ozzie PHP

Ozzie PHP

11/02/2019 22:55:00
Quote Anchor link
Dat spreekt voor zich. Furio draait al wat jaartjes mee en ik ga er vanuit dat hij dat zelf ook wel weet.
 
Furio Scripting

Furio Scripting

11/02/2019 23:52:03
Quote Anchor link
Heel erg bedankt allemaal en met name Ozzie! Alles werkt naar behoren en uiteraard zal de user input gevalideerd worden.
 
Ozzie PHP

Ozzie PHP

12/02/2019 00:44:15
Quote Anchor link
Graag gedaan ;-)
 



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.