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 :

Choisir aléatoirement un gagnant de la bdd


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web Full-Stack
    Inscrit en
    Mai 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2019
    Messages : 19
    Par défaut Choisir aléatoirement un gagnant de la bdd
    Bonjour,

    Je bloque sur un petit script qui permet de récupérer 3 gagnantes, aléatoirement d'une table dans la base de données. Je procèdes comme suit :

    - Vérifier le nombre max d'id dans la table
    - Création d'un tableau winner où seront stocké les gagnantes
    - Une boucle tant que le nombre d'élément de winner[] est plus petit que 3
    {
    * On défini un nombre aléatoire avec rand_max du nombre max d'id récupéré au début
    * Vérifier que l'id n'a pas déjà été prit, pour cela on les met dans un tableau
    * Sinon tout est ok, on rajoute son email au tableau winner[]
    }

    Mon code se présente comme suit :
    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
     
    function choiceWinnerRand()
    {
        $bdd = dbConnect();
     
        $selectIdMax = $bdd -> query('SELECT * FROM concours'); 
        $result = $selectIdMax -> rowCount();
     
        $winner = array();
        $howMuchWinner = 3;
     
        while(count($winner) < 3)
        {
            $idRand = rand(1, $result);
            $idLastRand = array();
     
            if(!array_search($idRand, $idLastRand))
            {
                array_push($idLastRand, $idRand);
     
                $selectWinner = $bdd -> prepare('SELECT name, lastName, email FROM concours WHERE id=:idRand');
                $selectWinner -> bindValue(':idRand', $idRand, PDO::PARAM_INT);
                $selectWinner -> execute();
     
                $data = $selectWinner -> fetch();
     
                array_push($winner, $data['email']);
            }
        }
     
        print_r($winner);
     
        throw new Exception('
        <ol>
        Gagnante 1 : ' . $winner[0] . '<br>
        Gagnante 2 : ' . $winner[1] . '<br>
        Gagnante 3 : ' . $winner[2] . '<br>
        </ol>
        ', 101);
    }
    Ca me renvoi des valeur vide, genre par exemple tentative 1, j'ai :
    array([0] => monemail@example.com [1] => [2] =>)
    ou
    array([0] => monemail@example.com [1] => [2] => monemail2@example.com)

    Et parfois ça remplit les 3, je penses que c'est à cause du fait que dans le tableau est stocké des valeurs null, si 'est le cas, comment faire pour ne pas les stocker ?

    Et j'ai aussi le problème du fait que si l'id est déjà dans le tableau des id choisie, il m'affiche quand même dexu fois la même adresse mail parfois. Pourquoi ? Ne devrait-il pas l'éviter puisqu'elle se trouve dans le tableau des id qui ont déjà été utilisés ?


    Voilà merci à ceux qui prendront le temps de m'aider !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *
    FROM concours
    ORDER BY RAND()
    LIMIT 3
    C'est tout.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web Full-Stack
    Inscrit en
    Mai 2019
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Maroc

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

    Informations forums :
    Inscription : Mai 2019
    Messages : 19
    Par défaut
    Exact ! J'avais vu la fonction RAND() mais je n'ai pas su l'utiliser !

    Merci de ton aide !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/11/2008, 20h32
  2. Choisir Aléatoirement un SWF
    Par McFlan dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/11/2007, 19h57
  3. [Débutant] Choisir aléatoirement entre trois variables
    Par diabolodj2 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 08/09/2007, 16h49
  4. choisir aléatoirement un texte
    Par flo456 dans le forum ASP
    Réponses: 4
    Dernier message: 28/06/2006, 10h52
  5. Choisir aléatoirement des noms...
    Par CritikKiller dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/06/2004, 20h15

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