IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

requête avec conditions [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Par défaut requête avec conditions
    Bonjour,
    je débute en PHP et SQL, j'ai fait une requête avec plusieurs conditions, ça marche mais problème je sais pas quoi mettre au WHERE, là j'ai mis 1 mais le souci c'est que la première fois que j'affiche la page, j'ai tous les résultats qui s'affichent. Merrci de m'éclairer de vos lumières si vous aves une idée. Ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $sql = 'SELECT IDEnfant,NomEnfant,PrenomEnfant,Ville,Departement,NumConvoi,DateDeportation FROM bk_Enfant WHERE 1 ';
     if(!empty($champ_Nom))
    	{
    	$sql.='AND NomEnfant LIKE "%'.$champ_Nom.'%" '; 
    	}
    if(!empty($champ_Prenom))
    	{
    	$sql.='AND PrenomEnfant LIKE "%'.$champ_Prenom.'%" ';
    	}
     
    if(!empty($champ_Departement))
    	{
    	$sql.='AND Departement LIKE "%'.$champ_Departement.'%" ';
    	}
    if(!empty($champ_Ville))
    	{
    	$sql.='AND Ville LIKE "%'.$champ_Ville.'%" ';
    	}
     
    if(!empty($champ_DateDeportation))
    	{
    	$sql.='AND DateDeportation LIKE "%'.$champ_DateDeportation.'%" ';
    	}
    if(!empty($champ_NumConvoi))
    	{
    	$sql.='AND NumConvoi LIKE "%'.$champ_NumConvoi.'%" ';
    	}
    $sql.='LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 199
    Par défaut
    Salut,
    alors en fait je te propose d´utiliser 2 astuces (c´est peut-etre un peu tordu...)
    Tu prends un booleen pour savoir si il y a bien au moins un champ non empty.
    Si oui tu concatenes WHERE.
    Ensuite tu utilises une variables compteur, que tu incrementes des que tu ajoutes un critere de selection a WHERE.
    Du coup des que c´est superieur a 1, tu vas concatener AND avant a chaque fois

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $compteur=0;
    $monbooleen = false;
    if(!empty($champ_NumConvoi) OR !empty($champ_Nom) OR ...blablabla..)
    {
    	$monbooleen=true;
    	$sql.=' WHERE ';
    	$compteur++;
    }
    if(!empty($champ_DateDeportation))
    {
    	if($compteur>1)
    	{
    		$sql.=' AND ';
    	}
    	$sql.='DateDeportation LIKE "%'.$champ_DateDeportation.'%" ';
    }
    PS : Edite ton post pour mettre ton code ente les balises POST stp.
    Hesite pas a demander

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Par défaut
    Salut,
    merci pour la réponse rapide. J'ai essayé et ça marche presque! souci, il m'affiche pas les AND alors que pourtant le compteur est à 1, une idée?
    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    if(!empty($champ_Nom) OR !empty($champ_Prenom) OR !empty($champ_Departement) OR !empty($champ_Ville) OR !empty($champ_DateDeportation) OR !empty($champ_NumConvoi)){
    $compteur=0;
    $monbooleen = false;
    $sql = 'SELECT IDEnfant,NomEnfant,PrenomEnfant,Ville,Departement,NumConvoi,DateDeportation FROM bk_Enfant '; 
    if(!empty($champ_Nom) OR !empty($champ_Prenom) OR !empty($champ_Departement) OR !empty($champ_Ville) OR !empty($champ_DateDeportation) OR !empty($champ_NumConvoi))
    {
    	$monbooleen=true;
    	$sql.=' WHERE ';
    	$compteur++;
    	echo $compteur."<br />";
    }
    if(!empty($champ_Nom))
    {
    	if($compteur>1)
    	{
    		$sql.=' AND ';
    	}
    	$sql.='NomEnfant LIKE "%'.$champ_Nom.'%" ';
    }
    if(!empty($champ_Prenom))
    {
    	if($compteur>1)
    	{
    		$sql.=' AND ';
    	}
    	$sql.='PrenomEnfant LIKE "%'.$champ_Prenom.'%" ';
    }
    if(!empty($champ_Departement))
    {
    	if($compteur>1)
    	{
    		$sql.=' AND ';
    	}
    	$sql.='Departement LIKE "%'.$champ_Departement.'%" ';
    }
    if(!empty($champ_Ville))
    {
    	if($compteur>1)
    	{
    		$sql.=' AND ';
    	}
    	$sql.='Ville LIKE "%'.$champ_Ville.'%" ';
    }
    if(!empty($champ_DateDeportation))
    {
    	if($compteur>1)
    	{
    		$sql.=' AND ';
    	}
    	$sql.='DateDeportation LIKE "%'.$champ_DateDeportation.'%" ';
    }
    if(!empty($champ_NumConvoi))
    {
    	if($compteur>1)
    	{
    		$sql.=' AND ';
    	}
    	$sql.='NumConvoi LIKE "%'.$champ_NumConvoi.'%" ';
    }
     
    echo $sql."<br />";
    résultats:
    1
    SELECT IDEnfant,NomEnfant,PrenomEnfant,Ville,Departement,NumConvoi,DateDeportation FROM bk_Enfant WHERE NomEnfant LIKE "%h%" PrenomEnfant LIKE "%g%"
    Erreur SQL !

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 199
    Par défaut
    Oui, je suis une truffe,
    il faut que tu incrementes a chaque fois que tu rajoutes un criteres pour le where !
    Car pour le moment au mieux il passe de 0 a 1 au debut mais apres rien...
    Et comme la premiere fois on veut pas le voir afficher, fais juste
    apres chaque concatenation, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql.='NomEnfant LIKE "%'.$champ_Nom.'%" ';
    $compteur++;

    On devrait y arriver la

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 6
    Par défaut
    yeah ça marche!
    merci pour l'astuce, j'y aurais pas pensé tout seul!

    bonne continuation

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 199
    Par défaut
    Héhé, mais si t´y aurais pensé

    Mets résolu sur ton post stp (le bouton tout en bas).

    A plus l´ami

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Requête avec condition sur un champ
    Par nonhosonno dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/02/2007, 14h00
  2. [MySQL] pb de requête avec conditions, débutant
    Par carelha dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 30/11/2006, 19h35
  3. Requête avec condition
    Par lolo_bob2 dans le forum Access
    Réponses: 1
    Dernier message: 08/06/2006, 19h59
  4. [Requête]Requête avec condition
    Par Miles Raymond dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 23/05/2006, 08h30
  5. Calcul requête avec conditions multiples
    Par Phullbrick dans le forum Access
    Réponses: 7
    Dernier message: 18/04/2006, 13h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo