Alles selecteren of waarde
Welke waarde kan ik doorgeven om alles te selecteren?
Code (php)
1
2
3
4
2
3
4
$cat_id = $_GET['cat_id'];
$sql = "SELECT * FROM producten WHERE producten.cat_id = '$cat_id'";
$result = $conn->query($sql);
$sql = "SELECT * FROM producten WHERE producten.cat_id = '$cat_id'";
$result = $conn->query($sql);
Gewijzigd op 09/01/2019 23:46:10 door Kees Mulder
Klopt dat?
PS: Let wel op SQL-injection. je query is nu onveilig doordat $_GET['cat_id'] onbeschermd is.
Klopt inderdaad. Ik wil kunnen filteren alleen weet ik niet zo goed wat je alles kan selecteren als waarde.
Dus standaard toon je alles.
Is de url: zoeken.php?filter=fruit, dan zoek je op fruit (AND type = 'fruit')
Is de url: zoeken.php?filter=groente, dan zoek je op fruit (AND type = 'groente')
Dat had ik inderdaad al. Maar als ik bijv eerst fruit heb gedaan maar wil daar toch alles weer laten zien hoe geef ik dat dan aan? Zoeken.php?filter=*
zoeken.php gewoon, maar je kan ook een voorwaarde maken zoals ?filter=no die de AND voorwaarde niet gebruikt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
Hoe groot is die kans?
Wellicht kan je beter zoeken naar cat_id <> leeg.
Dit kan je oefenen in bijvoorbeeld phpmyadmin.
Kees Mulder op 10/01/2019 08:58:59:
Je krijgt dan het volgende?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
In de IF en ELSE staat exact dezelfde code ...
Als dit, dan doe dit ... en zo niet ... doe dan precies hetzelfde!
Dat heeft niet zo veel zin hè ;-)
Ik zou sowieso een else gebruiken bij je isset-statement. Als $_GET['cat_id'] niet bestaat (dus enkel zoeken.php wordt aangeroepen) dan wil je (denk ik?) je normale ongefilterde query uitvoeren.
Ozzie PHP op 10/01/2019 10:25:58:
In de IF en ELSE staat exact dezelfde code ...
Als dit, dan doe dit ... en zo niet ... doe dan precies hetzelfde!
Dat heeft niet zo veel zin hè ;-)
Kees Mulder op 10/01/2019 08:58:59:
Je krijgt dan het volgende?
Code (php)
In de IF en ELSE staat exact dezelfde code ...
Als dit, dan doe dit ... en zo niet ... doe dan precies hetzelfde!
Dat heeft niet zo veel zin hè ;-)
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$sql = 'SELECT * FROM producten';
if (isset($_GET['cat_id']) && ctype_digit($_GET['cat_id'])) {
$sql .= ' WHERE cat_id = ' . $_GET['cat_id'];
}
?>
$sql = 'SELECT * FROM producten';
if (isset($_GET['cat_id']) && ctype_digit($_GET['cat_id'])) {
$sql .= ' WHERE cat_id = ' . $_GET['cat_id'];
}
?>
In plaats van een brei van if-elseif-else statements die meerdere keren min of meer hetzelfde doen (Don't Repeat Yourself).
Gewijzigd op 10/01/2019 15:33:40 door Thomas van den Heuvel