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 :

Recherche multi critere "aucun resultat" [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Par défaut Recherche multi critere "aucun resultat"
    Bonjour,

    J'essaie de faire une recherche multicritère, mais ca ne fonctionne pas.
    le resultat est toujours le meme, il me retourne le else de mon code aucun resultat, que se sois entre une période seulement ou avec d'autre critère
    Voici le code de la page avec les requetes sql.
    un peu d'aide serrai la bien venu

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    <?php
    $_SESSION['field_search_1'] = htmlspecialchars(stripcslashes($_POST['field_search_1']));
    $_SESSION['field_search_2'] = htmlspecialchars(stripcslashes($_POST['field_search_2']));
    $_SESSION['field_search_3'] = htmlspecialchars(stripcslashes($_POST['field_search_3']));
     
    // Variable pour date result
    $debut1 = htmlspecialchars(stripcslashes($_POST['fielddate_1b'])); 
    $fin1 = htmlspecialchars(stripcslashes($_POST['fielddate_1c']));
     
    include("./config.inc.php");
    mysql_connect($db_host,$db_user,$db_pass) or die ('connexion impossible');
    mysql_select_db($db_name) or die ('connexion impossible');
    // Variable pour requete mysql
     
    $debut = mysql_real_escape_string(stripcslashes($_POST['fielddate_1b']));
    $fin = mysql_real_escape_string(stripcslashes($_POST['fielddate_1c']));
     
    // intialisation date fr -> us
    	$date = "$debut";
    	// formatage
    	list($jour, $mois, $annee) = explode("/", $date);
    		// affichage
    	$debuta = $annee . '-' . $mois . '-' . $jour ;
     
    	// intialisation date fr -> us
    	$date = "$fin";
    	// formatage
    	list($jour, $mois, $annee) = explode("/", $date);
    		// affichage
    	$fina = $annee . '-' . $mois . '-' . $jour ;
     
    mysql_query("SET NAMES 'utf8'");
     
    if($_POST['submit']=="Envoyer")
    {
    $sql1= "SELECT * FROM regie WHERE field_1 BETWEEN '$debuta' AND '$fina' ORDER BY field_1 ASC"; // Si tout vide + date  Obligatoire
    $sql2= "SELECT * FROM regie WHERE (field_2 = '".$_POST['field_search_1']."' and field_1 BETWEEN '$debuta' AND '$fina')ORDER BY field_1 ASC"; // Si field_search_1 + date Obligatoire
    $sql3= "SELECT * FROM regie WHERE (field_3 = '".$_POST['field_search_2']."' and field_1 BETWEEN '$debuta' AND '$fina')ORDER BY field_1 ASC"; // Si field_search_2 + date Obligatoire
    $sql4= "SELECT * FROM regie WHERE (field_8 = '".$_POST['field_search_3']."' and field_1 BETWEEN '$debuta' AND '$fina')ORDER BY field_1 ASC"; // Si field_search_3 + date Obligatoire
     
    $sql5= "SELECT * FROM regie WHERE (field_2 = '".$_POST['field_search_1']."' and field_3 = '".$_POST['field_search_2']."' and field_1 BETWEEN '$debuta' AND '$fina')ORDER BY field_1 ASC"; // Si field_search_1 + field_search_2 + date Obligatoire
    $sql6= "SELECT * FROM regie WHERE (field_2 = '".$_POST['field_search_1']."' and field_8 = '".$_POST['field_search_3']."' and field_1 BETWEEN '$debuta' AND '$fina')ORDER BY field_1 ASC"; // Si field_search_1 + field_search_3 + date Obligatoire
    $sql7= "SELECT * FROM regie WHERE (field_3 = '".$_POST['field_search_2']."' and field_8 = '".$_POST['field_search_3']."' and field_1 BETWEEN '$debuta' AND '$fina')ORDER BY field_1 ASC"; // Si field_search_2 + field_search_3 + date Obligatoire
     
    $sql8= "SELECT * FROM regie WHERE (field_2 = '".$_POST['field_search_1']."' and field_3 = '".$_POST['field_search_2']."' and field_8 = '".$_POST['field_search_3']."' and field_1 BETWEEN '$debuta' AND '$fina')ORDER BY field_1 ASC"; // Si tout + date Obligatoire
     
    // Ici on va récupérer la requete selon le cas
    	if (isset($_POST['field_search_1']) && empty($_POST['field_search_2']) && empty($_POST['field_search_3'])) // Si field_search_1 + date Obligatoire
    	{
    	$sql = mysql_query($sql2) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    	}
    	elseif (empty($_POST['field_search_1']) && isset($_POST['field_search_2']) && empty($_POST['field_search_3'])) /// Si field_search_2 + date Obligatoire
    	{
    	$sql = mysql_query($sql3) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    	}
    	elseif (empty($_POST['field_search_1']) && empty($_POST['field_search_2']) && isset($_POST['field_search_3'])) // Si field_search_3 + date Obligatoire
    	{
    	$sql = mysql_query($sql4) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    	}
     
    	elseif (isset($_POST['field_search_1']) && isset($_POST['field_search_2']) && empty($_POST['field_search_3'])) // Si field_search_1 + field_search_2 + date Obligatoire
    	{
    	$sql = mysql_query($sql5) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    	}
    	elseif (isset($_POST['field_search_1']) && empty($_POST['field_search_2']) && isset($_POST['field_search_3'])) // Si field_search_1 + field_search_3 + date Obligatoire
    	{
    	$sql = mysql_query($sql6) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    	}
    	elseif (empty($_POST['field_search_1']) && isset($_POST['field_search_2']) && isset($_POST['field_search_3'])) // Si field_search_2 + field_search_3 + date Obligatoire
    	{
    	$sql = mysql_query($sql7) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    	}
    	elseif (isset($_POST['field_search_1']) && isset($_POST['field_search_2']) && isset($_POST['field_search_3'])) // Si field_search_2 + field_search_3 + date Obligatoire
    	{
    	$sql = mysql_query($sql8) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    	}
     
    	else
    	{
    	$sql = mysql_query($sql1) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); // Si tout vide + date Obligatoire
    	}
     
    // Traitement
    $res = mysql_num_rows($sql);
    if ($res >1){
    echo "<h2>Résultat</h2><br />";
    echo "<center><h3>Voici les résultats pour la période du : $debut1 au $fin1</h3></center>";
    echo "<br /><br />";
    echo "<table cellpadding='0' cellspacing='0'>";
    echo "<tr class='tdexport'><td>Par</td><td>Versé le</td><td>Dans l'espace</td><td>Nature du versement</td><td>Civilité</td><td>Prénom</td><td>Nom</td><td>Montant</td><td>En</td><td>Commentaires</td></tr>";
     
    while($data = mysql_fetch_array($sql))
    		{
            echo '<tr><td>'.$data['field_0'].'</td><td style="text-align:center;">'.date("d/m/Y", strtotime($data['field_1'])).'</td><td>'.$data['field_2'].'</td><td>'.$data['field_3'].'</td><td>'.$data['field_4'].'</td><td>'.$data['field_5'].'</td><td>'.$data['field_6'].'</td><td style="text-align:right;">'.$data['field_7'].'</td><td style="text-align:center;">'.$data['field_8'].'</td><td>'.$data['field_9'].'</td></tr>';
    		}
     
    echo "</table><br />";
    echo "<center><a href='index.php?page=3'>Retour à la recherche</a></center>";
    }else{
    echo "<h2>Résultat</h2><br />";
    echo "<center><h3>Il n'y a aucun résultats pour la période du : $debut1 au $fin1</h3></center>";
    echo "<br /><br />";
    echo "<center><a href='index.php?page=3'>Retour à la recherche</a></center>";
    } 
    }
    ?>

  2. #2
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Salut ! Déjà quelque chose pour simplifier tes requêtes (en gros n'en faire qu'une seule)

    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
    $sql1= "SELECT * FROM regie WHERE field_1 BETWEEN '$debuta' AND '$fina'";
     
    if ( !empty($_POST['field_search_1'])){
        $sql1.=" AND field_2='".$_POST['field_search_1']."'";
    }
    elseif (!empty($_POST['field_search_2'])){
        $sql1.=" AND field_3='".$_POST['field_search_2']."'";
    }
    elseif (!empty($_POST['field_search_3'])){
        $sql1.=" AND field_8='".$_POST['field_search_3']."'";
    }
     
    $sql1.=" ORDER BY field_1 ASC"; 
    $requete = mysql_query($sql1) or die('Erreur SQL !'.$sql1.'<br>'.mysql_error());
     
    $nb= mysql_num_rows($requete);
    if ($nb >=1){
      //J'affiche les résultats
    }
    else{
      //Afficher "aucun résultat"
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Par défaut
    Merci obito pour la simplification de mon code.

    Par contre y a un truc qui ne fonctionne pas bien
    si je choisi n'importe quel critère + une période ca fonctionne

    si je choisi deux ou trois critère il prends en compte le premier et les suivant il n'en tien pas compte

  4. #4
    Membre émérite Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Par défaut
    Oui désolé. J'aurais du mieux réfléchir :

    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
    $sql1= "SELECT * FROM regie WHERE field_1 BETWEEN '$debuta' AND '$fina'";
     
    if ( !empty($_POST['field_search_1'])){
        $sql1.=" AND field_2='".$_POST['field_search_1']."'";
    }
    if (!empty($_POST['field_search_2'])){
        $sql1.=" AND field_3='".$_POST['field_search_2']."'";
    }
    if (!empty($_POST['field_search_3'])){
        $sql1.=" AND field_8='".$_POST['field_search_3']."'";
    }
     
    $sql1.=" ORDER BY field_1 ASC"; 
    $requete = mysql_query($sql1) or die('Erreur SQL !'.$sql1.'<br>'.mysql_error());
     
    $nb= mysql_num_rows($requete);
    if ($nb >=1){
      //J'affiche les résultats
    }
    else{
      //Afficher "aucun résultat"
    }
    Juste mettre que des if au lieu des elseif

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Par défaut
    Merci,

    Ça fonctionne nickel, on ne peux pas penser à tous et puis j'aurai pu y penser aussi lol

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

Discussions similaires

  1. Tri resultat recherche multi criteres
    Par Oliviers dans le forum Access
    Réponses: 2
    Dernier message: 06/02/2007, 20h49
  2. [Collections]Implémenter une recherche multi-critère performante
    Par ppaul127 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 29/12/2005, 14h38
  3. gui pour recherche multi critere
    Par komando dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 02/12/2005, 19h08
  4. Réponses: 14
    Dernier message: 15/06/2005, 13h14

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