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

Langage PHP Discussion :

Serie de Nombre sortie, et verifier les gagnants


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut Serie de Nombre sortie, et verifier les gagnants
    Bonjour,

    Voilà j'aimerais savoir comment je peu vérifier le nombre de numéro gagnant dans un tirage.

    Exemple : les tirages 21-17-8-12-47/N chance 8

    Dans ma base chaque membre on un ticket d'une suite de nombre

    Exemple : 12-7-8-24-47 et un numéro chance 5

    Je voudrais savoir comment je peu faire pour savoir le nombre de numéro gagnant.

    Si possible que une recherche même dans le désordre dans l'exemple j'ai 2 bon numéro.

    J'ai essayez ceci mais je n'ai aucun resultat


    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    <?php
    $min = 1;
    $tirage_str = '7'.'-'.$num2.'-'.$num3.'-'.$num4.'-'.$num5;
     
    $sql =  mysql_query("SELECT * FROM jeux_lotos");
    while($result8 = mysql_fetch_array($sql)){
     
    $sql95 = mysql_query('SELECT *,count(etoile) as nbrnum FROM jeux_lotos WHERE "'.$result8['etoile'].'" IN ("'. $tirage_str .'") group by pseudo HAVING nbrnum >= "'.$min.'"') or die('Erreur SQL !'.$sql95.'<br>' . mysql_error());
    echo 'SELECT *,count(etoile) as nbrnum FROM jeux_lotos WHERE "'.$result8['etoile'].'" IN ('. $tirage_str .') GROUP BY pseudo HAVING nbrnum >= "'.$min.'"<br>';
     
    while ($result = mysql_fetch_array($sql95))
    {
        $idmembre  = $result['pseudo'];
        $nbrnum = $result['nbrnum'];
     
    echo $nbrnum;
     
        if (array_key_exists($nbrnum, $gains))
        {
        //echo "Gagnant avec $gains[$nbrnum]";
        $resultat[$nbrnum] = $resultat[$nbrnum] + 1;// Combien de gagnant pour le rang nbrnum
        $id[$nbrnum] = $id[$nbrnum] . $idmembre . ',';// idmembre des gagnants pour le rang nbrnum
        $sql1 = "UPDATE loterie_parties SET gagnant = 'oui', nbrgagnant = '$nbrnum' where idpartie ='$idpartie'";
    	echo "UPDATE loterie_parties SET gagnant = 'oui', nbrgagnant = '$nbrnum' where idpartie ='$idpartie'";
        //$req1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
        }
    }
     
     
    if (!empty($resultat))
    {
        foreach($resultat as $nbrnum => $nbrgagnant)
        {
               $gainsfinal = $gains[$nbrnum] / $nbrgagnant;
               $gainsfinal = round($gainsfinal,2);
               $id[$nbrnum] = preg_replace('#,$#','',$id[$nbrnum]);
              echo "Nombre de numéro : $nbrnum | Nombre de gagnant : $nbrgagnant | Gains :$gainsfinal | Membres : $id[$nbrnum]<br />";
     
               $sql1 = "UPDATE membres SET points = points + $gainsfinal WHERE idmembre IN ($id[$nbrnum])";
            //$req1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
     
            $sql1 = "UPDATE loterie_parties SET gains = '$gainsfinal' WHERE idtirage ='$idtirage' AND idmembre IN ($id[$nbrnum]) AND nbrgagnant = '$nbrnum'";
            //$req1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql1.'<br>'.mysql_error());
        }
    }
    $i++;
    }
     
    ?>
    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ta colonne "etoile" contient par exemple la chaine "12-7-8-24-47"
    Si oui, c'est une mauvaise structure, il faut une table avec une ligne par numéro.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Bonjour,

    Merci pour la réponse donc il faut un numéro par colonne au niveau de sql.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    J'ai bien modifier les champs sql soit 1 chiffre par colone.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $sql95 = mysql_query('SELECT *,count(*) as nbrnum FROM jeux_lotos WHERE 
    "'.$num1.' " IN ('.$result8['num1'].', '.$result8['num2'].', '.$result8['num3'].',  '.$result8['num4'].', '.$result8['num5'].' ) HAVING nbrnum >= "'.$min.'"') or die('Erreur SQL !'.$sql95.'<br>' . mysql_error());
    $result = mysql_fetch_array($sql95);
    J'ai bien un résultat mais cela me renvoi 30 à chaque fois.
    Et comment faire pour les autres numéro.

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non, pas un par colonne ; si tu fais ça il faudrait comparer chaque numéro de tirage avec chaque colonne.
    Il faut une table avec une ligne par numéro.

    table grille_numero
    id, grille, numero
    1, 2345, 12
    2, 2345, 7
    3, 2345, 8
    4, 2345, 24
    5, 2345, 47

    et table grille pour lier les grilles aux tirages et à l'utilisateur :
    id_grille, tirage, user
    2345, 456, 254

    Le nombre de bons numéros pour le tirage 21,12,7,8,12 est alors :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT grille, COUNT(*) FROM grille_numero gn 
    JOIN grille tg ON tg.grille = g.id_grille = gn.grille
    WHERE g.user = 254 AND tirage = 456 AND gn.numero IN (21,12,7,8,12)
    GROUP BY grille

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Bon alors je me suis mal expliquer

    Je fais un tirage d'un loto soit 5 chiffre + un numero chance.

    Voila un exemple de l'insertion d'un membre

    id pseudo num1 num2 num3 num4 num5 etoile date_entre date_tirage
    1 user 6 38 32 9 21 2 2016-03-02 14:10:34 0000-00-00 00:00:00


    Donc au tirage au sort je sort les numeros suivant 12-15-24-9-21 et numero de chance 7

    donc je recherche combien de bon numéro il as peut etre que je me trompe dans le code si je fais ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sql95 = mysql_query('SELECT *,count(num1) as nbrnum FROM jeux_lotos WHERE "'.$num1.' " IN ('.$result8['num1'].', '.$result8['num2'].', '.$result8['num3'].',  '.$result8['num4'].', '.$result8['num5'].' ) HAVING nbrnum >= "1"') or die('Erreur SQL !'.$sql95.'<br>' . mysql_error());
    $result = mysql_fetch_array($sql95);
    "'.$num1.' " = le 1er numéro du tirage donc il recherche dans les 5 numeros

    Mais je sais pas comment faire pour les autre numero.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Dans le résultat ci dessous il trouve 4 fois le bon numéro 37

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT *,count(num1) as nbrnum FROM jeux_lotos WHERE "37 " IN (9, 15, 12, 37, 23 ) HAVING nbrnum >= "1"
    SELECT *, count(num1) as nbrnum FROM jeux_lotos WHERE "37 " IN (37, 19, 35, 9, 10 ) HAVING nbrnum >= "1"
    SELECT *, count(num1) as nbrnum FROM jeux_lotos WHERE "37 " IN (24, 1, 14, 37, 32 ) HAVING nbrnum >= "1"
    SELECT * ,count(num1) as nbrnum FROM jeux_lotos WHERE "37 " IN (37, 18, 20, 35, 34 ) HAVING nbrnum >= "1"

    Mon soucis si un numéro est trouve qu'il les grises dans le tableau.

  8. #8
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    une autre approche c'est de faire le traitement en PHP avec la fonction array_intersect().
    Tu n'as qu'à comparer les numéros du tirage aux numéros sélectionnés et les compter pour avoir le nombre.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Par contre je n'ai pas compris les précédent post de Sabotage il faut que je créer d'autre base.


    Celui ci c'est pour le tirage officiel
    table grille_numero
    id, grille, numero
    1, 2345, 12
    2, 2345, 7
    3, 2345, 8
    4, 2345, 24
    5, 2345, 47

    Ou je met les tirages des membres


    Par contre les tirages ce font tout les deux jours donc le membre peu avoir plusieurs grille à sont actif

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    C'est quoi gn dans le select Sabotage je ne comprend pas.
    Et dans les bases table grille je ne vois pas les numéro des membres.

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Dans tous les cas ton code actuel avec des requêtes imbriquées dans des boucles c'est une usine à gaz.

    Si tu n'as pas envie de revoir toute la structure de ta base de données, tu peux comme le propose rawsrc faire un traitement en PHP plutôt que directement en SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $tirage = array(7, $num2, $num3, $num4, $num5);
     
    $result = mysql_query('SELECT etoile, pseudo');
    while ($row = mysql_fetch_assoc($result)) {
        $grille = explode('-', $row['etoile']);
        $comparaison = array_intersect($grille, $tirage);
        echo $row['pseudo'] . ' avec les numeros ' . implode('-', $grille) . ' a ' . count($comparaison) . ' gagnants sur le tirage ' .  implode('-', $tirage) . '<br/>';
    }
    C'est un peu plus simple que tes boucles tu vois.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 48
    Points
    48
    Par défaut
    Merci beaucoup.
    Sujet Résolue
    Bonne fin de semaine

  13. #13
    Futur Membre du Club Avatar de SARUTOBI HIRUZEN
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2017
    Messages : 5
    Points : 9
    Points
    9
    Par défaut plus d'explication
    j'ai aimer votre explication, sabotage, j'aimerai plus de détail concernant les tables que vous utilisez je ne vois que deux tables dans votre réponse et trois dans la requête sql

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est très vieux tout ça. Que veux-tu faire ?

  15. #15
    Futur Membre du Club Avatar de SARUTOBI HIRUZEN
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2017
    Messages : 5
    Points : 9
    Points
    9
    Par défaut
    je travail sur appli pour le lotto dans mon pays, je veux compter le nombre de numero gagnant pour un paris et modifier son statut si le nombre de numero gagnant correspond au nombre de numero pour etre déclarer gagnant dans sa categorie

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

Discussions similaires

  1. [Mail] verifier les champs pour éviter le mail vide
    Par temperature dans le forum Langage
    Réponses: 5
    Dernier message: 04/05/2006, 11h26
  2. [W3C] Nombre de caractère dans les formulaires
    Par oranoutan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/12/2005, 01h37
  3. incidence nombre de ligne sur les perfs
    Par pram dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/02/2005, 14h08
  4. PB sortie standard avec les PTHREAD !!!
    Par djspit dans le forum C++
    Réponses: 15
    Dernier message: 19/11/2004, 01h17
  5. [langage] vérifier les caractères d'une chaîne
    Par perlaud dans le forum Langage
    Réponses: 2
    Dernier message: 24/05/2004, 16h43

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