begin process at 2012 05 31 20:21:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Tableau données apres requete sql


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

Tableau données apres requete sql

jeudi 15 mars 2007 à 15:05:26 | Tableau données apres requete sql

flopad

Bonjour,

J'ai une base de données que j'utilise pour gérer le cms de mon intranet.
Elle est composée d'une table, elle même composée de 4 champs : nom_page,chemin,titre,contenu.

Je voudrais mettre en place un moteur de recherche sur mon intranet.
J'ai donc une requete qui se fait du type :
$sql="SELECT * FROM cms WHERE nom_page OR titre OR contenu LIKE '%".$requete."%'";

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

je voudrais à partir de là isoler le résultat de chaque champ et l'affecter à 4 variables $nom_page, $titre, $chemin et $contenu.
Ensuite, il faudrait que j'affecte tout ce qui a été trouvé suite à la requete dans un tableau dans lequel je vais pouvoir retraiter les infos stockées genre supprimer tous les caractères HTML etc...

Comment faire cela...?

MERCI!!!

Pour info, j'avais avant un moteur du style suivant et donc le résultat me convennait mais qui ne fonctionne bien sur plus maintenant que le contenu des pages est stocké dans une bdd :


$requete = isset($_POST['requete']) ? $_POST['requete'] : false;
if(!file_exists("indexsite.dat")) {
  print("Le site Web n'a pas encore été indexé : veuillez exécuter le <b>script d'indexation</b> avant d'effectuer votre première recherche.\n");
  exit;
}

// *******************************************************************************
// Affichage d'un message d'avertissement dans le cas de figure où l'utilisateur
// a activé la recherche sans avoir préalablement saisi de requête ($requete est nul)
// *******************************************************************************

if(!$requete) {
  print("<center>\n");
  print("<font face=\"$policeResultats\" size=\"-1\" color=\"$couleurPoliceResultats\">\n");
  print("Vous avez activé la recherche sans avoir préalablement saisi votre requête.<br>");
  print("<a href=\"recherche.php\">Cliquez ici</a> pour effectuer une nouvelle recherche.<br>\n");
  print("</font>\n");
  print("</center>\n");
}

else {

// *******************************************************************************
// Cas de figure où l'utilisateur a bien saisi une requête
// *******************************************************************************

  // *******************************************************************************
  // Analyse de la requête et préparation de la recherche. La requête (entrée par
  // l'utilisateur dans la valeur $requete) est décomposée en une série de mots clés,
  // stockés dans les tableaux $expressions et $motsCles
  // *******************************************************************************

  // === Premier nettoyage de la requête formulée par l'utilisateur ===

  $requete=trim(stripslashes($requete));

  // ***************************************************
  // === Extraction des expressions entre guillemets ===
  // ***************************************************

  $requete1=$requete;

  $expressions[]="Liste des expressions";

  while($testExpress=ereg("[\"]([^\"]+)[\"]",$requete1,$corresExpress)) {
    $exp=$corresExpress[1];
    $expressions[]=$exp;
    $requete1=ereg_replace($corresExpress[0],"",$requete1);
  }

  $nombreExpressions=count($expressions)-1; // Nombre d'expressions à analyser
 
  // ********************************
  // === Extraction des mots-clés ===
  // ********************************
 

 

  // ********************************
  // === Extraction des mots-clés ===
  // ********************************

  // === Définition de la fonction netGuil,
  // utilisée pour le nettoyage des termes
  // isolés compris entre guillemets ===

  function netGuil($term) {
    if(ereg("^[\"]*([^\"]+)[\"]*$",$term,$corres)) {
      $reps=$corres[1];
      return $reps;
    }
    else {
      return($term);
    }
  }

  // === Stockage des valeurs dans le tableau $motsCles ===

  $requete2=$requete;

  $motsCles[]="Liste des mots-clés";

  $mot=trim(stripslashes(strtok($requete2," ")));
  if(!(ereg("[ ]".$mot."[ ]",$motsVides))) {
    $motsCles[]=netGuil($mot);
  }
  while($mot=trim(stripslashes(strtok(" ")))) {
    if($mot and (!(ereg("[ ]".$mot."[ ]",$motsVides)))) {
      $motsCles[]=netGuil($mot);
    }
  }

  $nombreMotsCles=count($motsCles)-1;       // Nombre de mots-clés à analyser


  // ************************************************************************************
  // Ouverture du fichier indexsite.dat et stockage des lignes dans le tableau $contenuIndex
  // ************************************************************************************

  $contenuIndex=file($fichierIndex);

  $nlignesIndex=count($contenuIndex);
  $nombreDocumentsIndexes=($nlignesIndex-1)/4;

  // ************************************************************************************
  // Stockage des données dans les tableaux $cheminDocument, $titreDocument,
  // $descriptionDocument, $texteDocument
  // ************************************************************************************

  for($compt=1;$compt<=$nombreDocumentsIndexes;$compt++) {
    $cheminDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+1]));
    $titreDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+2]));
    $descriptionDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+3]));
    $texteDocument[$compt]=trim(stripslashes($contenuIndex[(4*($compt-1))+4]));
  }

    // Liste des codes htmls spéciaux
