Probleme php sous MySql
KaTaNaSTYLE26
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'explique un peu mon probleme
j'essaye de faire un filtrage sur une table mysql en php
mais apparament ma requete que j'utilise pose un probleme, INTERSECT ne fonctionne pas sur mysql /(>_<)\
voici mon code pour vous montré ce que je cherche a faire
comment puis-je faire pour reussir a filtré sans intersect?
merci
J'explique un peu mon probleme
j'essaye de faire un filtrage sur une table mysql en php
mais apparament ma requete que j'utilise pose un probleme, INTERSECT ne fonctionne pas sur mysql /(>_<)\
voici mon code pour vous montré ce que je cherche a faire
$type=''; $domaine=''; $ville=''; $sql=''; if ($_POST['type_offre']<>"") { $type= "select * from offre where type_offre='".$_POST['type_offre']."'"; } if ($_POST['domaine_rech']<>"") { $domaine= "select * from offre where domaine='".$_POST['domaine_rech']."'"; } if ($_POST['ville_rech']<>"") { $ville= "select * from offre where departement='".$_POST['ville_rech']."'"; } if ($type<>'') { $sql=$type; } if ($domaine<>'') { if ($sql<>'') { $sql=$sql. " intersect ".$domaine; } else { $sql=$domaine; } } if ($ville<>'') { if ($sql<>'') { $sql=$sql. " intersect ".$ville; } else { $sql=$ville; } } if ($sql=='') { $sql="select * from offre"; }
comment puis-je faire pour reussir a filtré sans intersect?
merci
A voir également:
- Probleme php sous MySql
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Php alert - Forum PHP
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
7 réponses
avec AND
essayes comme ça:
essayes comme ça:
$type=''; $domaine=''; $ville=''; $sql=''; if ($_POST['type_offre']!="") { //test sur une chaine c'est plutôt != que <> $type= "SELECT * FROM offre WHERE type_offre='".$_POST['type_offre']."'"; } if ($_POST['domaine_rech']!=""){ $domaine= "SELECT * FROM offre WHERE domaine='".$_POST['domaine_rech']."'"; } if ($_POST['ville_rech']!=""){ $ville= "SELECT * FROM offre WHERE departement='".$_POST['ville_rech']."'"; } /* ensuite $type $domaine $ville ne te renvoie pas ta valeur mais une ressource permettant d'atteindre la zone mémoire ou est stocké le resultat de la requette mysql_num_rows permet d'avoir le nombre mysql_fetch_array par exemple permet d'aller lire les valeurs cette zone mémoire */ if (mysql_num_rows($type)>0){ $sql=$type; } if (mysql_num_rows($domaine)>0){ if ($sql!=''){ $sql=$sql." AND domaine=".$domaine; }else { $sql=$domaine; } } if (mysql_num_rows($ville)>0){ if ($sql!=''){ $sql=$sql. " AND ville= ".$ville; }else{ $sql=$ville; } } if ($sql==''){ $sql="SELECT * FROM offre"; }
le 'AND' ne passe pas malheureusmement...
Erreur SQL !
select * from offre where type_offre='sta' AND select * from offre where departement='26'
Erreur de syntaxe pr�s de 'select * from offre where departement='26'' � la ligne 1
Erreur SQL !
select * from offre where type_offre='sta' AND select * from offre where departement='26'
Erreur de syntaxe pr�s de 'select * from offre where departement='26'' � la ligne 1
ha oui ok, essayes en remplaçant
if (mysql_num_rows($domaine)>0){
if ($sql!=''){
$sql=$sql." AND domaine=".$domaine;
par
if (mysql_num_rows($domaine)>0){
if ($sql!=''){
$sql=$sql." AND domaine=".$domaine;
par
if (mysql_num_rows($domaine)>0){ if ($sql!=''){ $sql=$sql." AND domaine=".$_POST['domaine_rech'];
j'ai deja pensé a cette solution mais mon systeme de filtrage ne sortira rien comme resultat car il n'y a pas deux requete max, mais 3, a cause de 3 criteres de recherches, et faire cela fera la recherche sur une valeur vide de domaine (ou departement) si ceux si n'ont pas été initialisé dans le formulaire
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
une solution totalement différente en passant par un array, plus souple, on peut avoir de 1 à 3 critères, indifféremment:
//init array $array_criteres=array(); //c'est un array dans lequel on va empiler les critères dont le champ est rempli //recuperation des champs non vides et empilage dans l'array //ATTENTION: ci dessous modifies les index de l'array pour qu'ils correspondent aux noms des champs de ta table BDD //ex: $array_criteres['type'] si le champ n'est pas type modifies if (isset($_POST['type_offre']) && $_POST['type_offre']!=""){ $array_criteres['type']=$_POST['type_offre']; } if (isset($_POST['domaine_rech']) && $_POST['domaine_rech']!=""){ $array_criteres['domaine']=$_POST['domaine_rech']; } if (isset($_POST['ville_rech']) && $_POST['ville_rech']!=""){ $array_criteres['ville']=$_POST['ville_rech']; } // construction de la requette //debut $requette="SELECT * FROM offre "; //criteres $critere=0; if(sizeof($array_criteres) > 0 ){ //au moins 1 critere rempli foreach($array_criteres as $nom_champ_BDD=>$val_cherchee){ if($critere == 0){ //premier critere on met WHERE ... en compilant par .= $requette.="WHERE ".$nom_champ_BDD."='".$val_cherchee."'"; }else{ //criteres suivants on rajoute le AND..... en compilant par .= $requette.=" AND ".$nom_champ_BDD."='".$val_cherchee."'"; } $critere++; } }else{ //cas ou aucun des champs criteres n'a été rempli dans le formulaire /// - soit tu sort toute la table: on laisse la requette sans rien rajouter de plus // - soit tu mets un message ///echo 'Vous devez remplir au moins un des criteres !'; } //la requette est construite on va la soumettre à la BDD $resultat=mysql_query($requette) or die ('Pb avec la requette '.mysql_error()); //et la suite pour l'affichage avec une boucle while(.....)