Actualité informatique
Test comparatif matériel informatique
Jeux vidéo
Astuces informatique
Vidéo
Télécharger
Services en ligne
Forum informatique
01Business

|-  INTERNET


|||-  

Compter les résultats avec php

 

Ajouter une réponse
 

 
Page photos
 
     
Vider la liste des messages à citer
 
 Page :
1
Auteur
 Sujet :

Compter les résultats avec php

Prévenir les modérateurs en cas d'abus 
kilain67
kilain67
  1. Posté le 07/05/2006 à 10:25:26  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour a tous,

 Depuis quelques jours je cherche comment compter les résultats d'une requete sur ma base de donnée.

 Je sais compter le nombre de mot que j'ai taper dans le champs de recherche.
 Je sais donner un numéro different pour chaque résultats.

 Mais je ne trouve pas comment compter le nombre de résultats obtenu (c'est a dire a compter le nombre de fois que la boucle while a tournée).

 Si quelqu'un peut m'aider. :jap:

louloukart
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 07/05/2006 à 11:10:46  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Bonjour,

 utilise mysql_numrows(REQUETE)
 et tu met ta requête entre parenthèses

 A+


---------------
LouLou
(Publicité)
  1. homepage
kilian67
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 07/05/2006 à 11:20:47  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
J'ai deja fait cela et lorsqu'il y a un seul résultat ça fonctionne mais quand il y a plus de 2 resultats j'ai Resource id #6 qui s'affiche.

louloukart
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 07/05/2006 à 11:54:54  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
tu peux me montrer ce que tu as fait stp ?


---------------
LouLou
  1. homepage
kilian67
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 07/05/2006 à 12:03:44  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
<?php
 $Q = $_POST['recherche'];
 $_POST['recherche'] = $Q ;

 // page necessaire a la connexion a la base
 require("mpi/parametres.php" );

 // connections au serveur
 $Connexion = mysql_connect($Host, $Login, $Pass) or  die ("<br><br><p><center><table width=\"70%\" bgcolor=\"#990000\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\"><tr><td><cen​ter><h1>Connexion au serveur <big><u>\"$Host\"</u></big> impossible<br>Veuillez contactez le webmaster pour lui signaler le problème</h1>
            </td></tr></table><p></p><p>&n​bsp;</p></center></td></tr>" );
 mysql_select_db("$Database",$C​onnexion);

 // on passe les mots recherchés en minuscules
 $Q = strtolower($Q);

 // on remplace les ( ' + , : )  par des espaces
 $mots = str_replace('+', ' ', trim($Q));
 $mots = str_replace('\'', ' ', $mots);
 $mots = str_replace(',', ' ', $mots);
 $mots = str_replace(':', ' ', $mots);
 $mots = str_replace('et', ' ', $mots);
 $mots = str_replace('ou', ' ', $mots);
 $mots = str_replace('le', ' ', $mots);
 $mots = str_replace('la', ' ', $mots);
 $mots = str_replace('les', ' ', $mots);

 // on place les differents mots dans un tableau
 $tab = explode(' ' , $mots);

 // on compte le nbr d'élément du tableau.
 $nb = count($tab);

 //requête SQL
 $sql = "SELECT $Champs FROM $Table WHERE $Cles LIKE '%$tab[0]%'"or die(mysql_error()) ;

 // on boucle pour integrer tous les mots dans la requête
 for($i = 1; $i < $nb; $i++){
 $sql .= "$EtOu $Cles LIKE '%$tab[$i]%'";
 }

 // d'affichage
 $sql .= "ORDER BY $Ordre ASC";

 // Si un seul enregistrement est trouvé, on affiche un message au singulier
 if ($nb == "1" ) {
 echo "<br><br><br><span style=\"font-size:16pt;\"><fon​t color=\"#009999\">Résultat de votre requète concernant le mot <b><u>\"$tab[0]\"</u></b>&​lt;/font></span><p​>";
 }

 // Dans le cas contraire le message est au pluriel...  
 else {
 echo "<br><br><br><span style=\"font-size:16pt;\"><fon​t color=\"#009999\">Résultat de votre requète concernant les mots <b><u>\"$tab[0] $tab[1] $tab[2] $tab[3] $tab[4] $tab[5]\"</u></b>&​lt;/font></span><p​>";
 }

 // on execute la requête SQL
 $Res = mysql_db_query($Database, $sql);
 if(mysql_num_rows($Res) == 0){

 // Si il n'y a pas de résultats on affiche
 ?>
 <center>

<p>&nbsp;</p>
  <form method="post" action='<?php echo "$PageResultats" ?>'>
  <input type="text" maxLength="50" size="40" name="recherche" value="Faire une autre recherche">
 <input type="submit" name="value" value="go !">
 </form>
 <p>&nbsp;</p>

<p><br><br><br><span style="font-size:16pt;"><font color="#FF0000">Aucun résultats pour "<b><?php echo "$tab[0] $tab[1] $tab[2] $tab[3] $tab[4] $tab[5]</b>"?>"</font></span></p>
 <p></p>

</p>
 </center>
 <?php
 }else{

 // Si un seul enregistrement est trouvé, on affiche un message au singulier
 if (mysql_num_rows($Res) == 1) {
 echo "<br><br><br><span style=\"font-size:16pt;\"><fon​t color=\"#009999\">Résultat: Une réponse</u></b></font></span><​p>";
 }

 // Dans le cas contraire le message est au pluriel...  
 else{
 echo "<br><br><br><span style=\"font-size:16pt;\"><fon​t color=\"#009999\">Résultats: $Res réponses</u></b></font></span>​<p>";
 }

 // on affiche les résultats
 ?>
 <center>
  <form method="post" action='<?php echo "$PageResultats" ?>'>
  <input type="text" maxLength="50" size="40" name="recherche" value="Faire une autre recherche">
 <input type="submit" name="value" value="Go !">
 </form>
 </center>
 <p><?php
 $Result = 1;
 while($data = mysql_fetch_array($Res)){
 ?>
 <p>&nbsp;</p>

<table width="70%" border="0" cellpadding="0" cellspacing="0">
        <tr>
 <?php

 // Ci dessous correspond au titre qui sera afficher dans la liste des réponses          
 echo '<td width="70%"><img src="mpi\images\mpi.jpg" width="30" height="30" border="0"><a href="'.htmlentities($data["$Entree3"]).'" target="_blank"><font face="Bodoni MT Condensed" size="5" color="#00CC66"><b>    '.$Result.'.    '.htmlentities($data["$Entree1"]).'</b​></font></a><​;/td>';
 ?>

</tr>

<tr>
 <?php

 // Ci dessous correspond a l'affichage de la description de la réponse    
 echo '<td><font face="garamond" color="#666666" size="5">'.htmlentities($data["$Entree2"]).'</f​ont></td>';
 ?>    
     </tr>
   </table>
   
 <?php

 $Result++;

 }
 mysql_free_result($Res);
 }

 // on ferme la connexion
 mysql_close($Connexion);

 ?>

(Publicité)
louloukart
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 07/05/2006 à 12:47:51  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
et tu veux compter le nbre d'enregistrement de cette requête ? :

 $sql = "SELECT $Champs FROM $Table WHERE $Cles LIKE '%$tab[0]%'"


---------------
LouLou
  1. homepage
kilian67
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 07/05/2006 à 12:54:47  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Pas tout a fait,

 en fait je veut compter le nombre de résultats obtenu par la boucle while c'est a dire le nombre de fois qu'elle a du tournée jusqu'a ce qu'il n'y ai plus de réponses a ma requète.

  1. homepage
sanvean
Tu cartonnes ! (de 500 à 999 messages postés)
  1. Posté le 07/05/2006 à 13:52:50  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Te casse pas la tête, y'a une solution toute bête : incrémenter un compteur en variable.

 Exemple :

 <?
 $i=0;
 while(...){
 [code à exécuter]
 $i++;
 }
 echo "Nombre de tours : " . $i;
 ?>


(Publicité)
  1. homepage
kilian67
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 07/05/2006 à 17:00:35  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Je te remerci Sanvean ta soluce fonctionne mais le résultat m'affiche toujours un tour de plus par rapport au vrai résultats.

 D'autre part j'aimerai que

 echo "Nombre de tours : " . $i;

 s'affiche en haut de ma page si possible.

 En tout cas j'avance doucement mais surement grace a vous c'est cool. :hello:
 

louloukart
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 07/05/2006 à 17:26:27  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
comme le $i a démarré à 0, et bien il y a un retard de 1.

 Pour combler ce retard il faut faire par exemple :
 $i = $i +1;

 après toute ta boucle while


 pour le mettre en haut, et bien il faut ta requete et ta boule while tout en haut (sans rien oublier) et faire "Nombre de tours : " . $i; où tu veux mais après ta boucle while (et sans oublier le +1)


---------------
LouLou
  1. homepage
kilian67
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 07/05/2006 à 20:20:55  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
ok mais le probleme est toujours le meme vu que les choses trouvées dans ma base de donnée sont inscrite sur ma page par le biais de ma boucle.

 Je voudrai que le nombre des résultats trouvées soit inscrit avant les différents liens qui resorte de ma requète comme pour google par exemple, on tape des mots clés et en haut avant les résultats il affiche le nombre de réponses en fait c'est ça ce que je cherche.

 Bon de toute façon pour l'instant je suis satisfait de toutes vos réponses qui m'ont aidé et si vous avez d'autre suggestion je suis preneur.

(Publicité)
  1. homepage
sanvean
Tu cartonnes ! (de 500 à 999 messages postés)
  1. Posté le 08/05/2006 à 11:50:46  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Deux pistes :

 - Dans ton while que tu places en début de fichier, placer les résultats dans un tableau et une fois la boucle terminée, lister le contenu du tableau là où tu le désires;

 - Faire un premier While pour uniquement incrémenter le compteur, ensuite afficher le nombre de tours, et refaire le même while mais ce coup ci pour afficher les résultats (plus clair : un while pour le compteur, un autre pour les résultats)).

  1. homepage
kilian67
Sur la bonne voie (de 100 à 499 messages postés)
  1. Posté le 08/05/2006 à 12:43:25  
  1. answer
  1. Prévenir les modérateurs en cas d'abus
 
Et bien je te remercie Sanvean j'ai effectuer ta deuxième solution car elle me parai moins compliqué et ça fonctionne.

 Sinon merci a tous les deux voila quelques semaines que je cherchai et grace a vous je peut passer a autre chose.

 Merci.

 Page :
1

Aller à :
 

Sujets relatifs
classement des résultats d'une recherche sur le Web Febe prépare ses résultats
Nouvelle page de resultats Google completement nulle ! Hot line cegetel catastrophique et ne sait pas compter
Comment interpreter ces resultats ?  
Plus de sujets relatifs à : Compter les résultats avec php

Les 5 sujets de discussion précédents Nombre de réponses Dernier message
Création de menus 2
demande de lecture de musique 1
problème de FTP 2
creation de site et forum 1
Filezilla 0