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

PHP & Base de données Discussion :

Récupérer les 3 premiers résultats d'une boucle de 50 [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut Récupérer les 3 premiers résultats d'une boucle de 50
    Bonjour,
    Sur ma requête, je vais chercher les 50 premiers résultats d'une recherche et je souhaiterais re-travailler une variable uniquement sur les 3 premiers résultats tout en affichant les 47 autres...

    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
    <?php
    // +------ pour l'affichage page par page... -------+ 	
     
    			$limit="50"; 	
     
    			if(!$debut) 	
    		{ 	
    			$debut=0; 	
    		} 	
     
    // +------ Une partie de ma requête -------+ 
    //........
    			"AS relevance FROM moteur_sites  WHERE ( 
    			MATCH (nomsite , description, mcles, url, texte) 
    			AGAINST ('$keywordClean' IN BOOLEAN MODE) ) 
    			AND valid='1' AND infoshort='0' 
    			$fil HAVING relevance > 0 ORDER BY relevance 
    			DESC LIMIT $debut,$limit"; 
     
    			$resulta1 = $mysqli->query($requetea1) or die($mysqli->error.__LINE__);
                            $count1 = mysqli_num_rows($resulta1);
     
    // +------ Extraction de la table -------+     
     
    			while ($annuaireData=mysqli_fetch_array($resulta1)) 	
    			{ 	
    			extract($annuaireData); 
     
    			$abosser = $texte;
     
    ?>
    Comment retravailler à partir d'ici ($abosser) que sur les 3 premiers résultats et pas sur les 50 ??
    Je peux AUSSI utiliser la valeurs de relevance (qui est le score de mon résultat et récuperer le $texte des 3 meilleurs scores/relevance), tout comme reprendre les 3 premiers $count1 ....

    Il me semble qu'il y a plusieurs choix mais je ne vois pas comment m'y prendre au mieux

    Merci pour votre aide
    Yule

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu enregistres les 3 premières valeurs dans un tableau :
    • Tu crées le tableau avant le while.
    • Tu initialises un compteur à 0 toujours avant le while
    • Dans le while tu testes si le compteur est < à 3 si oui alors tu ajoutes $texte au tableau et tu incrémentes le compteur.

  3. #3
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut
    re,re

    Ok j'ai compris la direction,merci. Je vais regarder pour faire ça en pratique hum..

    Bonne bonne
    Yule

  4. #4
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut
    Donc j'ai essayé de partir ainsi mais Ca fait planter ma page..


    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
     
                            $tableau1 = array();
    			$i = 0;
     
    // +------ Extraction de la table -------+     
     
    		while ($annuaireData=mysqli_fetch_array($resulta1)) 	
    		{ 	
    		extract($annuaireData); 	
     
     
    		// +------ TEST des Tags  -------+
    			for ($i<3($texte);$i++) {
    			$tableau1[$i]=$texte;
    			}
     
    echo $tableau1;

  5. #5
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Salut,

    ta fonction while n'est pas fermée -> manque un }

  6. #6
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut
    Hello,

    Elle est bien fermée plus bas dans mon code

    C'est mon for qui est pas juste... et que je n'arrive pas à mettre en place

    il me sort 3x la même ligne

    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
     
    // +------ TEST des Tags  -------+ 
     
    			$tableau1 = array();
    			$i = 0;
     
    // +------ Extraction de la table -------+     
     
    		while ($annuaireData=mysqli_fetch_array($resulta1)) 	
    		{ 	
    		extract($annuaireData); 	
     
    		$n = 3 ;
    		for( $i=0; $i<$n; $i++)  {
              $tableau1[$i] = array($texte);
              }
     
         echo "<pre>";
         print_r($tableau1);
         echo "</pre>" ;

  7. #7
    Membre éclairé Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Points : 760
    Points
    760
    Par défaut
    Tu mets dans ton tableau : array($texte)

    $texte je change pas ni ta boucle for ni dans ta boucle while.

  8. #8
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut
    ça ne fonctionne toujours pas..

    Dans le premier tableau que je déclare à vide comme suggéré ci-dessus est pour éviter d'avoir 10'000'000 de caractères.

    en reprenant les 3 premiers résultats, j'aurais que"30'000" caractères

    Donc s'il m'affiche bien 3 x la valeur $texte c'est déjà pas mal.. maintenant il faudrait qu'il prennent les 3 premiers et pas 3x les 50 résultats

    L'incrémentation se fait pas juste et je vois pas ou...

    A+

  9. #9
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    J'ai dit qu'il fallait faire un test pas une boucle for.

  10. #10
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut
    Citation Envoyé par badaze Voir le message
    J'ai dit qu'il fallait faire un test pas une boucle for.
    Mais je sais pas comment tester... aie aie

  11. #11
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Comment est-ce possible de faire une requête sql et ne pas savoir faire un test ?

    Tu es sûr qu'il faille mettre array($texte) au lieu de $texte seulement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      while ($annuaireData=mysqli_fetch_array($resulta1))  
      {  
      extract($annuaireData);  
     
            if($i<3)  {
              $tableau1[$i] = array($texte);
              $i++;
            }
      ...

  12. #12
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut
    Merci, j'ai vu mon erreur... comme un imbécile, j'affichais le résultat dans le while et je restais focalisé la-dessus...
    Que veux-tu.. il y a des fois ou il faudrait tout lâcher et revenir 2h00 plus tard

    BOnne bonne
    Yule

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/11/2010, 19h55
  2. [MySQL] récupérer les dimensions des images dans une boucle while
    Par Navyel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/08/2007, 11h09
  3. Réponses: 6
    Dernier message: 01/06/2007, 13h19
  4. Réponses: 2
    Dernier message: 14/06/2006, 09h30
  5. Réponses: 8
    Dernier message: 02/11/2005, 14h16

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