0 votes

Exceptions de requête MySQL

Sur une page, il devrait afficher les enregistrements ayant le mois sélectionné suivant le menu déroulant et défini dans le ?month=Mars

Donc la requête fera ceci

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . "' AND finished='0' ORDER BY date ASC";

Mais il affiche des enregistrements ayant une valeur de 2 dans la colonne finished et je ne veux pas que la requête les inclue.

J'ai essayé

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) . "' AND finished='0' OR finished = '1' OR finished = '3' ORDER BY date ASC";

Mais il affiche des enregistrements sur différents mois alors qu'il ne devrait pas le faire.

Donc en gros, je veux que l'enregistrement exclue les enregistrements ayant la valeur de 2 dans l'enregistrement qui ne seront pas affichés sur la page.

0voto

Mark Byers Points 318575

Votre première requête devrait faire ce que vous voulez. Les lignes avec finished = '2' ne devraient pas être renvoyées.

En ignorant qu'il y a une erreur dans votre deuxième requête que vous devriez probablement corriger :

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) .
       "' AND (finished='0' OR finished = '1' OR finished = '3') ORDER BY date ASC";

La différence est les parenthèses autour des clauses OR parce que AND lie plus fortement que OR.

Vous pourriez également obtenir le même résultat de manière plus concise en utilisant IN :

$sql = "SELECT * FROM schedule WHERE month = '" . Clean($_GET['month']) .
       "' AND finished IN ('0', '1', '3') ORDER BY date ASC";

0voto

Amy B Points 9363

ET fini='0' OU terminé = '1' OU terminé = '3'

à

ET fini != 2

ou

ET (fini = 0 OU fini = 1 OU fini = 3)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X