Door
marina janssen
op 13-03-2016 21:27
gewijzigd op 13-03-2016 22:29
2.724 views
Stel, ik wil alle rijen (ongeacht de inhoud) uit een mysql kolom genaamd Vacht selecteren mbv een formulier.
Wat is de juiste manier om dit te verwerken? Dit is wat ik geprobeerd heb en geen van deze werkt.
if(isset($_GET['Vacht']) and ($_GET['Vacht'] === "alles"))
Met deze querie krijg je toch alleen de kolom nummer terug van alle rijen waarvan
EN inhoud kolom code gelijk is $code
EN inhoud van kolom Datum >= $datum
EN inhoud van kolom Vacht lijkt op $Vacht
Wanneer je de vacht ook in de resultaat rijen wilt hebben zal je deze ook in de select op moeten nemen.
SELECT Nummer, vacht FROM katten
Vervolgens kan je mbv een loop alle vachten tonen die in het query resultaat staan.
Wanneer ik de vraag in je openingstopic goed berijp zou de query als volgt moeten zijn:
SELECT vacht FROM katten
Hiermee krijg je van alle rijen de vacht als resultaat.
Indien vacht geen zoekcriterium is (alle vachten zijn toegestaan, en/of er is geen specifieke vacht-voorkeur opgegeven) hoef je dit niet als zoekcriterium op te nemen in je query :).
De truuk is denk ik om de zoekquery interactief op te bouwen en alleen die criteria in je query op te nemen waarvoor specifieke waarden zijn opgegeven. Wanneer er niet expliciet iets is opgegeven over vacht, neem je dit simpelweg niet op als argument in de (interactief te bouwen) query(string).
?
Onbekende gebruiker
14-03-2016 13:48
<?php
if(isset($_GET['Vacht']) and ($_GET['Vacht'] === "alles")) {
$sTabel = 'mijntabel';
$oResultaat = $oMySQLi->query('SELECT `Vacht` FROM `' . $sTabel . '`';
while ($aRij = $oResultaat->fetch_assoc()) {
print_r($aRij);
}
$oResultaat->close();
}
?>
Indien vacht .... hoef je dit niet als zoekcriterium op te nemen in je query :).
Jwel, want er zijn ook mogelijkheden die wel wel Vacht selecteren dus Vacht zit in de paginatie. Ik kan het niet zomaar weglaten. Ik heb het nu opgelost door de query te splitsen met if, de ene is dat <?php SELECT * where Vacht not like $Vacht?> en de andere <?php SELECT * where Vacht like $Vacht?> en dan werkt de paginatie gewoon.
Maar ik heb ook nog een radiobutton die ik toe wil voegen die ook al de query splitst en dan wordt het wel erg ingewikkeld. Is er niet een methode dat je alles kan selecteren ongeacht de inhoud zodat ik niet hoef te splitsen?
Geen if gebruiken om één query te bepalen, en in je query (die hier op de WHERE voorwaarde iets verschilt) bepalen wat er getoond of gefilterd moet worden.