8795 sujets

Développement web côté serveur, CMS

Bonjour j'ai un formulaire avec 3 champs

• 1 X categorie
• 1 X Region
• 1 champs text libre

Mon problème et le résultat !

$cat = $_GET['c'];
$reg = $_GET['r'];
$sql = "SELECT * FROM offre 
				 WHERE reg = '$reg' 
				 AND ligne = 'oui' 
				 AND titre LIKE '%$_GET[o]%' 
				 AND cat = '$cat'
				 
				 ORDER BY id_offre DESC 
				 LIMIT $limit_start, $pagination";


ci je remplie fou les champs c bon!
Ce que je voudrais faire c que si champs catégorie et vide on affiche tout etc.

Merci d'avance
si je mais
AND cat LIKE '%$cat%'

il m'affiche la categorie qui j'ai remplie dans le formulaire mais si un je mais la cat. 1 il m'affiche la cat. 1,10,11,..
et ci je mais rien donc cat. pas replie il m'affiche toute les cat. !!
Modifié par bibi67 (23 Jan 2014 - 13:06)
Bonjour,
Il faut que tu construises ta requête SQL en plusieurs fois:
$cat = $_GET['c'];
$reg = $_GET['r'];
$sql = "SELECT * FROM offre 
				 WHERE reg = '$reg' 
				 AND ligne = 'oui' 
				 AND titre LIKE '%$_GET[o]%' ";
				 
if($cat !=''){
$sql .= " AND cat = '$cat'"
}				 
$sql .= " ORDER BY id_offre DESC LIMIT $limit_start, $pagination";


Comme ça si $cat est vide, ta requête ne la prend pas en compte dans le filtre, donc elle affichera toutes les catégories. En revanche, si elle est remplie, il y aura un filtrage en plus sur la catégorie.
parfais ca marche Merci beaucoup

il me manque plus que la pagination
$nb_total = mysql_query("SELECT COUNT(*) AS nb_total FROM offre");									
$nb_total = mysql_fetch_array($nb_total);
$nb_total = $nb_total['nb_total'];

je pense qu'il faut aussi le construire mais j'ai un peu tout testé sans résulta