Je suis un programmeur amateur, travaillant sur un petit projet, mais je me suis bloqué quand je voulais faire des filtres pour ma sortie mysql.Filtrer avec PHP et MYSQL
Tout fonctionne quand je remplis tous les champs de recherche et soumets, le résultat filtré correct apparaît. Mais quand je laisse un champ dehors, rien ne s'affiche (commande autre que) en utilisant la condition ET. Si j'utilise OR et le laisse vide, il affiche tous les résultats sans se soucier de ce qui a été rempli dans les champs requis.
Y aurait-il moyen de montrer le résultat même si l'un des champs reste vide? J'ai essayé de jouer avec un code de post différent ici dans stackoverflow mais pas de chance encore car je ne suis pas vraiment très expérimenté et ne peux pas comprendre comment utiliser ceci à l'intérieur de mon code.
if(isset($_POST["profilename"]) && $_POST["profilename"] != "")
$sql .= " AND profilename = '". $_POST["profilename"] ."'";
Ci-dessous voici mon code, si vous pouvez jeter un oeil et de suggérer ce que je pouvais modifier de sorte que le filtrage travaillerait.
<select class="form-control" id="Select1" name="departure">
<select class="form-control" id="Select2" name="destination">
<select class="form-control" id="Select3" name="layover">
...
<?php
include_once("connect.php");
if (isset($_GET['submit'])) {
$departure = mysqli_real_escape_string($connection, $_GET['departure']);
$destination = mysqli_real_escape_string($connection, $_GET['destination']);
$layover = mysqli_real_escape_string($connection, $_GET['layover']);
$result = mysqli_query($connection, "SELECT * FROM crud
WHERE departure LIKE '$departure%'
AND kam LIKE '$kam'
AND layover LIKE '$layover'
ORDER BY id DESC");
if($make = mysqli_num_rows($result) > 0){
while($r = mysqli_fetch_assoc($result)){
echo '<div style="display:block;"'.$r['departure'].'</div>';
echo '<div style="display:block;"'.$r['kam'].'</div>';
echo '<div style="display:block;"'.$r['layover'].'</div>';
//following code..
}
}else{
echo'<h4>No match found!</h4>';
print ($make);
}
mysqli_free_result($result);
mysqli_close($connection);
}
?>
Par exemple: Filtre Departure
avec Destination
et laisser Layover
vide -> doit renvoyer un résultat de Departure and Destination
désiré avec TOUT Layover
. ou 2ème exemple: Remplissez Destination
avec Layover
mais laissez Departure
vide entraînerait la recherche souhaitée de Destination and Layover
avec Departure
.
S'il vous plaît laissez-moi savoir si c'est possible avec mon code et éventuellement comment. Merci beaucoup les gars !!
Parfait, cela fonctionne bien et la solution était assez facile! :) Aurait également des conseils spécifiques quoi changer dans mon code afin qu'il ne soit pas vulnérable à l'injection SQL? Je ne suis pas vraiment sûr de ce que je pourrais changer pour éviter cela. Merci beaucoup! –