par
Ryle » 20 août 2014, 21:32
En fait, la requête SQL n'est rien d'autres qu'une chaine de caractères que php va transmettre à la base de données pour qu'elle l’interprète. L'idée est donc de construire cette chaine de caractère de façon dynamique en concaténant les morceaux de chaine dont tu as besoin.
Cela reviendrait donc à découper la requête ainsi :
$sql = "SELECT * FROM jeux_video WHERE " . " nom LIKE '%$requete%' " . " AND console = '$choix' " . " ORDER BY nom ASC ";
$sql = "SELECT * FROM jeux_video WHERE ";
$sql.= " nom LIKE '%$requete%' ";
$sql.= " AND console = '$choix' ";
$sql.= " ORDER BY nom ASC ";
et mettre des conditions sur les morceaux à intercaler
$sql = "SELECT * FROM jeux_video WHERE 1=1 ";
if ($requete!='')
$sql.= " AND nom LIKE '%$requete%' ";
if ($choix!='')
$sql.= " AND console = '$choix' ";
$sql.= " ORDER BY nom ASC ";
le code précédent fait la même chose, mais à l'avantage de gérer un peu plus proprement l'insertion des WHERE et AND en fonction des conditions déjà présentes dans la requête (sans utiliser l'astuce du un 1=1 pour pas se prendre la tête à savoir s'il faut mettre un WHERE ou un AND avant la condition)

En fait, la requête SQL n'est rien d'autres qu'une chaine de caractères que php va transmettre à la base de données pour qu'elle l’interprète. L'idée est donc de construire cette chaine de caractère de façon dynamique en concaténant les morceaux de chaine dont tu as besoin.
Cela reviendrait donc à découper la requête ainsi :
[php]$sql = "SELECT * FROM jeux_video WHERE " . " nom LIKE '%$requete%' " . " AND console = '$choix' " . " ORDER BY nom ASC ";[/php]
[php]$sql = "SELECT * FROM jeux_video WHERE ";
$sql.= " nom LIKE '%$requete%' ";
$sql.= " AND console = '$choix' ";
$sql.= " ORDER BY nom ASC ";[/php]
et mettre des conditions sur les morceaux à intercaler
[php]$sql = "SELECT * FROM jeux_video WHERE 1=1 ";
if ($requete!='')
$sql.= " AND nom LIKE '%$requete%' ";
if ($choix!='')
$sql.= " AND console = '$choix' ";
$sql.= " ORDER BY nom ASC ";[/php]
le code précédent fait la même chose, mais à l'avantage de gérer un peu plus proprement l'insertion des WHERE et AND en fonction des conditions déjà présentes dans la requête (sans utiliser l'astuce du un 1=1 pour pas se prendre la tête à savoir s'il faut mettre un WHERE ou un AND avant la condition) :)