$caractere_special=array(
"&agrave;"=>"à",
"&aacute;"=>"á",
"&acirc;"=>"â",
"&atilde;"=>"ã",
"&auml;"=>"ä",
"&aring;"=>"å",
"&aelig;"=>"æ",
"&ccedil;"=>"ç",
"&egrave;"=>"è",
"&eacute;"=>"é",
"&ecirc;"=>"ê",
"&euml;"=>"ë",
"&icirc;"=>"î",
"&iuml;"=>"ï",
"&ocirc;"=>"ô",
"&ouml;"=>"ö",
"&ugrave;"=>"ù",
"&uacute;"=>"ú",
"&ucirc;"=>"û",
"&uuml;"=>"ü",
"&amp;"=>"&",
);


foreach($caractere_special as $caractere_code=>$caractere_traduction){
$titreDocument = str_replace("$caractere_code","$caractere_traduction",$titreDocument);
$texteDocument = str_replace("$caractere_code","$caractere_traduction",$texteDocument);
 }
  // ***************************************************************************
  //          ========================================================
  //          === Lancement de la procédure d'évaluation des pages ===
  //          ========================================================
  //
  // Chaque page est passée en revue et se voit attribuer des points
  // selon les règles suivantes :
  //
  // - 2 point si la requête (considérée comme expression) est présente dans le titre
  // - 1 point si la requête (considérée comme expression) est présente dans le texte indexé
  //
  // - 2 point par expression présente dans le titre
  // - 2 point par mot-clé présent dans le titre
  //
  // - 1 point par expression présente dans le texte indexé
  // - 1 point par mot-clé présent dans le texte indexé
  //
  // Note : une ou plusieurs expressions présentes donnent naturellement un meilleur
  // score à la page
  //
  // ***************************************************************************

  // Les différents documents indexés spnt passés en revue et analysés

  for($compt=1;$compt<=$nombreDocumentsIndexes;$compt++) {

    $score[$compt]=0;

    // === Recherche de la requête (considérée comme expression) dans le titre du document : 2 points
    //if(eregi("(^|[ .,:;!?'()])".$requete."([ .,:;!?'()]|$)",$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;

    // === Recherche de la requête (considérée comme expression) dans le texte indexé : 1 points
    if(eregi("(^|[ .,:;!?'()])".$requete."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;


    for($a=1;$a<=$nombreExpressions;$a++) {
    // ===== Recherche des expressions =====

      // === Recherche de l'expression dans le titre du document : 2 points s'il y a correspondance
      if(eregi("(^|[ .,:;!?'()])".$expressions[$a]."([ .,:;!?'()]|$)",$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;

      // === Recherche de l'expression dans le texte indexé : 1 point s'il y a correspondance
      if(eregi("(^|[ .,:;!?'()])".$expressions[$a]."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;

    }

    for($b=1;$b<=$nombreMotsCles;$b++) {
    // ===== Recherche des mots-clés =====

      if(eregi("([^*]*)[*]",$motsCles[$b],$corMotCle)) {

      // l'utilisateur a fait suivre le mot-clé d'une astérisque (il faut donc étendre la recherche)

        // === Recherche du mot-clé dans le titre du document : 2 points s'il y a correspondance
        if(eregi("(^|[ .,:;!?'()])".$corMotCle[1],$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;

        // === Recherche du mot-clé dans le texte indexé : 1 point s'il y a correspondance
        if(eregi("(^|[ .,:;!?'()])".$corMotCle[1],$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;

      }

      else {
       // le mot-clé ne comporte pas d'astérisque

        // === Recherche du mot-clé dans le titre du document : 2 points s'il y a correspondance
        if(eregi("(^|[ .,:;!?'()])".$motsCles[$b]."([ .,:;!?'()]|$)",$titreDocument[$compt])) $score[$compt]=$score[$compt]+2;

        // === Recherche du mot-clé dans le texte indexé : 1 point s'il y a correspondance
        if(eregi("(^|[ .,:;!?'()])".$motsCles[$b]."([ .,:;!?'()]|$)",$texteDocument[$compt])) $score[$compt]=$score[$compt]+1;

      }
    }
  }

  // ************************************************************************************
  // Tri des résultats en vue de leur affichage :
  // Les pages seront affichées de la plus pertinente à la moins pertinente
  // ************************************************************************************

  // Détermination du score le plus élevé parmi toutes les pages analysées

  $HiScore=max($score);


  // TRI du tableau à l'aide de la fonction asort

  arsort($score);

  // Création du tableau $documentsCorrespondantsOrd
  $documentsCorrespondantsOrd[]=0;

  for(reset($score);$cle=key($score);next($score)) {
    if(current($score)>0) {
      $documentsCorrespondantsOrd[]=$cle;
    }
  }

  $nombreCorrespondances=count($documentsCorrespondantsOrd)-1;

mardi 20 mars 2007 à 13:00:18 | Re : Tableau données apres requete sql

kishkaya

Ca fait pas mal de lecture.
A quand la coloration syntaxique

_Marikou


Cette discussion est classée dans : mot, recherche, requete, score, compt


Répondre à ce message

Sujets en rapport avec ce message

Recherche dans bdd [ par flopad ] Bonjour tout le monde,j'avais sur mon intranet un moteur de recherche interne qui fonctionnait parfaitement.J'ai changé le mode de fonctionnement, le Moteur de recherche [ par flopad ] Bonjour tout le monde,j'ai récupéré puis adapté un script de moteur de recherche pour mon intranet.Mon soucis est que lorsqu'il y a plusieurs pages de recherche un mot dans une base de donnee [ par maxelpiratos ] bonjour a tous!, je voudrais faire une requete qui recherche un mot dans une table. seulement c un champ text donc il faudrait que la requete reco recherche par mot dans fichier [ par justone72 ] Bonjour,J'ai besoin assez rapidemnt d'un script qui permet de faire une recherche dans un dossier (recherche de fichiers dans le dossier + sous dossie Problème avec un soit disant moteur de recherche lol [ par gssk ] Au fait j'ai fait un "moteur de recherche" (code pourrave je le sais merci !!), et je n'ai que d erreur de variables indéfini! tels que Mot,idM,nomM e Récupérer les mots-clés [ par riggs ] Salut,je voudrais récupérer les mots entrés par mes visiteurs sur le moteur de recherche (requete) pour les afficher dans champ recherche de mon siteh Comment rechercher un mot dans une chaine de caractères ? [ par Drazounet ] Bonjours à tous,Je suis en train de programmer un forum en php et maintenant je suis en train de lui ajouter une section "recherche" afin de trouver p Moteur de recherche [ par Tilix ] Salut, je cherche à faire un moteur de recherche avec plusieurs champs, de ce genre : <input name="ph faire une recherche par mot clé dans un texte [ par maurimaure ] Bonjour, J'ai des docs en registrés dans ma BDD,  j'aimerais faire des récherches par mots clés sur ces docs enfin de n'en afficher que les docs qu Recherche Mot ou plusieurs clef base mysql [ par milkasoprano ] Bonsoir tous le monde, Comment allez vous ? Voila je vous écris car j'ai plusieurs questions a vous posez concernant phpet je recherche une source ou


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 1,045 sec (4)

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