Résultat aléatoire

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Résultat aléatoire

    Bonjour,

    J'ai mis cette ligne dans un de mes modules :

    Code PHP:
    $options = array('state' => SOCIAL_FRIENDS_STATE_FRIENDS 'limit' => 100); 
    Je limite la quantité de résultat à 100, car j'ai, pour le moment, des cas ou j'arriverai à presque 3000 résultats.
    J'aimerai que ces 100 résultats ne soient pas toujours les mêmes.

    Existe-t-il une commande pour obtenir des résultats aléatoires ?

    Cordialement.

    Eric

  • #2
    Bonjour

    De ce que je lis tu définis une variable nommée options et qui est un array.

    Ensuite c'est madame Irma qu'il faut appeler car où et comment tu utilises options ?

    Je présume que limit est utilisé dans un Query et je présume donc qu'il n'y a donc pas de rando. Un SELECT... LIMIT prends les premiers du recordset
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

    Commentaire


    • #3
      Bonjour cavo,
      Il s'agit de modules Easysocial que je développe.

      Voici le petit bout de PHP concerné :
      Code PHP:
      $id $this->input->get('userid'null'int'); // ID de l'élément dans l'URL
              
      $user ES::user($id); // ID de l'utilisateur
              
      $model ES::model('Friends');
              
      $options = array('state' => SOCIAL_FRIENDS_STATE_FRIENDS 'limit' => 100); // Tableau des amis
              
      $friends $model->getFriends($user->id$options);// Liste des amis de l'utilisateur 
      J'ai besoin de créer un tableau qui contiendrait X éléments (100 dans mon exemple) mais cela de façon aléatoire parmi une grande quantité d'éléments.

      Suis-je plus clair ?

      Cordialement.

      Eric

      Commentaire


      • #4
        Bonjour Eric,

        Comme écrit par Christophe, ton bout de code est insuffisant. Les options sont utilisées dans ton modèle Friends. Si tu regardes, par exemple, le modèle contacts de com_contact (adminstrator/components/com_contact/models/contacts.php), il y a une fonction getListQuery qui fait la requête sql adéquate.

        Pascal
        If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

        Commentaire


        • #5
          Bonjour

          Pas réellement parce que $model->getFriends est une méthode de EasySocial et à moins de maîtriser ce composant, personne ne sait ce que fait getFriends() ;-)

          Je reste cependant sur ma présomption qu'il ne s'agit in fine que de rajouter "LIMIT xxx" à l'instruction SQL et ma réponse reste donc : non, ce n'est pas aléatoire.

          Sous Joomla Admin, active le mode debug et affiche ta page avec ton module. Tu devrais voir au bas de l'écran une zone avec toutes les instructions SQL. Si tu vois mon fameux LIMIT avec ton nombre alors c'est bien ce que je dis; pas de random mais les xxx premiers selon le tri qui est fait.
          Christophe (cavo789)
          Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
          Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

          Commentaire


          • #6
            Salut

            As tu regardé la fonction shuffle.
            Ensuite, tu la limites a 100.

            ++
            Wis

            Commentaire


            • #7
              Bonne idée mais bien comprendre : shuffle nécessite que les données soient en mémoire (dans un array) ==> s'il y a 10.000 records dans la table, il faut récupérer tous les records (avec un SELECT ...) puis faire le shuffle pour n'en garder que 100.

              Sur le plan de la performance; c'est contre-productif (avec 10.000 records et 100 valeurs gardées; on jette donc 99% des données récupérées à la poubelle)
              Christophe (cavo789)
              Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
              Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

              Commentaire


              • #8
                Bonjour,
                Excusez-moi, j'ai été très occupé ces derniers temps.
                Alors j'ai trouvé la solution.

                J'ai ajouté cela dans mon fichier dans model:

                Code PHP:
                $randomSort = isset($options['randomSort']) && $options['randomSort'] ? $options['randomSort'] : '';
                 if (
                $sort != 'lastseen' && $randomSort) {
                       
                $query[] = 'order by rand()';
                 } 

                Puis dans mon fichier php:

                Code PHP:
                $options = array('state' => SOCIAL_FRIENDS_STATE_FRIENDS 'limit' => 50'randomSort' => true); 

                Bien cordialement.

                Eric


                Commentaire

                Annonce

                Réduire
                Aucune annonce pour le moment.

                Partenaire de l'association

                Réduire

                Hébergeur Web PlanetHoster
                Travaille ...
                X