Forum Clubic

[sql/php]parcours tableaux

re coucou!!!
alors, j’ai comme bout de code :


$req = "SELECT url, titre, Poids, ID_TEXTE FROM mot, texte WHERE Libelle LIKE \"%$mot_search[$i]%\" AND ID_TEXTE = ID ";
    	$sql = mysql_query($req);
    	$searchMot = mysql_fetch_array($sql);
    	$nrows  = mysql_num_rows($sql);
    	//echo "<br>".$req."\n".$nrows;
    	
    	while ($searchMot)
    	{
      $poids = $searchMot["Poids"];
      $idTexte = $searchMot["ID_TEXTE"];
      $motcherche[$idTexte]=$poids;
      $searchMot = mysql_fetch_array($sql);
      
    	}

qui me donne pour le moment :

1 1
2 19
1 15
2 40

et ce que je veux serais

1 16
2 59

Si quelqu’un peut me mettre sur une piste, ce ne serais pas de refus!!!
merci d’avance!!

Bonjour à toi

Si j’ai bien compris, tu souhaites avoir la somme des poids pour chaque texte.

Dans ce cas, il faut utiliser la clause group by dans ta requête:


$req = "SELECT url, titre, Poids, ID_TEXTE FROM mot, texte WHERE Libelle LIKE \"%$mot_search[$i]%\" AND ID_TEXTE = ID GROUP BY ID_TEXTE";

Pour ton while, ton code est bon, mais tu peux faire plus simplement:

    	
    	while ($searchMot = mysql_fetch_array($sql))
    	{
      $poids = $searchMot["Poids"];
      $idTexte = $searchMot["ID_TEXTE"];
      $motcherche[$idTexte]=$poids;
           
    	}

Voilà j’espère avoir résolu ton problème :slight_smile:

Bonjour à tous :hello:


$req = "SELECT sum(Poids), ID_TEXTE FROM mot, texte WHERE Libelle LIKE \"%$mot_search[$i]%\" AND ID_TEXTE = ID GROUP BY ID_TEXTE";

ou


$req = "SELECT url, titre, sum(Poids), ID_TEXTE FROM mot, texte WHERE Libelle LIKE \"%$mot_search[$i]%\" AND ID_TEXTE = ID GROUP BY url, titre, ID_TEXTE";

manquait juste le sum() et group by porte forcément sur toutes les colonnes qui ne sont pas des fonctions, mais c’est bien la bonne solution :wink:

Merci beaucoup pour votre aide, mais le sum n’a pas résolu mon pti soucis!! ceci dit, j’ai quand même trouvé une autre solution :


while ($i<$nb_mot)
  	{
    $pos = strpos($ChaineVide, $mot_search[$i]);
    if(($pos === false) && (strlen($mot_search[$i])>2))
    {
    	$req = "SELECT Poids, ID_TEXTE,url, titre FROM mot, texte WHERE Libelle LIKE \"%$mot_search[$i]%\" AND ID_TEXTE = ID ";
    	$sql = mysql_query($req);
    	$searchMot = mysql_fetch_array($sql);
    	while ($searchMot)
    	{
      $poids = $searchMot["Poids"];
      $idTexte = $searchMot["ID_TEXTE"];
      if (isset($motcherche[$idTexte]))
      {
      	$motcherche[$idTexte]+=$poids;
      }
      else
      {
      	$motcherche[$idTexte]=$poids;
      }
      $searchMot = mysql_fetch_array($sql);
    	}
    	
    }
    $i++;
  	}
  	arsort($motcherche);
  	foreach ($motcherche as $clef => $valeur) 
  	{
    $req="SELECT url, titre FROM texte WHERE ID = $clef";
    $sql = mysql_query($req);
    $resultat = mysql_fetch_array($sql);
    $nrows  = mysql_num_rows($sql);
    $nb_resultat=0;
    	While ($resultat)
    	{
      $url = $resultat["url"];
      $titre = $resultat["titre"];
      echo " <br><a href=\"$url\">$titre</a>";
      $resultat = mysql_fetch_array($sql);
    	}
    	
  	}

Voici la phase recherche de mon moteur de recherche!! je n’ai pas mis tout le code parce que bon, ça ma demandé bcp trop de reflexion, et puis il reste encore à le peaufiner, à en faire une bonne présentation quand même, mais voici le principale de la recherche!!!
J’avoue, ce n’est peut être pas évident à comprendre!!! en tout cas, voilà que mon projet est bientôt fini, et je tenais à remercier tous ceux qui m’ont aidé!!!!