Probleme php sous MySql
Fermé
KaTaNaSTYLE26
Messages postés
23
Date d'inscription
mercredi 6 janvier 2010
Statut
Membre
Dernière intervention
11 février 2010
-
10 févr. 2010 à 15:20
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 11 févr. 2010 à 15:24
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 11 févr. 2010 à 15:24
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 gratuit ou payant - Forum MySQL
7 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
10 févr. 2010 à 18:47
10 févr. 2010 à 18:47
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"; }
KaTaNaSTYLE26
Messages postés
23
Date d'inscription
mercredi 6 janvier 2010
Statut
Membre
Dernière intervention
11 février 2010
1
11 févr. 2010 à 08:52
11 févr. 2010 à 08:52
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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 févr. 2010 à 09:01
11 févr. 2010 à 09:01
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'];
KaTaNaSTYLE26
Messages postés
23
Date d'inscription
mercredi 6 janvier 2010
Statut
Membre
Dernière intervention
11 février 2010
1
11 févr. 2010 à 09:13
11 févr. 2010 à 09:13
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
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 févr. 2010 à 13:47
11 févr. 2010 à 13:47
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(.....)
KaTaNaSTYLE26
Messages postés
23
Date d'inscription
mercredi 6 janvier 2010
Statut
Membre
Dernière intervention
11 février 2010
1
11 févr. 2010 à 15:09
11 févr. 2010 à 15:09
ça marche nickel =D
merci
je connaisais pas cette astuce d'utiliser des array ;)
je note ça quelque part ;)
merci encore
bonne journée
merci
je connaisais pas cette astuce d'utiliser des array ;)
je note ça quelque part ;)
merci encore
bonne journée
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 févr. 2010 à 15:24
11 févr. 2010 à 15:24
en php les array c'est très puissant, tu peux même en avoir a plusieurs dimensions.
Mets en résolu
Mets en résolu