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

Langage PHP Discussion :

[Tableaux] Récupérer le poids de termes à partir de deux tables


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de hadjiphp
    Inscrit en
    Décembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 155
    Par défaut [Tableaux] Récupérer le poids de termes à partir de deux tables
    Bonjour,
    j'ai une question :
    j'ai trois table (document, terme, titre)
    terme : code_doc, terme, poids,...
    titre : code_doc, terme_titre, poids_titre,...
    document : code_doc,...

    un utilsateur peut faire un recherche (requete = plusieurs mots)
    1- si le mot Є terme alors récupére le poids de ce mot dans la table 'terme'
    2- si le mot Є titre alors récupérer le poids de ce mots dans la table 'titre'
    3- si le mot Є(terme, titre) alors récupérer le poids de ce mot dans la table 'titre'


    voila le 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
     
    <?php
    $recherche ='offre d'emploi'; //requete de l'utilisateur
    $resultat_champs=stripslashes($recherche);
                 $mots = explode(" ", $champs11); //séparation des mots reprtésentation sous forme d'un tableau
                 $nombre_mots = count ($mots); //compte le nombre de mots
                 $valeur_requete = '';
                 for($nombre_mots_boucle = 0; $nombre_mots_boucle < $nombre_mots; $nombre_mots_boucle++) //tant que le nombre de mots de la recherche est supérieur à celui de la boucle, on continue en augmentant le nombre de mots de 1 à chaque fois
                    {
                      $valeur_requete .= '' . $and_ou_or . ' terme LIKE \'%' . $mots[$nombre_mots_boucle] . '%\' OR terme_titre LIKE \'%' . $mots[$nombre_mots_boucle] . '%\''; //modification de la variable $valeur_requete
                    }
                $valeur_requete = ltrim($valeur_requete,$and_ou_or); //suppression de AND ou de OR au début de la boucle
    			$selection="SELECT *
                FROM document,terme,titre
                WHERE (document.code_doc=terme.code_doc and document.code_doc=titre.code_doc) AND document.type_offre='$offre' AND ($valeur_requete) group by url ";
                $selection_recherche = mysql_query($selection); //requête avec le résultat de la boucle dedans
     
     
    	$page = 1;
    	if (isset($_GET['page']))	$page = $_GET['page'];
    	else
    	if	(isset($_GET['page']))	{$page = $_GET['page']; echo "page=$page";}
     
    	// Nombre de résultats par page
    	$nb = 5;
    	if (isset($_GET['nb']))	$nb = $_GET['nb'];
    	else
    	if	(isset($_GET['nb']))	{$nb = $_GET['nb']; echo "nb=$nb";}
     
    	// Nombre total d'enregistrements
    	$total = mysql_num_rows(mysql_query($selection,$cnx));
     
    	// Nombre maximum de pages
    	$max_pg = ceil($total / $nb);
    	// Selection des enregistrements pour la page considérée
    	$selection .= ' LIMIT '.(($page-1) * $nb).','.$nb.'';
    	$query = mysql_query($selection, $cnx);
     
    }			
     
            $nombre_resultats = mysql_num_rows($selection_recherche); //compte le nombre d'entrées sélectionnées par la recherche
    	 	 	$somme = array();
                $somme2 = array();
             if ($nombre_resultats == 0) //s'il n'y a pas de résultat
                {
    		      echo("<META HTTP-equiv=\"refresh\" content=0;URL=aucun_resultat.php?nombre_resultats=$nombre_resultats&champs1=$champs1>");
                }
            else //il y a au moins un résultat
                {?>
                  <div id="navigationnn1"><!-- c'est la partie au en remplit le contenu-->
                  <div id="resultatsite">
                  <b>Recherche dans le site</b>
                  </div>
                 <!-- <div id="text">Si vous cherchez une offre de <b>stage</b> ou d'<b>emploi</b></div>-->
                 <form method="get" action="afficher_visiteur.php">
                <table width="700" align="center" bgcolor="#333366" style="margin-top:-15px; "  >
                    <tr> 
    	              <td><span class="Style1">Choisir et lancer maintenant votre recherche</span></td>
                    </tr>
    	            <tr>
    	              <td bgcolor="#F2F2F2"> <p>&nbsp;
                      </p>
    	              <p>
                      <input type="text" name="recherche" value="<?php if (isset($_GET['recherche'])) echo htmlentities(trim($_GET['recherche'])); ?>" SIZE="31" MAXLENGTH="255" style="margin-bottom:10px;"> 
                      <input type="submit" value="Rechercher" name="rechercher" style="margin-bottom:10px;"> 
                      <br>
    		          <select name="mode" style="float:left; margin-left:185px; display:none " >
                      <option value="expression_exacte">Expression Eexacte</option>
                      <option value="tous_les_mots">Tout les mots</option>
                      <option value="un_mot" selected>Au moins un mot</option>
                      </select>
    		          Rechercher dans :&nbsp;&nbsp;&nbsp;
                      <input type="radio" name="offre" value="stage"> Stage
                      <input type="radio" name="offre" value="emploi" checked> Emploi </p>
    	              <p>&nbsp;</p></td>
                    </tr>
                  </table>  
    	          </form>
                   <hr  style="border-bottom:solid 1px #000066; margin-top:-20px;width:900px; "></hr>
    	           <?php  
                   echo '<div style="background-color:#E0E0E0; width:900px; margin-top:-25px; height:25px; text-align:left;">&nbsp;&nbsp;&nbsp;
    		        <strong>Site</strong> 
    			    Résultats <strong>1 - 5</strong> sur un total d\'environ : <strong> ' . $nombre_resultats . '</strong>&nbsp;pour <strong>'.$resultat_champs.'</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><br /><br />'; //nombre de résultats
     
    				if(
                    while($resultats = mysql_fetch_array($query) ) //boucle affichant les résultats
                         {
                           if(!array_key_exists($resultats["url"], $somme))
    				         {
                               $somme[$resultats["url"]] = 0;
                               $somme[$resultats["url"]] +=  $resultats["poids"];
    				         }
                           if(!array_key_exists($resultats["url"], $somme2))
    				         {
                               $somme2[$resultats["url"]] = 0;
                               $somme2[$resultats["url"]] +=  $resultats["poids"] * $resultats["poids"];
    				         }
                         }
     
    	     arsort($somme);
    	     foreach ($somme as $url => $poids) 
    		     {
    		       $somme_carre=$somme2[$url];
    		       $racine_sommecarre=sqrt($somme2[$url]);
    		       $somme_mot=sqrt($nombre_mots);
    		       $rsv=$poids/($somme_mot*$racine_sommecarre);
    			   $affichage="select titre,resume,type_offre FROM document WHERE url='$url'";
    		       $affichage1=mysql_query($affichage); 
    		       $affichage2 = mysql_fetch_array($affichage1);
    		       echo '<p align="left" style="margin-bottom:-60px; font-size=20px; margin-left:18px;"><a href=' .$url. '>'.$affichage2['titre'].'</a>...<p><br>
    		       <p><hr  style="border-bottom:solid 1px #000066;width:870px; margin-left:3px; margin-bottom:-50px;"></hr></p><br>
    		       <p align="left" style="margin-bottom:-50px; margin-left:35px; margin-top:-30px; margin-right:20px;">'.$affichage2['resume'].'...<p><br>
    		       <p align="left" style="margin-bottom:-50px; color:#0F7C91; margin-left:35px;">' . $url . '<p><br><br><br>
    			   <p>&nbsp;</p>';    
                }
    			}//fin else

    svp est_ce qu'il ya qlq peut me répondre.

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    qu'est ce qui ne fonctionne pas dans le code que tu as donné ?

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 8
    Par défaut
    Salut,

    On veux bien essayer de te répondre, mais c'est quoi la question ?

  4. #4
    Membre confirmé Avatar de hadjiphp
    Inscrit en
    Décembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 155
    Par défaut
    Bonjour,
    je cherche comment répondre a cette demande :

    un utilsateur peut faire un recherche (requete = plusieurs mots)
    1- si le mot Є terme alors récupére le poids de ce mot dans la table 'terme'
    2- si le mot Є titre alors récupérer le poids de ce mots dans la table 'titre'
    3- si le mot Є(terme, titre) alors récupérer le poids de ce mot dans la table 'titre'

    svp est_ce qu'il ya qlq peut me répondre.
    Merci d'avance.

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/06/2008, 03h53
  2. Réponses: 1
    Dernier message: 20/02/2008, 11h34
  3. Créer une table a partir de deux tables existantes
    Par Aguiran dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 07/12/2006, 08h16
  4. Réponses: 12
    Dernier message: 28/11/2006, 15h34
  5. Requete Delete à partir de deux tables
    Par Le_Phasme dans le forum Access
    Réponses: 2
    Dernier message: 09/10/2006, 10h22

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