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 :

moteur de recherche multicritère


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de yohan0262
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 159
    Points : 49
    Points
    49
    Par défaut moteur de recherche multicritère
    Bonjour à tous,
    On m'a confié un projet qui est de créer un moteur de recherche suivant plusieurs critères. Le problème est que ma recherche s'effectue à partir d'un seul critère et je ne vois pas comment résoudre cela. La recherche doit s'effectuer suivant le nom de l'automate, de l'unité et du batiment, en bref je dois afficher les automates suivant leurs nom, leurs nom d'unités et de batiments. Leurs tables respectives sont automate, ue, batiment. Leurs champs sont :
    automate : id_instal, id_secteur, id_ue, id_bat, pdf(ce champ contient le nom des fichiers)

    ue : id_ue, nom_ue

    batiment : id_bat, nom_bat

    Et voici mon code :
    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
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
    <?php
     
     
    if(isset($_POST['Mot']))
    {
     
    if (($_POST['Mot'] == "") || ($_POST['Mot'] == "%")){
    // Si aucun mot clé n'a été saisi, le script demande à l'utilisateur de bien vouloir préciser un mot clé 
     
    	echo "
    	<center>
    	<b>Veuillez entrer un mot clé s'il vous plaît ! <br><br></b>
    	</center>
    	<p>";
    }
     
    else {
     
    // On selectionne les enregistrements contenant le mot 	
    	$query = "SELECT A.id_instal, B.nom_bat, ue.nom_ue, A.pdf, N.type_instal, S.nom_secteur FROM ue, batiment B, automate A, nomination N, secteur S WHERE N.id_instal = A.id_instal AND A.id_ue = ue.id_ue AND A.id_bat = B.id_bat AND A.id_secteur = S.id_secteur AND A.id_instal IN ( SELECT D.id_instal FROM difference D WHERE D.mot1='{$_POST['Mot']}'OR D.mot2='{$_POST['Mot']}'OR D.mot3='{$_POST['Mot']}'OR D.mot4='{$_POST['Mot']}' OR D.mot5='{$_POST['Mot']}'OR D.mot6='{$_POST['Mot']}'OR D.mot7='{$_POST['Mot']}'OR D.mot8='{$_POST['Mot']}')";
     
    	$result = mysql_query($query);
    	$row = mysql_num_rows($result);
     
     
    // Si aucun enregistrement n'est retourné, on affiche un message adequat 
     
    	if ($row == 0) 
    	{
     
    		echo "<center><b>Aucun resultat ne correspond à votre recherche !</center></b><br><br><p>";
     
    	}
    if(isset($_POST['Unite']))
    {
     
    if (($_POST['Unite'] == "") || ($_POST['Unite'] == "%")){
    // Si aucun mot clé n'a été saisi, le script demande à l'utilisateur de bien vouloir préciser un mot clé 
     
    	echo "
    	<center>
    	<b>Veuillez entrer un nom d'unité s'il vous plaît ! <br><br>
    	</center>
    	<p>";
    }
     
    else {
     
    	$dell = "SELECT ue.id_ue FROM ue, automate A WHERE A.id_ue = ue.id_ue AND ue.nom_ue = '{$_POST['Unite']}'";
     
    	$result1 = mysql_query($dell);
    	$row1 = mysql_num_rows($result1);
     
     
    // Si aucun enregistrement n'est retourné, on affiche un message adequat 
     
    	if ($row1 == 0) {
     
    		echo "<center>Aucun nom d'unité ne correspond à votre recherche !</center><br><br><p>";
     
    	}
    }
    }
    if(isset($_POST['Batiment']))
    {
     
     
    if (($_POST['Batiment'] == "") || ($_POST['Batiment'] == "%")){
    // Si aucun mot clé n'a été saisi, le script demande à l'utilisateur de bien vouloir préciser un mot clé 
     
    	echo "
    	<center>
    	Veuillez entrer un nom de batiment s'il vous plaît !<br><br>
    	</center>
    	<p>";
    }
     
    else {
     
     
    	$allen = "SELECT B.id_bat FROM batiment B,automate A WHERE A.id_bat = B.id_bat AND B.nom_bat = '{$_POST['Batiment']}'";
     
    	$result2 = mysql_query($allen);
    	$row2 = mysql_num_rows($result2);
     
     
    // Si aucun enregistrement n'est retourné, on affiche un message adequat 
     
    	if ($row2 == 0) {
     
    		echo "<center>Aucun nom de batiment ne correspond à votre recherche ! </center><br><br><p>";
     
    	}
    }
    }
    	// Liste des enregistrements trouvés 
     
    	if ($row > "0" && $row1 > "0" && $row2 > "0") 
    	{
     
    		echo "
    			
    			<a name=\"#resultat\"><center>Résultat : Il y a ".$row." traduction(s) de séquences trouvée(s)</center></a><br><br>
    			<p>";
    	}
    		 for($i=0;$i<$row;$i++)
    		 {
    			$fetch = mysql_fetch_array($result);
    			$row = mysql_num_rows($result);
     
    			$lecoeuche = 'L:'.'/'.$fetch['nom_secteur'].'/'.$fetch['nom_ue'] .'/'. $fetch['nom_bat'].'/Traductions_Sequences/'.$fetch['pdf'];
     
    			echo '<p><b>'.'¤' .'</b><a href="'.$lecoeuche.'"> "'.$lecoeuche.'" </a><p><br />';
    		}
    	}
    }
     
    // On ferme la base
    mysql_close();
     
    ?>
    merci d'avance !

  2. #2
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    Préfère le JOIN aux jointures dans le WHERE, c'est bien mieux.
    Tu utilises quelle version de MySQL ?

    PS : je ne vois pas qu'est-ce que tu entends par multi-critères, tu fais déjà des requêtes multi-critères.

    PS 2 : essaie de présenter les requêtes SQL sur plusieurs lignes (SELECT ... FROM ... WHERE ... GROUP BY ...) car sur une seul c'est illisible

  3. #3
    Membre du Club Avatar de yohan0262
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 159
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par trotters213
    PS : je ne vois pas qu'est-ce que tu entends par multi-critères, tu fais déjà des requêtes multi-critères.
    En faite j'ai trois barre de recherche où je dois entrer le nom de l'unité, du batiment et de l'automate. J'ai donc créé les requête correspondante a chaque barre de recherche. Mon soucis est pour l'affichage des fichiers, je n'arrive pas a faire comprendre à l'ordi qu'il doit me renvoyer un fichier qui correspond à l'id_ue correspondant au nom de l'unité saisis, ainsi de suite pour le batiment et l'automate...

    C'est plus clair ?

    Ah j'allais oublier ! j'utilise la version 4.1.9 de mysql

Discussions similaires

  1. Moteur de recherche multicritère - Sans PHP
    Par pito2901 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 02/06/2014, 20h33
  2. Moteur de recherche multicritères sur un champs Javascript et xml
    Par benjea06 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 09/04/2014, 14h25
  3. [MySQL] Moteur de recherche multicritères
    Par max3075 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 09/01/2013, 14h41
  4. [MySQL] Moteur de recherche multicritére
    Par toulousain3117 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/07/2009, 15h02

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