Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/03/2011, 16h54   #1
Invité régulier
 
daddy roots
Inscription : février 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : daddy roots

Informations forums :
Inscription : février 2010
Messages : 24
Points : 5
Points : 5
Par défaut Problème avec les conditions if else elseif dans la construction de ma requête

Bonjour à tous,
Je vous expose mon problème :
J'ai un moteur de recherche sur mon site, elle se fait sur plusieurs critères...le soucies est que je souhaite qu'elle me donne egalement les resultats soit :

1 - sur la France entière
2 - sur toute la région
3 - sur un département

Problème, j'affiche bien la France, la région mais pas le département, celui-ci me retourne les résultats pour toute la France... J'ai essayé plusieur manip dans mes conditions if else et elseif mais j'obtiens à chaque fois que deux des trois resultats souhaités...

Si quelqu'un à une idée à me soumettre je suis preneur !
Cordialement et merci à tous,
Karpe

P.S: si je me suis planté de Forum, ce qui n'est pas improbable, n'hesitez pas à le deplacer


Le traitement de ma condition :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
//$localisation est le nom du champ a choix multiple
if ((!($localisation == $_GET['id_region'])) && (!($localisation == 0)))
{
$selecloc = "AND departement='$localisation'";
}
//si $ localisation n'est pas egale a l'idée de région ou a zero on selectionne le departement, c'est la que ca marche pas
 
elseif ($localisation == $_GET['id_region'])
{
$selecloc = "AND region='$localisation'";
}
//si $localisation est egale a l'id de region on selectionne la region, là ca marche
 
elseif ($localisation == 0)
{
$selecloc = "";
}	
// sinon si $localisation est egale à 0 on selectionne la france, là ca marche aussi
Ma requete :
Code :
1
2
3
4
 
$selection_recherche = mysql_query("SELECT *
FROM annonces
WHERE $valeur_requete $selecat $selecloc ORDER BY idannonce DESC LIMIT $limite,$nombre");
karpe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 17h32   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
et comme ca ? :
Code :
1
2
3
4
if (($localisation != $_GET['id_region']) && ($localisation != 0))
{
$selecloc = "AND departement='$localisation'";
}
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 17h37   #3
Invité régulier
 
daddy roots
Inscription : février 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : daddy roots

Informations forums :
Inscription : février 2010
Messages : 24
Points : 5
Points : 5
Merci Vorace, mais non toujours pas ... c'est con ce genre de détail... j'suis en mode casse-tête chinois...
karpe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 17h39   #4
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 587
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur

Informations forums :
Inscription : août 2010
Messages : 587
Points : 861
Points : 861
rajoute le code html avec le champs à choix multiples...
__________________
Développeur informatique contrarié...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 18h16   #5
Invité régulier
 
daddy roots
Inscription : février 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : daddy roots

Informations forums :
Inscription : février 2010
Messages : 24
Points : 5
Points : 5
le champ a choix multiple ne change pas grand chose... Il s'appel "localisation" ...et j'arrive a afficher indépendamment chacun des trois critères ...donc le champ est bon ... le problème c'est que dans ma requête il n'y aura à chaque fois que deux des trois possibilité qui marchera pour la recherche ...
J'suis dépité ...
karpe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 18h18   #6
Invité régulier
 
daddy roots
Inscription : février 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : daddy roots

Informations forums :
Inscription : février 2010
Messages : 24
Points : 5
Points : 5
Le soucie viens donc bel et bien de la formulation de ma condition..
karpe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 18h21   #7
Membre éprouvé
 
Homme Gaetan
Webmaster
Inscription : janvier 2007
Messages : 386
Détails du profil
Informations personnelles :
Nom : Homme Gaetan
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Biens de consommation

Informations forums :
Inscription : janvier 2007
Messages : 386
Points : 441
Points : 441
Envoyer un message via MSN à Gaetan_
A mon avis ca sctoch car tu n'as pas le même nombre de critères dans tes conditions.

Et un truc simplifié genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
if (($localisation == $_GET['id_region']) && ($localisation != 0))
{
$selecloc = "AND departement='$localisation'";
}
elseif (($localisation != $_GET['id_region']) && ($localisation != 0))
{
$selecloc = "AND region='$localisation'";
}
else
{
$selecloc = "";
}
Gaetan_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 18h38   #8
Invité régulier
 
daddy roots
Inscription : février 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : daddy roots

Informations forums :
Inscription : février 2010
Messages : 24
Points : 5
Points : 5
Merci Gaëtan,
J'ai fait une petite modif au niveau du point d'exclamation ...mais cela ne regle pas le problème ...j'ai bien l'affichage de la région ainsi que de la france mais pas le departement...qui lui me renvoi a l'affichage de toute la france..

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
if (($localisation != $_GET['id_region']) && ($localisation != 0))
{
$selecloc = "AND departement='$localisation'";
}
elseif (($localisation == $_GET['id_region']) && ($localisation != 0))
{
$selecloc = "AND region='$localisation'";
}
else
{
$selecloc = "";
}
A noter que cette ligne seul m'affiche bien le resultat pour le departement choisi

Code :
1
2
 
$selecloc = "AND departement='$localisation'";
karpe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 18h42   #9
Invité régulier
 
daddy roots
Inscription : février 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : daddy roots

Informations forums :
Inscription : février 2010
Messages : 24
Points : 5
Points : 5
... pour vous rendre compte, voilà l'adresse de la page en test ..www.loca-loc.fr/voir_annonce.php ? id_region=4

(retirer les espace avant et aprés le point d'interrogations)
karpe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/03/2011, 20h45   #10
Invité régulier
 
daddy roots
Inscription : février 2010
Messages : 24
Détails du profil
Informations personnelles :
Nom : daddy roots

Informations forums :
Inscription : février 2010
Messages : 24
Points : 5
Points : 5
Bon bien j'ai résolu mon problème tout seul comme un grand ...

Il suffisait de rajouter des guillemets simple pour la localisation France entière c'est à dire autour des '0' ...voilà si ca peut aider je rebalance le code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
if (($localisation != $_GET['id_region']) && ($localisation !== '0'))
{
$selecloc = "AND departement='$localisation'";
}
elseif ($localisation == $_GET['id_region'])
{
$selecloc = "AND region='$localisation'";
}	 
elseif ($localisation == '0')
{
$selecloc = "";
}
karpe est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h48.


 
 
 
 
Partenaires

Hébergement Web