Bonjour,
Je me trouve façe à un problème qui me laisse perplexe :
J'ai développé une petite application qui permet à des clients de faire des demandes d'expédition à partir d'une interface personnalisée.
Ces demandes sont stockées et affichées dans une administration.
Une page de cette administration me permet d'afficher les résultats en fonction de critères de tri (grace à des déroulants).
Tout fonctionne très bien,sauf pour un champ ou ça fonctionne... à moitié.
Les variables de tri sont passées en $_GET et la requête est construite en fonction de ces variables :
if ($_GET['raz']=='1'){ $query = 'SELECT * FROM expe WHERE nom_expe!="<b>MAJ STOCK</b>" AND dateenvoi between "'.$debut_mois.'" AND "'.$demain.'"'; }else{ $query = 'SELECT * FROM expe WHERE 1 AND nom_expe!="<b>MAJ STOCK</b>"'; $tab_ch=array('produits','modexpe','dept', 'transporteur','traitement','traitement_im','traitement_livraison'); foreach($tab_ch as $k=>$v) { if($_GET[$v]!=(''||'0')){ $query.=' AND '.$v.' LIKE "'.$_GET[$v].'%"'; } } if ($_GET['sansdate']!='sansdate') { if (($_GET['datedebut']=='Clique ici')||($_GET['datedebut']=='')){ $query.= ' AND dateenvoi between "'.$debut_mois.'"'; }else{ $query.= ' AND dateenvoi between "'.$_GET['datedebut'].'"'; } if (($_GET['datefin']=='Clique ici')||($_GET['datefin']=='')){ $query.= ' AND "'.$demain.'"'; }else{ $query.= ' AND "'.$_GET['datefin'].'"'; } if ($_GET['tri']!=''){ $query.= ' ORDER BY '.$_GET['tri']; }else{ $query.= ' ORDER BY dateenvoi DESC'; } }else{ if ($_GET['tri']!=''){ $query.= ' ORDER BY '.$_GET['tri']; }else{ $query.= ' ORDER BY dateenvoi DESC'; } } }
Le problème apparait avec la variable traitement_im (qui peut avoir trois état : "à traiter", "traité", "enlevé"):
Lorsque la requête (que j'affiche après l'avoir construite) est :
SELECT * FROM expe WHERE 1 AND nom_expe!="MAJ STOCK" AND traitement_imprim LIKE "enlevé%" ORDER BY dateenvoi DESC
le résultats sont bien retournés, mais...
lorsque la requête est
SELECT * FROM expe WHERE 1 AND nom_expe!="MAJ STOCK" AND traitement_imprim LIKE "traité%" ORDER BY dateenvoi DESC
ou
SELECT * FROM expe WHERE 1 AND nom_expe!="MAJ STOCK" AND traitement_imprim LIKE "à traiter%" ORDER BY dateenvoi DESC
aucun résultats ne sont retournés, alors qu'ils devraient y en avoir !
Les deux requêtes passées directement dans phpMyAdmin retourne bien des résultats...
J'avoue que je n'y comprend rien...
Merci d'avance de me donner votre avis