Bonjour à tous.

D'abord, je suis vraiment désolé si je suis pas sur le bon forum, j'utilise la lotterie en AJAX, mais je pense que la partie de code qui résoudra mon problème se fait en php, du coup je le poste ici

Bien. je souhaite coder une lotterie, pour ça, j'utilise un minuteur (dont j'ai vu le tuto ici) et à la fin de celui ci, je fais un appel en ajax; je vous épargne la totalité du code du minuteur, je me concentre sur l'appel ajax :

if(Math.ceil(time) <= 1000)
        {
            $.ajaxSetup({ headers: { 'csrftoken' : '{{ csrf_token() }}' } });
            $.ajax({
                url: "/triumphclick/get_user",
                type: "GET",
                dataType: "json",
                success: function ( data ) {
                    var user = data;

                    if(user == 'nope'){
                        $('.gagnant').html('<strong class="win">Le compte du gagnant a été crédité ! Félicitation !</strong>')
                    }else if (user == 'nope'){
                        $('.gagnant').html('<strong class="win">Le gagnant est '+ user.login +'!</strong>' +
                            '<p><h6 class="org"><i><b>Votre compte a été crédité ! Félicitation !</b></i></h6></p>')
                    }
                }
            });

            clearTimeout(timer);
            $('.bloc-min').addClass('removed');
        }

Et du coup, ça m'appelle un fichier qui exécute ce code :

$lien = User_liens::where('chance', true)->inRandomOrder()->first(); //Sur tous les liens dans la bdd, on en récupère un au hasard, et on récupère l'id du gagnant dessus

    $user = \App\User::where('id', $lien->user_id)->first(); //On récupère ses infos là
    $date = date('Y-m-d H:m:s');

    if ($user->lottery_submit < \Carbon\Carbon::today()->subDays(1)){ //On vérifie si la lotterie n'a pas déjà été postée aujourd'hui, dans ce cas on crédite ses points et on renvois le gagnant pour le script jquery

        $solde_pts = $user->solde_points + 20;

        $user->update([
            'solde_points' => $solde_pts,
            'lottery_submit' => $date
        ]);

        return \Response::json($user);
    }
    else{
        $user = 'nope';
        return \Response::json($user);
    }

C'est ce code là qui me dérange. J'aimerais n'avoir qu'un seul gagnant. En gros actuellement, si j'ai 3 potentiels gagnants, le script va en choisir un, y créditer ses points et y mettre la date qui le rends impossible à recréditer avant 24h. Mais, en rafraichissant la page, la lotterie trouve les deux autres gagnants, en crédite un au hasard, et ainsi de suite, jusqu'à ce qu'il n'y ai plus personne.

Du coup, j'aimerais savoir comment je pourrais faire en sorte de n'avoir qu'un seul gagnant à créditer, plutôt que tous.

Si vous avez une idée, je suis preneur, merci ! Et encore désolé si je me suis trompé de forum ^^

Aucune réponse