Hoe kan ik alles selecteren of een bepaalde waarde. Bijv: Selecteer producten: alles | groente | fruit

Welke waarde kan ik doorgeven om alles te selecteren?



$cat_id = $_GET['cat_id'];

$sql = "SELECT * FROM producten WHERE producten.cat_id = '$cat_id'";
$result = $conn->query($sql);

Je wilt je query dus dynamisch maken omdat je een filter wilt toepassen?
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.
Je kan in de URL aangeven hoe je wilt filteren.
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=*
Het makkelijkste is om bij het begin te beginnen. Een ongefilderde query.
zoeken.php gewoon, maar je kan ook een voorwaarde maken zoals ?filter=no die de AND voorwaarde niet gebruikt.
Je krijgt dan het volgende?

<?php
$cat_id = $_GET['cat_id'];

if(isset($_GET['cat_id'])) {
if($_GET['cat_id'] == '') {
// query to get all records
$sql = "SELECT * FROM producten WHERE producten.cat_id = '$cat_id'";
}
else{
// query to get all records
$sql = "SELECT * FROM producten WHERE producten.cat_id = '$cat_id'";
}
?>

In regel 7 zoek je alles waarbij cat_id leeg is.

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?

<?php
$cat_id = $_GET['cat_id'];

if(isset($_GET['cat_id'])) {
if($_GET['cat_id'] == '') {
// query to get all records
$sql = "SELECT * FROM producten WHERE producten.cat_id = '$cat_id'";
}
else{
// query to get all records
$sql = "SELECT * FROM producten WHERE producten.cat_id = '$cat_id'";
}
?>



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

[quote="Kees Mulder op 10/01/2019 08:58:59"]
Je krijgt dan het volgende?

<?php
$cat_id = $_GET['cat_id'];

if(isset($_GET['cat_id'])) {
if($_GET['cat_id'] == '') {
// query to get all records
$sql = "SELECT * FROM producten";
}
else{
// query to get all records
$sql = "SELECT * FROM producten WHERE producten.cat_id = '$cat_id'";
}
?>



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è ;-)

[/quote]

Reageren