begin process at 2012 02 14 22:24:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Bases de données

 > 

recherche simultanée sur plusieurs table


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

recherche simultanée sur plusieurs table

mercredi 5 avril 2006 à 15:58:48 | recherche simultanée sur plusieurs table

dodji_phpcs

J'ai ecrit un petit script qui permet rechercher des données dans une table X à partir d'un mot clef entre dans un formulaire et les resultat s'affichents 10 par 10.
J'ai essai d'etendre ces recherche sur 2 autres tables Y, Z de la BD ; mais j'ai un leger bleme qui est le suivant:
Les resultats  trouvés dans la 1ere table X s'affichent par tranche de 10 sur une page et est immediatement suivi de tous les resultats trouves dans les 2 autres tables sur les pages pages suivant on ne voit que les resultats de la table X.
Comment faire pour afficher les resutats par tranche de 10 de la table Y apres ceux de la table X

//////voir le script(recherche sur une seul table)
 <?php
[ Lien ] de recherche de l'annuaire

include("param_connection.php"); [ Lien ] de l'annuaire
include("fonctions.php"); [ Lien ] de l'annuaire

$mots = isset($_REQUEST['mots']) ? $_REQUEST['mots'] : '';
$mots = trim($mots);
$page = isset($_GET['page']) ? (int)$_GET['page'] : 0;
if($page < 0)
 exit;

$booleen = isset($_REQUEST['booleen']) ? $_REQUEST['booleen'] : '';
if(empty($booleen) or $booleen != "OR")
 $booleen = "AND";

$resultat_par_page= isset($_REQUEST['resultat_par_page']) ? (int)$_REQUEST['resultat_par_page'] : 0;
if($resultat_par_page<= 0)
 $resultat_par_page= 10;

?>
<html>
<head>
<title>Recherche dans l'annuaire</title>
<script language="JavaScript" src="js_bulletins.js"></script>
<link type="text/css" href="alex_poll2.css" rel="stylesheet">
</head>
<body>
<?php

include("recherche_form.php");
[ Lien ] verifie la taille du mot recherche pour voir si on n'a pas entrer qu'une ou deux lettres
if ($mots == "Votre recherche :")
 $mots = "";
$trop_court = false;

if (strlen(stripslashes($mots)) < 3)
[ Lien ] taille du mot est trop court....
 $trop_court = true;

if (!get_magic_quotes_gpc())
[ Lien ] rajoute des slash pour les magic_quote en OFF
 $mots = addslashes($mots);

if (!empty($page)) [ Lien ] on n'est pas sur la premiere page des resultats
 $mots = rawurldecode($mots);
[ Lien ] separe chaque mot dans un element de tableau
$mots_cherches = explode(" ",$mots);
[ Lien ] des mots a rejetter : vous pouvez en rajouter (ils doivent faire au moins 3 caracteres !!!)
$bad_words[] = "";
$bad_words[] = "des";
$bad_words[] = "une";
$bad_words[] = "les";

[ Lien ] enleve les petits mots inutiles
$ln_tab = sizeof($mots_cherches);
for ($i=0;$i<$ln_tab;$i++)
[ Lien ] compare chaque mot a ceux non voulu
{
 if (!in_array(trim($mots_cherches[$i]),$bad_words) && strlen($mots_cherches[$i]) > 2)
  $mots_reels_recherches[] = $mots_cherches[$i];
}
$nb_mots = sizeof($mots_reels_recherches);
if ($nb_mots > 0 && !$trop_court)
[ Lien ] on a au moins un mot pour la recherche
{
if (empty($page))
  [ Lien ] page
  $page = 1;
  [ Lien ] pour la clause LIMIT de la requete des agents
 $debut = ($page - 1) * $resultat_par_page;

[ Lien ] peut effectuer la requete pour trouver les mots reellement recherches dans les agents et dans les catégories
[ Lien ] pour effectuer la recherche dans les agents

$sql_agent = "SELECT *  FROM agent  WHERE ";

 $cond_agent = "";
  [ Lien ] pour les agents
    for ($i=0;$i<$nb_mots;$i++)
 {
  $cond_agent .= " (nom_agent LIKE '%$mots_reels_recherches[$i]%' OR prenom_agent LIKE '%$mots_reels_recherches[$i]%' OR matricule_agent LIKE '%$mots_reels_recherches[$i]%') ";
  if ($i != ($nb_mots - 1)) [ Lien ] on n'est pas sur le dernier mot
   $cond_agent .= $booleen;
 }

    $sql_agent .= $cond_agent;
 $sql_agent .= " ORDER BY nom_agent ASC LIMIT $debut,$resultat_par_page ";
 echo 'sel : '.$sql_agent;

     if ($page == 1)
            {
            $sql_nb_agent = "SELECT count(matricule_agent) AS count FROM agent  WHERE (";
            $sql_nb_agent .= $cond_agent;
  $sql_nb_agent .= ") ";
            }
$lk = connection_BD();
  [ Lien ] des requetes
$res_agent = send_sql($sql_agent,"trouver des résultats pour les agents (moteur de recherche)");

if ($page == 1)
 {
  $res_nb_agent = send_sql($sql_nb_agent,"trouver le nombre de sites faisant partie du résultat de la recherche");

  $nb_agent_trouves = mysql_result($res_nb_agent,0,'count');
 }
    else
 {
  $nb_agent_trouves = isset($_GET['nb_agent_trouves']) ? (int)$_GET['nb_agent_trouves'] : 0;

 }
    [ Lien ] du nombre de pages
 $nb_pages = ceil($nb_agent_trouves / $resultat_par_page);

    if ($page == 1)
 {
  ?>
  <center>
  <span>
  <?php printf ("%d agent(s) trouvé(s) pour \"%s\" ",$nb_agent_trouves,stripslashes(htmlspecialchars($mots))); ?>
  </span>
  </center>
  <br><br>
  <?php
 }

    if ($nb_agent_trouves)
  [ Lien ] a trouve des sites
 {
  ?>
  <table width="90%" border=0 align="center">
  <span class="res_search_cat_site_annuaire">
  Site(s) trouvé(s) :
  <?php
  $fin = $page*$resultat_par_page;
  if ($fin > $nb_agent_trouves)
   $fin = $nb_agent_trouves;
  echo ($debut+1)." à ".$fin;
  if ($page != 1)
   echo " (au total : ".$nb_agent_trouves." sites trouvés)\n";
  ?>
  </span>
  <br><br>
  <?php
  while ($resultat = mysql_fetch_array($res_agent,MYSQL_ASSOC))
  {
    [ Lien ] met en gras les mots cle
   for ($i = 0; $i < $nb_mots; $i++)
   {
    $resultat["nom_agent"] = motclef_en_gras($mots_reels_recherches[$i], $resultat["nom_agent"]);
    $resultat["prenom_agent"] = motclef_en_gras($mots_reels_recherches[$i], $resultat["prenom_agent"]);
                $resultat["matricule_agent"] = motclef_en_gras($mots_reels_recherches[$i], $resultat["matricule_agent"]);
   }
   echo   $resultat["nom_agent"]. " " .  $resultat["prenom_agent"]." ".$resultat["matricule_agent"];
  }
  echo "</table>\n";
   [ Lien ] du lien vers les pages suivantes si il y a beaucoup de resultats
  if ($nb_agent_trouves > $resultat_par_page)
  {
   ?>
   <center>
   <span>
   <?php
   for ($i=1;$i<$nb_pages;$i++)
   {
    if ($i != $page)
     echo "<a href=\"recherche.php?mots=".rawurlencode(htmlspecialchars($mots))."&page=".$i."&resultat_par_page=".$resultat_par_page."&booleen=".$booleen."&nb_agent_trouves=".$nb_agent_trouves."\">".$i."</a>\n";
    else
    { echo "$i"; }
    echo " - ";
   }
    [ Lien ] affiche le dernier numero de page (sans tiret apres)
   if ($i == $page)
    echo $i;
   else
   { echo "<a href=\"recherche.php?mots=".rawurlencode(htmlspecialchars($mots))."&page=".$i."&resultat_par_page=".$resultat_par_page."&booleen=".$booleen."&nb_agent_trouves=".$nb_agent_trouves."\">".$i."</a>\n";
   ?>
   </span>
   </center>
   <br><br>
   <?php
  }
 }
}}//if ($nb_mots > 0)
 

Big El Chicano

vendredi 7 avril 2006 à 01:12:46 | Re : recherche simultanée sur plusieurs table

malalam

Administrateur CodeS-SourceS
Réponse acceptée !
hello,,tu n'as pas de réponse car ton code est trop long.
Essaye de cerner mieux le problème dans le code, et de condenser.


Cette discussion est classée dans : page, file, mots, resultat, agent


Répondre à ce message

Sujets en rapport avec ce message

Protection page web [ par SatanCorporation ] donc tu vois ce que je veux faire c une protection de page web.je vopudrais que ma page resemble a ca ://file.phpinclude('protect.php');echo "Apres av Affichage des resultat d'une requete sur plusieur pages [ par zizou94 ] Bonjour a tous Voila je suis toujours sur la programmation de mon premier site et j ai un souci. Je souhaiterai limiter l'affichage de mes résultat su resultat de formulaire [ par tapas64 ] Bonjour,J'ai un formulaire tout simple (méthode POST) qui demande à l'utilisateur de saisir un nombre et ensuite de valider pour effectuer un traiteme Formulaire [ par FEEDL ] Salut J'aurais besoin d'un petit coup de main...A partir d'un formulaire avec des cases à cocher, je souhaite effectuer un affichage different selon l Analyser la page pour créer un filtre [ par tony4758 ] Bonjour, je souhaiterai faire un code permettant d'analyser tous les mots de la page et dès qu'il trouve un mot comme "sexe" il affiche un texte lui i Censurer des mots dans sa page [ par tony4758 ] Bonjour je suis un débutant dans le langage php et je cherche depuis longtemps un script a mettre dans ma page permettant de transformer les mots gros Probleme pour mettre musique sur ma page d'accueil de mon site [ par jmauv1 ] Bonjour a tous,depuis peu je me suis lancé dans la réalisation d'un site et je veux y mettre de la musique sur ma page d'accueil.J'héberge mon propre Comment lire le contenu d'une page web ? [ par poiuytrez3 ] Bonjour, je cherche comment lire le contenu d'une page web distante avec PHP, sachant que je n'ai aucune autorisation sur cette page à part la lire. Comment lire le contenu d'une page web ? [ par poiuytrez3 ] Bonjour, je cherche comment lire le contenu d'une page web distante avec PHP, sachant que je n'ai aucune autorisation sur cette page à part la lire. recherche multicritère dans une annuaire [ par mfresk ] Bonjour à tous! Je fais appel à vous car ça va me rendre fou, je suis coincé sur ça depuis une semaine et je trouve pas la faille, En général, je veux


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,198 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales