Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2368 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Comparaison de 5 chiffres ordre et désordre sur 8 autres chiffres

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Comparaison de 5 chiffres ordre et désordre sur 8 autres chiffres

n°2274874
Michel6359
Posté le 02-02-2016 à 11:46:38  profilanswer
 

Bonjour , Merci de prendre un peu de temps pour m'aider je suis bloqué depuis plusieurs jours.
Je suis occupé de faire un petit script pour un concours amical de pronostique quinté course hippique.
 
Je voudrai qu'il me trouve les combinaisons gagnante .
 
Exemple Arrivée : 1 2 3 4 5  
 
Mon pronostique : 1 7 2 9 3 8 4 5 ici nous avons les chiffres 1 2 3 4 5 qui sont dans l'ordre  
 
1 7 2 9 3 8 4 5
 
Comment je peux faire une requête pour trouver ceci  
 
Et également si mes 5 chiffres sont dans les 8 mais en désordre
 
Merci beaucoup

mood
Publicité
Posté le 02-02-2016 à 11:46:38  profilanswer
 

n°2274875
antac
..
Posté le 02-02-2016 à 11:58:44  profilanswer
 

Tu utilises quoi pour stocker les valeurs , base de données, tableau, chaîne ?

n°2274876
Michel6359
Posté le 02-02-2016 à 12:00:37  profilanswer
 

Bonjour et Merci  
J'utilise une base de données

n°2274877
Michel6359
Posté le 02-02-2016 à 12:05:39  profilanswer
 

Une précision  
 
J'ai 5 champs contenant l'arrivée donc 1 chiffre par champ  
Et pour le pronostique 8 champs contenant les 8 chiffres choisis
 
Par rapport a ça il faut que je détermine dans u  tableau , si j'ai 3 premier de l'arrivée en ordre sur les  8 ou désordre , idem pour les 4 premiers et 5 premiers.
 
Merci Beaucoup , je suis bloqué et pourtant pas faute d'avoir essayé .

n°2274880
MaybeEijOr​Not
but someone at least
Posté le 02-02-2016 à 12:39:08  profilanswer
 

Je n'y connais rien en courses hippiques mais normalement dans un quinté tu as un pronostique de 5 valeurs, un résultat de 8 (plus?) valeurs (classement final des 8 chevaux) dont on ne retient que les 5 premières, non?
Puis on compare les valeurs.
 
J'ai bien compris que le problème se situe ailleurs mais faudrait être sûr que je comprenne bien comment ça fonctionne avant de tenter de répondre. Parce que là en lisant je comprends qu'il y a un résultat avec 5 valeurs et un pronostique de 8.
 
Combien de chevaux au départ? Combien de chevaux dans le pronostique? (bon après le résultat c'est sur les 5 premiers, ça je pense que je suis ok)


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2274882
Michel6359
Posté le 02-02-2016 à 13:05:00  profilanswer
 

Merci  
Il y a entre 15 et 20 partants au départ de la course et les 3 premiers formeront le tiercé , les 4 premiers le quarté , et les 5 le quinté. Pour ce concours il nous faut faire les calculs des points si on trouve les 3 ou 4 ou 5 premiers de l'arrivée sur nos 8 chiffres choisis , les autres pas arrivée on  n'en  tiens pas compte.
 
Notre Pronostique ► 8 chiffres et oui comme tu le dis le résultat les 5 premiers.
 
Mais dans notre concours nous essayons de trouver une de ces combinaison en 8 chiffres , si nous trouvons ordre plus de points  
Exemple si nous trouvons :  
 
le tiercé ordre 100 points  et désordre 50 points  ( 3 premiers)
le quarté ordre 200 points et désordre 100 points  ( 4 premiers)
le quinté ordre ordre 500 points et désordre 250 points ( 5 premiers)
 
Exemple nous avons choisis  1  2  3  4  5  6  7  8  9   10
Arrivée  1  4  7  9  10  Nous avons ici le tiercé , quarté , quinté ordre = 800 points  Puisque nous avons dans notre sélection de 8 chiffres  le  1  4  7  9  10
 
Arrivée  1  4  7  12  14  Ici nous avons 3 chevaux parmi nos 8 chiffres , Nous n'avons que  le tiercé ordre  = 100 points , si nous aurions eu une arrivée  de  4  1  7  12  14  nous aurions le tiercé désordre = 50 points  
 
Voilà j'espère avoir été bon en t'expliquant , un grand merci , j'ai presque terminé il me reste que comment faire pour ces combinaison.
 
J'ai fais la même chose en excel et cela fonctionne , mais je désire le faire php pour une archive des quintés et plus convivial aussi. Ma page est terminé juste ça qui m'embête .
 
Un grand merci
 
 
 
 
 
 

n°2274887
MaybeEijOr​Not
but someone at least
Posté le 02-02-2016 à 13:57:15  profilanswer
 

Pour l'ordre c'est facile, tu récupères résultats et pronostiques dans des tableaux de taille 5 puis tu compares les valeurs une à une avec une boucle while.
À chaque tour de boucle tu incrémentes une variable si les valeurs sont égales jusqu'à temps que les valeurs soient différentes ou qu'il n'y ai plus de valeur à lire (soit 5 valeurs max).
À la fin si ta variable d'incrémentation est supérieure à 2 tu as au moins un tiercé dans l'ordre, si supérieur à 3 tu as un tiercé dans l'ordre et un quarté dans l'ordre et si elle est égale à 5 tu as un tiercé dans l'ordre, un quarté dans l'ordre et un quinté dans l'ordre.
 
Pour "dans le désordre", vu la taille des tableaux je ne m’emmerderai peut-être pas à optimiser en passant par des fonctions de tri.
Je prendrai le tableau des résultats et le parcourrai avec un "foreach", pour chaque valeur du tableau on vérifie si la valeur est égale à l'une du tableau des pronos (toujours faire attention à ne pas permuter de lettres :fou: ) à l'aide d'une boucle while et on incrémente une variable si on retrouve la valeur.
 
Un truc du genre (bon je n'ai pas fait de php depuis longtemps donc vérifier la syntaxe) :
 

Code :
  1. $i = 0;
  2. foreach($tab_res as $val) {
  3. $stop = 0;
  4. $j = 0;
  5. while($stop == 0 and $j<=count($tab_pronos) {
  6.  if($val == $tab_pronos[$j]) {
  7.   $i++;
  8.   $stop = 1;
  9.  }
  10.  $j++;
  11. }
  12. }


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2274888
Michel6359
Posté le 02-02-2016 à 14:01:11  profilanswer
 

Un grand merci je regarde ça  
Pas facile pour moi  
Je te tiens au courant MERCIIII

n°2274900
Michel6359
Posté le 02-02-2016 à 15:32:04  profilanswer
 

Je ne comprend pas je pense mieux comme ça  
 
Ma table arrivée du quinté : ► refquinte
 
les champs contenant les 5 chevaux de l'arrivée
 
tierce_1 int(11)  
tierce_2 int(11)    
tierce_3 int(11)  
quarte_4 int(11)
quinte_5 int(11)  
 
 
Ma table avec les pronostiques et noms  ► PARTICIPANTS
         
        Les champs
 
 Nom_Participant varchar(500) latin1_swedish_ci    
 
 Points                       int(11)  ici on ajoute les points obtenus pour le quinté de ce jour
 
tierce_ordre        int(11)  ici si on trouve la combinaison des 3 chevaux ordre on insère 1 sinon 0  qui logiquement par défaut 0
tierce_desordre        int(11)  ici si on trouve la combinaison des 3 chevaux désordre on insère 1 sinon 0  
Quarte_ordre           int(11)   ici si on trouve la combinaison des 4 chevaux ordre on insère 1 sinon 0  
Quarte_desordre      int(11)   ici si on trouve la combinaison des 4 chevaux désordre on insère 1 sinon 0  
Quinte_ordre           int(11)   ici si on trouve la combinaison des 5 chevaux ordre on insère 1 sinon 0  
Quinte_desordre      int(11)   ici si on trouve la combinaison des 5 chevaux désordre on insère 1 sinon 0  
 
Et je voudrais que le calcul ce fais ligne par ligne  
inclus dans le while après la requête  
 
On fait la requête que est censé afficher les données du tableau et fais qu'il affiche , il calcul les points insère dans le champ points et insère 1 si résultat ok et cela pour les 6 champs  ci dessous
 
tierce_1 int(11)    
tierce_2 int(11)      
tierce_3 int(11)    
quarte_4 int(11)  
quinte_5 int(11)  
 
 
 
Donc Requête  
While
Paramètre de calcul  
et affichage du tableaux  
 
Voilà tu penses que tu peux voir ça
 

n°2274905
MaybeEijOr​Not
but someone at least
Posté le 02-02-2016 à 16:05:36  profilanswer
 

Je n'ai pas bien compris, ce que je te propose travail déjà en ligne puisqu'on compare les pronos aux résultats.
Tu calcules en sortie de boucles les tiercé, quarté, quinté ordre et désordre en fonction de la valeur de tes variables d'incrémentation. Tu mets à jour la ligne de la bdd qui correspond au participant puis tu passes au suivant.
 
Mais bon déjà je travaillerai sur 4 tables :
- résultats_course : id_tirage, tierce_1, tierce_2, etc.
- pronos : id_tirage, id_participant, cheval_1, cheval_2, etc.
- résultats_pronos : tierce_ordre, tierce_desordre, quarte_ordre, etc.
- participants : id_participant, nom, total_points
 
C'est plus clair et plus maniable.


Message édité par MaybeEijOrNot le 02-02-2016 à 16:21:57

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
mood
Publicité
Posté le 02-02-2016 à 16:05:36  profilanswer
 

n°2274933
Michel6359
Posté le 02-02-2016 à 23:22:35  profilanswer
 

Bonsoir  
 
J'ai fais ce petit code mais je ne vois comment faire ce que tu m'as proposé .
 

Code :
  1. <?php
  2. #########################################
  3. # CONNEXION AU SERVEUR BASES DE DONNEES #
  4. #########################################
  5. $REFERENCE_QUINTE='02022016';
  6. // RESULTAT QUINTE //
  7. $C1='3';
  8. $C2='4';
  9. $C3='5';
  10. $C4='8';
  11. $C5='13';
  12. mysql_connect("127.0.0.1", "***", "*****" );
  13. mysql_select_db("michelte_pmu" );
  14. $pronos = "SELECT *, DATE_FORMAT(date_prono, '%Hh:%i' ) AS 'date_enregistrement' FROM Prono_Turf WHERE REFERENCE_QUINTE ='$REFERENCE_QUINTE' ORDER BY PARTICIPANT";
  15. $reponse = mysql_query($pronos) or die (mysql_error());
  16. // SIMULATION ARRIVEE DU QUINTE POUR VOIS SI CELA FONCTIONNE //
  17. $RESULTAT_QUINTE = 'a voir';
  18. //////////////////////////////////////////////////////////////
  19. while ($datas = mysql_fetch_assoc($reponse))
  20. {
  21. ?>
  22. <tbody>
  23. <tr>
  24. <td><div align="center"><strong><?php echo ''.$datas['date_enregistrement'].'';?></strong></div></td>
  25. <td><div align="center"><?php echo ''.$datas['PARTICIPANT'].'';?></div></td>
  26. <td><div align="center"><?php echo ''.$datas['CH1'].'';?></div></td>
  27. <td><div align="center"><?php echo ''.$datas['CH2'].'';?></div></td>
  28. <td><div align="center"><?php echo ''.$datas['CH3'].'';?></div></td>
  29. <td><div align="center"><?php echo ''.$datas['CH4'].'';?></div></td>
  30. <td><div align="center"><?php echo ''.$datas['CH5'].'';?></div></td>
  31. <td><div align="center"><?php echo ''.$datas['CH6'].'';?></div></td>
  32. <td><div align="center"><?php echo ''.$datas['CH7'].'';?></div></td>
  33. <td><div align="center"><?php echo ''.$datas['CH8'].'';?></div></td>
  34. <td><div align="center"><?php echo ''.$datas['REGRET'].'';?></div></td>
  35. <td><div align="center"><?php echo ''.$Total_points.'';?></div></td>
  36. </tr>
  37. </tbody>
  38. <?php } ?>
  39. </table>


 
Merci pour ton aide

n°2274937
Michel6359
Posté le 03-02-2016 à 10:04:38  profilanswer
 

Bonjour peut-tu voir pour les variables je ne vois a quoi elle correspond et comment il comptabilise si un résultat, j'ai mis ci-dessus le fichier cela sera plus clair pour comprendre. Un grand merci !

n°2274990
MaybeEijOr​Not
but someone at least
Posté le 03-02-2016 à 19:23:39  profilanswer
 

Bonjour,
 
Je reprends mon petit morceau de code d'hier, avec une petite correction (totalement optionnelle mais peut-être plus intuitive) et des commentaires pour que ce soit plus clair :
 

Code :
  1. <?php
  2. $i = 0; //variable d'incrémentation
  3. foreach($tab_res as $val) { //on a mis les résultats dans un tableau de taille 5 ($tab_res), on parcourt-donc chaque index du tableau en stockant la valeur dans $val
  4. $stop = 0; //condition de fin de boucle while
  5. $j = 0; //variable d'incrémentation, servant à définir l'index auquel on s'intéresse dans le tableau des pronos
  6. while($stop == 0 and $j<=count($tab_pronos) { //on a mis les pronos du participant dans un tableau de taille 8 ($tab_pronos, on parcourt chaque index (référé par $j) du tableau jusqu'à temps qu'on arrive à la fin du tableau ou qu'on ai dit de stopper
  7.  if($val == $tab_pronos[$j]) { //on compare la valeur $val de l'index en court du tableau de résultats à la valeur de l'index $j du tableau de pronos
  8.   $i++; //donc si les valeurs sont égales c'est qu'on a bien pronostiqué un cheval, on incrémente la variable $i de 1
  9.   $stop = 1; //puisqu'on a trouvé que le cheval en court du tableau de résultats était dans le tableau de pronostiques on arrête de le chercher, pas la peine de parcourir le tableau de pronostiques jusqu'au bout
  10.  } else {
  11.   $j++; //si on n'a rien trouvé on passe au cheval suivant dans le tableau des pronostiques en incrémentant la variable $j de 1
  12.  }
  13. }
  14. }
  15. ?>


 
Donc $j pourra prendre 8 valeurs : 0, 1, 2, 3, 4, 5, 6, 7 qui permettent de parcourir les 8 index du tableau des pronos
Pour le tableau des résultats, on le parcourt en entier dans tous les cas donc on utilise une méthode (For Each) qui permet de parcourir chaque index du tableau sans avoir à le préciser, à chaque pas de boucle l'index est implicite et avance tout seul.
 
Ce bout de code permet de regarder si le premier cheval arrivé en fin de course (correspond au premier index du tableau des résultats) est dans le tableau des pronos puis si le second y est, puis le troisième, etc. jusqu'au 5ème.
Quand on trouve qu'un cheval est aussi bien dans le tableau des résultats que dans le tableau des pronos on ajoute 1 à la variable $i.
Ainsi si on trouve 1 cheval, $i vaudra 1, si on n'en trouve 2, $i vaudra 2, etc. On détermine ainsi le nombre de chevaux trouvés dans le désordre puis après tu attribues les points désirés en fonction du résultat de $i, par exemple :
 

Code :
  1. <?php
  2. $total_points = 0; //on initialise le compteur de points du participant à 0
  3. switch($i) {
  4. case 0:
  5.  $total_points += 0; // si $i vaut 0 il a trouvé 0 cheval donc on ajoute 0 point à son compteur
  6.  $break;
  7. case 1:
  8.  $total_points += 0; // si $i vaut 1 il a trouvé 1 cheval donc on ajoute 0 point à son compteur
  9.  $break;
  10. case 2:
  11.  $total_points += 0; // si $i vaut 2 il a trouvé 2 chevaux donc on ajoute 0 point à son compteur
  12.  $break;
  13. case 3:
  14.  $total_points += 50; // si $i vaut 3 il a trouvé 3 chevaux donc on ajoute 50 points à son compteur
  15.  $break;
  16. case 4:
  17.  $total_points += 100; // si $i vaut 4 il a trouvé 4 chevaux donc on ajoute 100 points à son compteur
  18.  $break;
  19. case 5:
  20.  $total_points += 250; // si $i vaut 5 il a trouvé 5 chevaux donc on ajoute 250 points à son compteur
  21.  $break;
  22. }
  23. ?>


 
Donc ça c'est le cas le plus compliqué en fait puisqu'on regarde dans le désordre.
Pour regarder dans l'ordre il suffit de parcourir le tableau des résultats et de regarder si la valeur de l'index en cours du tableau de résultats est la même que celle du même index dans le tableau des pronos, si c'est le cas on incrémente une variable. On stoppe la boucle dès qu'il y a une différence ou qu'on arrive à la fin du tableau des résultats. À la fin on regarde combien vaut la variable d'incrémentation et on attribue des points en fonction de sa valeur.
 
Donc pour commencer tu dois placer tes résultats dans un tableau et de même pour les pronos :
 

Code :
  1. <?php
  2. $tab_res = [$C1, $C2, $C3, $C4, $C4];
  3. /* connexion à la bdd, récupération des pronos d'un participant */
  4. $tab_pronos = [$datas['CH1'], $datas['CH2'], etc]; //bien vérifier que tu récupères des nombres et non des chaines de caractères
  5. /* vérification si tierce, quarte, quinte ordre */
  6. /* calcules des points */
  7. /* vérification si tierce, quarte, quinte désordre */
  8. /* calcules des points */
  9. /* on met à jour la bdd au besoin */
  10. /* on passe au participant suivant */
  11. ?>


 
C'est plus clair?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2274993
Michel6359
Posté le 03-02-2016 à 20:01:15  profilanswer
 

Bonsoir  
Bon décidément je suis nul  
 
Tes 3 codes sont a insérer de mon tableau  
while ($datas = mysql_fetch_assoc($reponse))
{
 
ICI DONC ?
?>
 
Et a quoi corresponde les variables ► $tab_res as $val, car ce n'est pas les variables de mon tableau qui affiche les données ?
 
Et je dois faire 2 tableaux selon donc derniers message ?  
 
Je suis embêtant mais ici c compliqué pour moi donc je cherche a comprendre , désolé.
Et mon fichier par message privée pour insérer ton code , pour que je vois plus clair ?
 
Merci

n°2274994
MaybeEijOr​Not
but someone at least
Posté le 03-02-2016 à 20:20:37  profilanswer
 

MaybeEijOrNot a écrit :

Donc pour commencer tu dois placer tes résultats dans un tableau et de même pour les pronos :
 

Code :
  1. <?php
  2. $tab_res = [$C1, $C2, $C3, $C4, $C4];
  3. /* connexion à la bdd, récupération des pronos d'un participant */
  4. $tab_pronos = [$datas['CH1'], $datas['CH2'], etc]; //bien vérifier que tu récupères des nombres et non des chaines de caractères
  5. /* vérification si tierce, quarte, quinte ordre */
  6. /* calcules des points */
  7. /* vérification si tierce, quarte, quinte désordre */
  8. /* calcules des points */
  9. /* on met à jour la bdd au besoin */
  10. /* on passe au participant suivant */
  11. ?>


 
C'est plus clair?


 
Cette partie-là du message parle de la chronologie à adopter, après tu peux ajouter un affichage HTML avant "/* on met à jour la bdd au besoin */" si tu souhaites. Je ne peux pas adapter exactement à ton code car il me manque des éléments au niveau de ta bdd pour tout comprendre. Mais de toute façon ce n'est pas le but de ce forum d'écrire le code à la place de la personne, et je ne souhaite pas le faire.
De plus je n'ai pas de serveur installé actuellement pour tester quelconque code donc difficile de voir si je fais une erreur quelque part.
 
$tab_res est une variable servant à stocker les numéros dans l'ordre des 5 premiers arrivés en fin de course.
$val est une variable qui retourne la valeur du tableau à l'index en cours.
 
ex :
 

Code :
  1. $tab_res = [4, 18, 12, 7, 2];
  2. foreach($tab_res as $val) {
  3. echo '['.$val.']';
  4. }


 
Ce code affichera :
[4][18][12][7][2]
 
foreach(tableau, valeur_temp), comme son nom l'indique, veut dire :

Code :
  1. Pour chaque valeur du tableau on fait :
  2.      on met la valeur dans valeur_temp
  3.      on exécute du code
  4.      on passe à la valeur suivante



---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2274995
Michel6359
Posté le 03-02-2016 à 20:36:14  profilanswer
 

Merci
 
 
Regarde le tableau de gauche ► Vos Pronostiques et les points obtenus
 
Si j'ai compris dans ce tableau je dois ajouter 5 colonnes correspondant au résultat du quinté , insérer les résultats de  la variables  $val  , dans Points
 
http://www.michel-techet.com/PMU/Quintedujour.php

n°2274996
MaybeEijOr​Not
but someone at least
Posté le 03-02-2016 à 20:45:09  profilanswer
 

Du côté HTML tu fais ce que tu veux, tu n'es pas obligé d'ajouter les colones pour afficher le résultat du quinté même si je pense que ça apporte de la clarté.
Mais du côté php tu es obligé de récupérer le résultat du quinté pour pouvoir calculer les points, et le plus simple pour faire la comparaison résultats-pronos c'est de stocker les résultats dans un tableau php.


Message édité par MaybeEijOrNot le 03-02-2016 à 20:45:28

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2275005
Michel6359
Posté le 03-02-2016 à 22:08:48  profilanswer
 

RE

 

Est ce que c bien placé ? pour trouver ordre déjà ?
J'ai une erreur a ► $tab_res = $C1, $C2, $C3, $C4, $C4);     et ► while($stop == 0 and $j<=count($tab_pronos)
Je comprend pas 2 fois while

 
Code :
  1. <?php
  2. #########################################
  3. # CONNEXION AU SERVEUR BASES DE DONNEES #
  4. #########################################
  5. $REFERENCE_QUINTE ='02022016';
  6. mysql_connect("127.0.0.1", "", "" );
  7. $pronos = "SELECT *, DATE_FORMAT(date_prono, '%Hh:%i' ) AS 'date_enregistrement' FROM Prono_Turf WHERE REFERENCE_QUINTE ='$REFERENCE_QUINTE' ORDER BY PARTICIPANT";
  8. $reponse = mysql_query($pronos) or die (mysql_error());
  9. $arrivees = array(13,8,15,5,13);
  10. while ($datas = mysql_fetch_assoc($reponse))
  11. {
  12. ?>
  13. <?php
  14. $i = 0; //variable d'incrémentation
  15. foreach($tab_res as $val) { //on a mis les résultats dans un tableau de taille 5 ($tab_res), on parcourt-donc chaque index du tableau en stockant la valeur dans $val
  16. $stop = 0; //condition de fin de boucle while
  17. $j = 0; //variable d'incrémentation, servant à définir l'index auquel on s'intéresse dans le tableau des pronos
  18. while($stop == 0 and $j<=count($tab_pronos) { //on a mis les pronos du participant dans un tableau de taille 8 ($tab_pronos, on parcourt chaque index (référé par $j) du tableau jusqu'à temps qu'on arrive à la fin du tableau ou qu'on ai dit de stopper
  19. if($val == $tab_pronos[$j]) { //on compare la valeur $val de l'index en court du tableau de résultats à la valeur de l'index $j du tableau de pronos
  20.  $i++; //donc si les valeurs sont égales c'est qu'on a bien pronostiqué un cheval, on incrémente la variable $i de 1
  21.  $stop = 1; //puisqu'on a trouvé que le cheval en court du tableau de résultats était dans le tableau de pronostiques on arrête de le chercher, pas la peine de parcourir le tableau de pronostiques jusqu'au bout
  22. } else {
  23.  $j++; //si on n'a rien trouvé on passe au cheval suivant dans le tableau des pronostiques en incrémentant la variable $j de 1
  24. }
  25. }
  26. }
  27. ?>
  28. <?php
  29. $tab_rs = [$C1, $C2, $C3, $C4, $C4];
  30. $pronostique = array($datas['CH1'],$datas['CH2'],$datas['CH3'],$datas['CH4'],$datas['CH5'],$datas['CH6'],$datas['CH7'],$datas['CH8']);
  31. ?>
  32. <?php
  33. $total_points = 0; //on initialise le compteur de points du participant à 0
  34. switch($i) {
  35. case 0:
  36. $total_points += 0; // si $i vaut 0 il a trouvé 0 cheval donc on ajoute 0 point à son compteur
  37. $break;
  38. case 1:
  39. $total_points += 0; // si $i vaut 1 il a trouvé 1 cheval donc on ajoute 0 point à son compteur
  40. $break;
  41. case 2:
  42. $total_points += 0; // si $i vaut 2 il a trouvé 2 chevaux donc on ajoute 0 point à son compteur
  43. $break;
  44. case 3:
  45. $total_points += 50; // si $i vaut 3 il a trouvé 3 chevaux donc on ajoute 50 points à son compteur
  46. $break;
  47. case 4:
  48. $total_points += 100; // si $i vaut 4 il a trouvé 4 chevaux donc on ajoute 100 points à son compteur
  49. $break;
  50. case 5:
  51. $total_points += 250; // si $i vaut 5 il a trouvé 5 chevaux donc on ajoute 250 points à son compteur
  52. $break;
  53. }
  54. ?>
  55. <tbody>
  56. <tr>
  57. <td><div align="center"><strong><?php echo ''.$datas['date_enregistrement'].'';?></strong></div></td>
  58. <td><div align="center"><?php echo ''.$datas['PARTICIPANT'].'';?></div></td>
  59. <td><div align="center"><?php echo ''.$datas['CH1'].'';?></div></td>
  60. <td><div align="center"><?php echo ''.$datas['CH2'].'';?></div></td>
  61. <td><div align="center"><?php echo ''.$datas['CH3'].'';?></div></td>
  62. <td><div align="center"><?php echo ''.$datas['CH4'].'';?></div></td>
  63. <td><div align="center"><?php echo ''.$datas['CH5'].'';?></div></td>
  64. <td><div align="center"><?php echo ''.$datas['CH6'].'';?></div></td>
  65. <td><div align="center"><?php echo ''.$datas['CH7'].'';?></div></td>
  66. <td><div align="center"><?php echo ''.$datas['CH8'].'';?></div></td>
  67. <td><div align="center"><?php echo ''.$datas['REGRET'].'';?></div></td>
  68. <td><div align="center"><?php echo ''.$total_points.'';?></div></td>
  69. </tr>
  70. </tbody>
  71. <?php  } ?>
  72. </table>


Message édité par Michel6359 le 07-02-2016 à 22:00:17
n°2275007
MaybeEijOr​Not
but someone at least
Posté le 03-02-2016 à 22:45:34  profilanswer
 

Tu es complètement perdu je crois, mais je ne vais pas pouvoir t'apprendre le php, il y a plein de tutos sur le net pour ça. Je peux t'aider mais si tu ne comprends pas ce que je dis ou fais ça va être compliqué.

 

Je reprends la chronologie.

 

1- Tu dois récupérer l'arrivée des chevaux (mais bon là par exemple je ne sais pas si c'est dans ta base de données ou à travers un formulaire donc je ne sais pas si tu dois déjà te connecter à ta bdd)
2- Tu stockes les numéros des chevaux de l'arrivée dans un tableau, chez moi c'était $tab_res, j'avais écrit $tab_res = [$C1, $C2, $C3, $C4, $C4]; (et c'est bien des crochets et non des parenthèses) parce que tu avais mis à un moment dans ton code :

Code :
  1. // RESULTAT QUINTE //
  2. $C1='3';
  3. $C2='4';
  4. $C3='5';
  5. $C4='8';
  6. $C5='13';
 

3- tu te connectes à ta bdd (si ce n'est pas déjà fait)
4- tu récupères les pronostiques du participant ainsi que son nom donc là c'était bien :

Code :
  1. $pronostique = array($datas['CH1'],$datas['CH2'],$datas['CH3'],$datas['CH4'],$datas['CH5'],$datas['CH6'],$datas['CH7'],$datas['CH8']);
 

5- tu compares les résultats aux pronostiques (c'est là qu'interviennent mes boucles), évidemment en fonction des noms de variables que tu utilises il faut adapter les noms de variables dans mes boucles
6- tu calcules les points
7- tu gères l'affichage html
8- tu mets à jour la bdd si par exemple tu souhaites garder les pts dans ta bdd
9- tu passes au participant suivant (soit le résultat suivant de ta requête sql)

  

Mais bon tu ne t'en sortiras pas sans apprendre le php...

 

Dans le code que tu viens de me donner :
- ligne 11 : bon ok on s'en tape des résultats c'est juste pour tester mais essaye de faire quand même quelque chose qui a du sens, tu ne peux pas avoir 2 fois le cheval 13.
- ligne 14 et 15 : ça sert à rien de fermer la balise php pour la rouvrir juste après
- ligne 17 : $tab_res n'existe pas encore
- ligne 20 et 21 : $tab_pronos n'existe pas encore
- ligne 29 et 30 : ça sert à rien de fermer la balise php pour la rouvrir juste après
- ligne 31 : $tab_rs ne sera jamais utilisé écrit comme ça, nous on voulait $tab_res mais de toute façon fallait initialiser cette variable avant de l'utiliser... (cf. ligne 17)
- ligne 32 : $pronostiques ne sera jamais utilisé écrit comme ça, nous on voulait $tab_pronos mais de toute façon fallait initialiser cette variable avant de l'utiliser... (cf. ligne 20 et 21)


Message édité par MaybeEijOrNot le 03-02-2016 à 22:47:10

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2275011
Michel6359
Posté le 03-02-2016 à 23:11:11  profilanswer
 

Une dernière question avant de dormir car demain le boulot , j'en ai  plein la tête.
Je vais reprendre tout correctement , et je posterai fur a mesure si je suis bon.
 
Je ne dois pas avoir 2 ►  while ► je dois voir 1 seul avec mes variables
c les variables qui m' embrouille ce n'est les même que ceux de ma requête comme $datas ou $stop
 
Merci pour tout bonne nuit

n°2275039
MaybeEijOr​Not
but someone at least
Posté le 04-02-2016 à 19:53:34  profilanswer
 

Niveau variables ça va, j'en ai utilisé 7, dont 3 qui auraient déjà dû exister chez toi :
- $tab_res : variable stockant l'ordre d'arrivée des chevaux
- $tab_pronos : variable stockant les chevaux pronostiqués par le participant
- $total_points : nombre de points gagnés par le participant

 

et 4 nouvelles :
- $i : variable qui stocke le nombre de chevaux trouvés par le participant
- $j : variable d'incrémentation pour parcourir les tableaux
- $stop : variable servant à stocker un statut booléen (2 valeurs possibles : 0 ou 1) pour sortir précocement d'une boucle
- $val : variable stockant temporairement la valeur du tableau $tab_res à l'index en cours

 


Au niveau des boucles tu as 3 imbrications au max :

 
Code :
  1. while($datas = mysql_fetch_assoc($reponse)) { //on parcourt les différents participants/pronostiques
  2.      ... //récupération des pronostiques du participant en cours
  3.      foreach($tab_res as $val) { //on parcourt les chevaux du résultat de l'arrivée
  4.           ...
  5.           while($stop == 0 and $j<=count($tab_pronos) { //on parcourt les chevaux du pronostique du participant
  6.                ...
  7.           }
  8.      }
  9.      ... //calcule des points pour le désordre
  10.      foreach($tab_res as $val) { //on parcourt les chevaux du résultat de l'arrivée
  11.           ... //on compare dans l'ordre les chevaux arrivée/pronostique
  12.      }
  13.      ... //calcule des points pour l'ordre
  14.      ... //affichage HTML d'un récap'
  15. }
 

Boucle niveau 1 : ligne 1
Boucle niveau 2 : ligne 3 et 10
Boucle niveau 3 : ligne 5


Message édité par MaybeEijOrNot le 04-02-2016 à 19:54:59

---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2275040
Michel6359
Posté le 04-02-2016 à 20:15:48  profilanswer
 

Bonsoir  
Merci , je vois que tu as encore  du courage pour continuer a m'aider ,super.
Je vais voir tout ça tranquillement sans m'énervé et reviendrai vers toi si un soucis , mais tu as très bien expliqué en plus tu as utilisé mes variables pour que je ne sois pas trop perdu , Merci

n°2275072
Michel6359
Posté le 05-02-2016 à 15:25:23  profilanswer
 

Bonjour
Je confirme j'ai bien l'erreur ►

Code :
  1. $tab_res = [$C1, $C2, $C3, $C4, $C5];
 
Code :
  1. <?php
  2. #########################################
  3. # CONNEXION AU SERVEUR BASES DE DONNEES #
  4. #########################################
  5. $REFERENCE_QUINTE ='QT04022016';
  6. $C1 ='7';$C1 ='14';$C1 ='15';$C1 ='8';$C1 ='13';            ◄ ICI SEULEMENT POUR LES TESTS SIMULATION ARRIVEE APRES CELA UNE CONNEXION VERS  BASE ARRIVEE
  7. mysql_connect("127.0.0.1", "*", "*" );
  8. $pronos = "SELECT *, DATE_FORMAT(date_prono, '%d/%m/%Y à %Hh:%i.' ) AS 'date_enregistrement' FROM Prono_Turf WHERE REFERENCE_QUINTE ='$REFERENCE_QUINTE' ORDER BY PARTICIPANT";
  9. $reponse = mysql_query($pronos) or die (mysql_error());
  10. $tab_res = [$C1, $C2, $C3, $C4, $C5];                                              ► ERREUR
  11. $tab_res = [4, 18, 12, 7, 2];                                                             ► Essayé ça mais aussi erreur sans celui avec les variables
  12. //if($reponse ==NULL){echo 'Aucun pronostique posté ce jour !';}
  13. ?>
 

Bonne journée je vais  continuer l'affichage  le temps que tu me dise quoi.


Message édité par Michel6359 le 07-02-2016 à 22:00:33
n°2275083
MaybeEijOr​Not
but someone at least
Posté le 05-02-2016 à 18:03:56  profilanswer
 

Quel est le message d'erreur exactement? o_O
 
Sinon tu peux le déclarer de manière non raccourcie :
 

Code :
  1. $tab_res = array($C1, $C2, $C3, $C4, $C5);


 
Si ça règle le problème c'est que tu utilises une vieille version php. (n'oublie de virer la ligne 12)


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2275103
Michel6359
Posté le 06-02-2016 à 10:03:05  profilanswer
 

Bonjour et merci
oui cette solution fonctionne , impec , sa avance

 

étape suivante : Il y deux erreurs indiqué sur la ligne 41 et 55. Je sais pas mal fermé While ?

 

Une question tu as TeamViewer sa serait plus facile , enfin comme tu veux.

 
Code :
  1. <?php
  2. #########################################
  3. # CONNEXION AU SERVEUR BASES DE DONNEES #
  4. #########################################
  5. $REFERENCE_QUINTE ='QT04022016';
  6. $C1 ='7';$C1 ='14';$C1 ='15';$C1 ='8';$C1 ='13';
  7. mysql_connect("127.0.0.1", "*", "*" );
  8. $pronos = "SELECT *, DATE_FORMAT(date_prono, '%d/%m/%Y à %Hh:%i.' ) AS 'date_enregistrement' FROM Prono_Turf WHERE REFERENCE_QUINTE ='$REFERENCE_QUINTE' ORDER BY PARTICIPANT";
  9. $reponse = mysql_query($pronos) or die (mysql_error());
  10. $tab_res = array($C1, $C2, $C3, $C4, $C5);
  11. //if($reponse ==NULL){echo 'Aucun pronostique posté ce jour !';} JE VERRAI SA APRES
  12. ?>
  13. <div class="box clearfix">       
  14. <p><button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Saisie de votre Pronostique</button>
  15. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="label label-danger"> <i class="glyphicon glyphicon-minus-sign"></i>&nbsp;&nbsp;Course ferm&eacute;e , Saisie du Pronostiques impossible </span></p>
  16. <table border="1" align="center" class="table table-hover" id="bootstrap-table">
  17. <thead>
  18.                <tr>
  19.                   <th width="20%" bgcolor="#66CCFF">Date</th>
  20.                   <th width="25%" bgcolor="#66CCFF">Participant</th>
  21.                   <th width="4%" bgcolor="#FFFFFF">CH1</th>
  22.                   <th width="4%" bgcolor="#CCCCCC">CH2</th>
  23.                   <th width="4%" bgcolor="#CCCCCC">CH3</th>
  24.                   <th width="4%" bgcolor="#CCCCCC">CH4</th>
  25.                   <th width="4%" bgcolor="#CCCCCC">CH5</th>
  26.                   <th width="4%" bgcolor="#CCCCCC">CH6</th>
  27.                   <th width="4%" bgcolor="#CCCCCC">CH7</th>
  28.                   <th width="4%" bgcolor="#CCCCCC">CH8</th>
  29.                   <th width="4%" bgcolor="#FFB9B9">REGRET</th>
  30.                   <th width="10%">POINTS</th>
  31.               </tr>
  32. </thead>
  33. <?php ###### REQUETE AFFICHAGE DES PRONOSTIQUE #####
  34.      while($datas = mysql_fetch_assoc($reponse)) { //on parcourt les différents participants/pronostiques
  35.      //récupération des pronostiques du participant en cours
  36.      $tab_pronos = array($datas['CH1'],$datas['CH2'],$datas['CH3'],$datas['CH4'],$datas['CH5'],$datas['CH6'],$datas['CH7'],$datas['CH8']);
  37.  foreach($tab_res as $val) { //on parcourt les chevaux du résultat de l'arrivée
  38.      //... c BON ILS SONT DEJA DANS LA VARIABLE $tab_res
  39.      while($stop == 0 and $j<=count($tab_pronos) { //on parcourt les chevaux du pronostique du participant
  40.    
  41.  // CI DESSUS LA VARIABLE CONTENANT LES CHEVAUX DU PRONOSTIQUE D'UNE LIGNE   
  42.      } // ► ICI ON FERME ► while($stop == 0 and $j<=count($tab_pronos) {
  43.      }  //► ICI ON FERME ► foreach($tab_res as $val) {
  44.    
  45.  //... //calcule des points pour le désordre
  46.      //on parcourt les chevaux du résultat de l'arrivée
  47.    
  48.  //on compare dans l'ordre les chevaux arrivée/pronostique
  49.  $i = 0; //variable d'incrémentation
  50.      foreach($tab_res as $val) { //on a mis les résultats dans un tableau de taille 5 ($tab_res), on parcourt-donc chaque index du tableau en stockant la valeur dans $val
  51.      $stop = 0; //condition de fin de boucle while
  52.      $j = 0; //variable d'incrémentation, servant à définir l'index auquel on s'intéresse dans le tableau des pronos
  53.      while($stop == 0 and $j<=count($tab_pronos) { //on a mis les pronos du participant dans un tableau de taille 8 ($tab_pronos, on parcourt chaque index (référé par $j) du tableau jusqu'à temps qu'on arrive à la fin du tableau ou qu'on ai dit de stopper
  54.      if($val == $tab_pronos[$j]) { //on compare la valeur $val de l'index en court du tableau de résultats à la valeur de l'index $j du tableau de pronos
  55.     $i++; //donc si les valeurs sont égales c'est qu'on a bien pronostiqué un cheval, on incrémente la variable $i de 1
  56.   $stop = 1; //puisqu'on a trouvé que le cheval en court du tableau de résultats était dans le tableau de pronostiques on arrête de le chercher, pas la peine de parcourir le tableau de pronostiques jusqu'au bout
  57.      } else {
  58.  $j++; //si on n'a rien trouvé on passe au cheval suivant dans le tableau des pronostiques en incrémentant la variable $j de 1
  59.     }
  60.     }   // ► ICI ON FERME ► while($stop == 0 and $j<=count($tab_pronos) {
  61.     } // ► ICI ON FERME ► foreach($tab_res as $val) {
  62.      // }  // ► ICI JE NE VOIS PAS  POURQUOI DEJA FERMER PLUS BAS APRES AFFICHAGE
  63.      //... //calcule des points pour l'ordre
  64.  $total_points = 0; //on initialise le compteur de points du participant à 0
  65.      switch($i) {
  66.      case 0:
  67.      $total_points += 0; // si $i vaut 0 il a trouvé 0 cheval donc on ajoute 0 point à son compteur
  68.      $break;
  69.      case 1:
  70.      $total_points += 0; // si $i vaut 1 il a trouvé 1 cheval donc on ajoute 0 point à son compteur
  71.      $break;
  72.      case 2:
  73.      $total_points += 0; // si $i vaut 2 il a trouvé 2 chevaux donc on ajoute 0 point à son compteur
  74.      $break;
  75.      case 3:
  76.      $total_points += 50; // si $i vaut 3 il a trouvé 3 chevaux donc on ajoute 50 points à son compteur
  77.      $break;
  78.      case 4:
  79.      $total_points += 100; // si $i vaut 4 il a trouvé 4 chevaux donc on ajoute 100 points à son compteur
  80.      $break;
  81.      case 5:
  82.      $total_points += 250; // si $i vaut 5 il a trouvé 5 chevaux donc on ajoute 250 points à son compteur
  83.      $break;
  84.      }
  85.      //... //affichage HTML d'un récap'
  86. ?>           
  87. <tbody>
  88. <tr>
  89.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['date_enregistrement'].'';?></td>
  90.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['PARTICIPANT'].'';?></td>
  91.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH1'].'';?></td>
  92.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH2'].'';?></td>
  93.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH3'].'';?></td>
  94.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH4'].'';?></td>
  95.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH5'].'';?></td>
  96.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH6'].'';?></td>
  97.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH7'].'';?></td>
  98.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH8'].'';?></td>
  99.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['REGRET'].'';?></td>
  100.                   <td bgcolor="#FFFFFF"><?php echo ''.$total_points.'';?></td>
  101. </tr>
  102. </tbody>
  103. <?php } ?>
  104. </table>


Message édité par Michel6359 le 07-02-2016 à 22:00:53
n°2275113
Michel6359
Posté le 06-02-2016 à 15:01:18  profilanswer
 

J'ai vu l'erreur il manquait une   )

n°2275114
MaybeEijOr​Not
but someone at least
Posté le 06-02-2016 à 15:03:51  profilanswer
 

Je ne comprends rien à ce que tu fais. :pt1cable:  
 
Ligne 41 : erreur générée parce que tu utilises la variable $j sans l'avoir déclarée.
Ligne 41 : erreur de syntaxe, j'ai oublié une parenthèse fermante.
Ligne 55 : erreur de syntaxe, j'ai oublié une parenthèse fermante.
 
Au passage tu as des réponses ici : http://www.developpez.net/forums/d [...] ost8512413
 
Je ne connaissais pas ces 2 méthodes, elles sont largement plus simples puisque tu peux te passer des boucles :
 

Code :
  1. $ordre = count(array_intersect_assoc($tab_res, $tab_pronos));
  2. $desordre = count(array_intersect($tab_res, $tab_pronos));


 
En deux lignes c'est fait, dans $ordre tu as le nombre de chevaux trouvés dans l'ordre et dans $desordre le nombre de chevaux trouvés dans le désordre.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2275117
Michel6359
Posté le 06-02-2016 à 15:40:50  profilanswer
 

Bonjour  
Je n'ai pas eu de notification du site pour les réponses , bizarre
 
Cela me retourne ORDRE ET DESORDRE  MAIS PAS LE TIERCE  QUARTE QUINTE COMMENT FAIRE  
 
TU AS PETE UN  CABLE TU DIS ? LOL
 
Regarde ► [url] http://www.michel-techet.com/PMU/T [...] oints2.php [/url]
 

Code :
  1. <?php
  2. <?php
  3. #########################################
  4. # CONNEXION AU SERVEUR BASES DE DONNEES #
  5. #########################################
  6. $REFERENCE_QUINTE ='QT04022016';
  7. $C1 ='7';$C2 ='14';$C3 ='15';$C4 ='8';$C5 ='13';
  8. $pronos = "SELECT *, DATE_FORMAT(date_prono, '%d/%m/%Y à %Hh:%i.' ) AS 'date_enregistrement' FROM Prono_Turf WHERE REFERENCE_QUINTE ='$REFERENCE_QUINTE' ORDER BY PARTICIPANT";
  9. $reponse = mysql_query($pronos) or die (mysql_error());
  10. $tab_res = array($C1, $C2, $C3, $C4, $C5);
  11. //if($reponse ==NULL){echo 'Aucun pronostique posté ce jour !';} JE VERRAI SA APRES
  12. ?>
  13. <div class="box clearfix">       
  14. <p><button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Saisie de votre Pronostique</button>
  15. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="label label-danger"> <i class="glyphicon glyphicon-minus-sign"></i>&nbsp;&nbsp;Course ferm&eacute;e , Saisie du Pronostiques impossible </span></p>
  16. <table border="1" align="center" class="table table-hover" id="bootstrap-table">
  17. <thead>
  18.                <tr>
  19.                   <th width="20%" bgcolor="#66CCFF">Date</th>
  20.                   <th width="25%" bgcolor="#66CCFF">Participant</th>
  21.                   <th width="4%" bgcolor="#FFFFFF">CH1</th>
  22.                   <th width="4%" bgcolor="#CCCCCC">CH2</th>
  23.                   <th width="4%" bgcolor="#CCCCCC">CH3</th>
  24.                   <th width="4%" bgcolor="#CCCCCC">CH4</th>
  25.                   <th width="4%" bgcolor="#CCCCCC">CH5</th>
  26.                   <th width="4%" bgcolor="#CCCCCC">CH6</th>
  27.                   <th width="4%" bgcolor="#CCCCCC">CH7</th>
  28.                   <th width="4%" bgcolor="#CCCCCC">CH8</th>
  29.                   <th width="4%" bgcolor="#FFB9B9">ORDRE</th>
  30.                   <th width="10%">DESORDRE</th>
  31.               </tr>
  32. </thead>
  33. <?php ###### REQUETE AFFICHAGE DES PRONOSTIQUE #####
  34.      while($datas = mysql_fetch_assoc($reponse)) { //on parcourt les différents participants/pronostiques
  35.      //récupération des pronostiques du participant en cours
  36.      $tab_pronos = array($datas['CH1'],$datas['CH2'],$datas['CH3'],$datas['CH4'],$datas['CH5'],$datas['CH6'],$datas['CH7'],$datas['CH8']);
  37.  $tab_res = array($C1, $C2, $C3, $C4, $C5);
  38.  $ordre = count(array_intersect_assoc($tab_res, $tab_pronos));
  39.      $desordre = count(array_intersect($tab_res, $tab_pronos));
  40. ?>           
  41. <tbody>
  42. <tr>
  43.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['date_enregistrement'].'';?></td>
  44.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['PARTICIPANT'].'';?></td>
  45.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH1'].'';?></td>
  46.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH2'].'';?></td>
  47.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH3'].'';?></td>
  48.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH4'].'';?></td>
  49.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH5'].'';?></td>
  50.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH6'].'';?></td>
  51.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH7'].'';?></td>
  52.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH8'].'';?></td>
  53.                   <td bgcolor="#FFFFFF"><?php echo ''.$ordre.'';?></td>
  54.                   <td bgcolor="#FFFFFF"><?php echo ''.$desordre.'';?></td>
  55. </tr>
  56. </tbody>
  57. <?php } ?>
  58. </table>


Message édité par Michel6359 le 07-02-2016 à 21:58:05
n°2275127
MaybeEijOr​Not
but someone at least
Posté le 06-02-2016 à 17:07:05  profilanswer
 

Cela te retourne le nombre de chevaux dans l'ordre ou dans le désordre, donc tu as un tierce quand tu as 3 chevaux, un quarte quand tu en as 4 et un quinte quand tu en as 5.
Il est où le problème? o_O
 
Par exemple dans la colonne "tierce ordre" tu peux mettre :
 

Code :
  1. <?php if ($ordre > 2) { echo "oui"; } else { echo "non"; } ?>


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2275146
Michel6359
Posté le 07-02-2016 à 09:59:48  profilanswer
 

Bonjour
 
Bon j'ai regardé hier , il y a bien des points attribué  selon le pronostique et l'arrivée. Mais ils sont incohérents.
 
Quand tu regardes    http://www.michel-techet.com/PMU/T [...] oints2.php
 
Le participant ► TEST ► a les chevaux suivant ►7 6 17 14 9 4 11 10 pour une arrivée ► 7-6-14-17-4
 
Normalement il devrait avoir  Le tiercé ordre en 4 chevaux ► 7  -  6  - 17  - 14  il devrait  avoir 50 point et 50  est la 0.
 
 

Code :
  1. <?php ###### REQUETE AFFICHAGE DES PRONOSTIQUE #####
  2.      while($datas = mysql_fetch_assoc($reponse)) { //on parcourt les différents participants/pronostiques
  3.      //récupération des pronostiques du participant en cours
  4.      $C1 ='7';$C2 ='6';$C3 ='14';$C4 ='17';$C5 ='4';
  5.  $tab_pronos = array($datas['CH1'],$datas['CH2'],$datas['CH3'],$datas['CH4'],$datas['CH5'],$datas['CH6'],$datas['CH7'],$datas['CH8']);
  6.  $tab_res = array($C1, $C2, $C3, $C4, $C5);
  7.      $ordre = count(array_intersect_assoc($tab_res, $tab_pronos));
  8.      $desordre = count(array_intersect($tab_res, $tab_pronos));
  9.  ?>           
  10. <tbody>
  11. <tr>
  12.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['date_enregistrement'].'';?></td>
  13.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['PARTICIPANT'].'';?></td>
  14.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH1'].'';?></td>
  15.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH2'].'';?></td>
  16.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH3'].'';?></td>
  17.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH4'].'';?></td>
  18.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH5'].'';?></td>
  19.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH6'].'';?></td>
  20.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH7'].'';?></td>
  21.                   <td bgcolor="#FFFFFF"><?php echo ''.$datas['CH8'].'';?></td>
  22.                   <td bgcolor="#FFFFFF"><?php echo ''.$C1.'-'.$C2.'-'.$C3.'-'.$C4.'-'.$C5.'';?></td>
  23.                   <td bgcolor="#FFFFFF"><?php if ($ordre == 3)      { echo "50";  } else { echo "0"; }?> </td>
  24.                   <td bgcolor="#FFFFFF"><?php if ($desordre == 3)   { echo "50";  } else { echo "0"; }?></td>
  25.                   <td bgcolor="#FFFFFF"><?php if ($ordre == 4)   { echo "200"; } else { echo "0"; }  ?></td>
  26.                   <td bgcolor="#FFFFFF"><?php if ($desordre == 4)   { echo "100"; } else { echo "0"; }?></td>
  27.                   <td bgcolor="#FFFFFF"><?php if ($ordre == 5)   { echo "500"; } else { echo "0"; }  ?></td>
  28.                   <td bgcolor="#FFFFFF"><?php if ($desordre == 5)   { echo "250"; } else { echo "0"; }?></td>
  29. </tr>
  30. </tbody>
  31. <?php } ?>
  32. </table>

n°2275150
MaybeEijOr​Not
but someone at least
Posté le 07-02-2016 à 15:48:48  profilanswer
 

C'est ça un tiercé ordre? :pt1cable:  
 
Je pensais que le tiercé ordre ne pouvait être que [7 - 6 - 14 - autre - autre] et non [7 - 6 - autre - 14 - autre].
Si le deuxième cas est bien un tiercé gagnant alors ça va compliquer un peu les choses mais on pourra s'en sortir quand même sans boucle je pense.
 
Tu peux tester (je sors ça sans trop réfléchir donc je dis bien tester voir ce que ça donne) :
 

Code :
  1. $ordre = count(array_intersect_assoc($tab_res, array_intersect(($tab_res, $tab_pronos)));


 
On va voir si je suis inspiré. :sol:


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2275151
Michel6359
Posté le 07-02-2016 à 16:12:17  profilanswer
 

Bonjour  
 
Non dans les jeux si exemple tu joues 7 6  17 18 11 14 c toujours un tiercé ordre les chiffres ce suivent , certes très chère mais possible  
Idem si jeu   11  10 12  7 6 11 14 les chiffres toujours en ordre 7 6 14  c sur que je n'aime pas mais comme le concours a commencé comme sa , je ne peux changer la règle , par contre j'envisage que seulment en 5 chevaux par la suite.
 
 
Merci je test  

n°2275153
MaybeEijOr​Not
but someone at least
Posté le 07-02-2016 à 16:49:56  profilanswer
 

MaybeEijOrNot a écrit :

[7 - 6 - autre - 14 - autre].


 
Donc on est bien dans ce cas?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2275154
Michel6359
Posté le 07-02-2016 à 16:51:47  profilanswer
 

RE
 
Non sa ne fonctionne  pas directement une erreur de syntaxe .
 
J'ai eu cette solution ►  
 

Code :
  1. <?php
  2. function ordre($prono,$arrive){
  3.    return count(array_intersect_assoc($arrive, $prono));
  4. }
  5. function desordre($prono,$arrive){
  6.    return count(array_intersect($arrive,$prono));
  7. function combine($prono,$arrive){
  8.     $total = 0;
  9.     for ($a=0;$a<count($arrive);$a++){
  10.         $exit = 1;
  11.         for ($p=0;$p<count($prono);$p++){ 
  12.             if($arrive[$a] === $prono[$p]){
  13.                 $exit = 0;
  14.                 $prono = array_slice($prono,$p,count($prono)); 
  15.                 $total+=1;
  16.             } 
  17.         }
  18.         if($exit) break;
  19.     }
  20.     return $total;
  21. }
  22. function combineToutOrdre($prono,$arrive){
  23.     return count(array_intersect($arrive,$prono));
  24. }
  25. function jeu($prono,$arrive,$jeu,$type){
  26.     switch($jeu){
  27.         case "tierce":
  28.             if(count($prono)>3&&($type==="ordre"||$type==="desordre" )){
  29.                 $prono = array_slice($prono,0,3); 
  30.             }
  31.             if(count($prono)<3) return "Vous n'avez pas assez de chevaux pour jouer au tierce";
  32.             if(count($arrive)<3) return "Il n'y a pas assez de chevaux pour jouer au tierce";
  33.             return $type($prono,$arrive) >= 3 ? "Gagnant tierce ".$type : "Perdant tierce ".$type;
  34.         break;
  35.         case "quarte":
  36.              if(count($prono)>4&($type==="ordre"||$type==="desordre" )){
  37.                 $prono = array_slice($prono,0,4); 
  38.             }           
  39.              if(count($prono)<4) return "Vous n'avez pas assez de chevaux pour jouer au quarte";
  40.              if(count($arrive)<4) return "Il n'y a pas assez de chevaux pour jouer au quarte";
  41.            return $type($prono,$arrive) >= 4 ? "Gagnant quarte ".$type : "Perdant quarte ".$type;
  42.         break;
  43.         case "quinte":
  44.              if(count($prono)>5&&($type==="ordre"||$type==="desordre" )){
  45.                 $prono = array_slice($prono,0,5); 
  46.             }           
  47.              if(count($prono)<5) return "Vous n'avez pas assez de chevaux pour jouer au quinte";
  48.              if(count($arrive)<5) return "Il n'y a pas assez de chevaux pour jouer au quinte";
  49.            return $type($prono,$arrive) >= 5 ? "Gagnant quinte ".$type : "Perdant quinte ".$type;
  50.         break;
  51.     }
  52. }
  53. $prono = array(3,6,14,5,7,21);
  54. $arrive = array(6,14,3,7);
  55. echo jeu($prono,$arrive,"tierce","ordre" );//ne garde que le 3 premier chevaux du prono si le prono a plus de 3 chevaux, car le tierce se joue avec 3 chevaux...
  56. echo"<br>";
  57. echo jeu($prono,$arrive,"tierce","desordre" );//ne garde que le 3 premier chevaux du prono si le prono a plus de 3 chevaux, car le tierce se joue avec 3 chevaux...
  58. echo"<br>";
  59. echo jeu($prono,$arrive,"tierce","combine" );
  60. echo"<br>";
  61. echo jeu($prono,$arrive,"tierce","combineToutOrdre" );
  62. echo"<br>";
  63. echo jeu($prono,$arrive,"quarte","ordre" );//ne garde que le 4 premier chevaux du prono si le prono a plus de 4 chevaux, car le tierce se joue avec 4 chevaux...
  64. echo"<br>";
  65. echo jeu($prono,$arrive,"quarte","desordre" );//ne garde que le 4 premier chevaux du prono si le prono a plus de 4 chevaux, car le tierce se joue avec 4 chevaux...
  66. echo"<br>";
  67. echo jeu($prono,$arrive,"quarte","combine" );
  68. echo"<br>"; 
  69. echo jeu($prono,$arrive,"quarte","combineToutOrdre" );
  70. echo"<br>";
  71. echo jeu($prono,$arrive,"quinte","ordre" );//ne garde que le 5 premier chevaux du prono si le prono a plus de 5 chevaux, car le tierce se joue avec 5 chevaux...
  72. echo"<br>";
  73. echo jeu($prono,$arrive,"quinte","desordre" );//ne garde que le 5 premier chevaux du prono si le prono a plus de 5 chevaux, car le tierce se joue avec 5 chevaux...
  74. echo"<br>";
  75. echo jeu($prono,$arrive,"quinte","combine" );
  76. echo"<br>";
  77. echo jeu($prono,$arrive,"quinte","combineToutOrdre" );
  78. echo"<br>";
  79. echo"<br>";


 
 
Merci

n°2275155
Michel6359
Posté le 07-02-2016 à 16:52:06  profilanswer
 

RE
 
Non sa ne fonctionne  pas directement une erreur de syntaxe .
 
J'ai eu cette solution ►  
 

Code :
  1. <?php
  2. function ordre($prono,$arrive){
  3.    return count(array_intersect_assoc($arrive, $prono));
  4. }
  5. function desordre($prono,$arrive){
  6.    return count(array_intersect($arrive,$prono));
  7. function combine($prono,$arrive){
  8.     $total = 0;
  9.     for ($a=0;$a<count($arrive);$a++){
  10.         $exit = 1;
  11.         for ($p=0;$p<count($prono);$p++){ 
  12.             if($arrive[$a] === $prono[$p]){
  13.                 $exit = 0;
  14.                 $prono = array_slice($prono,$p,count($prono)); 
  15.                 $total+=1;
  16.             } 
  17.         }
  18.         if($exit) break;
  19.     }
  20.     return $total;
  21. }
  22. function combineToutOrdre($prono,$arrive){
  23.     return count(array_intersect($arrive,$prono));
  24. }
  25. function jeu($prono,$arrive,$jeu,$type){
  26.     switch($jeu){
  27.         case "tierce":
  28.             if(count($prono)>3&&($type==="ordre"||$type==="desordre" )){
  29.                 $prono = array_slice($prono,0,3); 
  30.             }
  31.             if(count($prono)<3) return "Vous n'avez pas assez de chevaux pour jouer au tierce";
  32.             if(count($arrive)<3) return "Il n'y a pas assez de chevaux pour jouer au tierce";
  33.             return $type($prono,$arrive) >= 3 ? "Gagnant tierce ".$type : "Perdant tierce ".$type;
  34.         break;
  35.         case "quarte":
  36.              if(count($prono)>4&($type==="ordre"||$type==="desordre" )){
  37.                 $prono = array_slice($prono,0,4); 
  38.             }           
  39.              if(count($prono)<4) return "Vous n'avez pas assez de chevaux pour jouer au quarte";
  40.              if(count($arrive)<4) return "Il n'y a pas assez de chevaux pour jouer au quarte";
  41.            return $type($prono,$arrive) >= 4 ? "Gagnant quarte ".$type : "Perdant quarte ".$type;
  42.         break;
  43.         case "quinte":
  44.              if(count($prono)>5&&($type==="ordre"||$type==="desordre" )){
  45.                 $prono = array_slice($prono,0,5); 
  46.             }           
  47.              if(count($prono)<5) return "Vous n'avez pas assez de chevaux pour jouer au quinte";
  48.              if(count($arrive)<5) return "Il n'y a pas assez de chevaux pour jouer au quinte";
  49.            return $type($prono,$arrive) >= 5 ? "Gagnant quinte ".$type : "Perdant quinte ".$type;
  50.         break;
  51.     }
  52. }
  53. $prono = array(3,6,14,5,7,21);
  54. $arrive = array(6,14,3,7);
  55. echo jeu($prono,$arrive,"tierce","ordre" );//ne garde que le 3 premier chevaux du prono si le prono a plus de 3 chevaux, car le tierce se joue avec 3 chevaux...
  56. echo"<br>";
  57. echo jeu($prono,$arrive,"tierce","desordre" );//ne garde que le 3 premier chevaux du prono si le prono a plus de 3 chevaux, car le tierce se joue avec 3 chevaux...
  58. echo"<br>";
  59. echo jeu($prono,$arrive,"tierce","combine" );
  60. echo"<br>";
  61. echo jeu($prono,$arrive,"tierce","combineToutOrdre" );
  62. echo"<br>";
  63. echo jeu($prono,$arrive,"quarte","ordre" );//ne garde que le 4 premier chevaux du prono si le prono a plus de 4 chevaux, car le tierce se joue avec 4 chevaux...
  64. echo"<br>";
  65. echo jeu($prono,$arrive,"quarte","desordre" );//ne garde que le 4 premier chevaux du prono si le prono a plus de 4 chevaux, car le tierce se joue avec 4 chevaux...
  66. echo"<br>";
  67. echo jeu($prono,$arrive,"quarte","combine" );
  68. echo"<br>"; 
  69. echo jeu($prono,$arrive,"quarte","combineToutOrdre" );
  70. echo"<br>";
  71. echo jeu($prono,$arrive,"quinte","ordre" );//ne garde que le 5 premier chevaux du prono si le prono a plus de 5 chevaux, car le tierce se joue avec 5 chevaux...
  72. echo"<br>";
  73. echo jeu($prono,$arrive,"quinte","desordre" );//ne garde que le 5 premier chevaux du prono si le prono a plus de 5 chevaux, car le tierce se joue avec 5 chevaux...
  74. echo"<br>";
  75. echo jeu($prono,$arrive,"quinte","combine" );
  76. echo"<br>";
  77. echo jeu($prono,$arrive,"quinte","combineToutOrdre" );
  78. echo"<br>";
  79. echo"<br>";


 
 
Merci

n°2275156
Michel6359
Posté le 07-02-2016 à 16:59:33  profilanswer
 

RE
 
Non sa ne fonctionne  pas directement une erreur de syntaxe .
 
J'ai eu cette solution ►  
 

Code :
  1. <?php
  2. function ordre($prono,$arrive){
  3.    return count(array_intersect_assoc($arrive, $prono));
  4. }
  5. function desordre($prono,$arrive){
  6.    return count(array_intersect($arrive,$prono));
  7. function combine($prono,$arrive){
  8.     $total = 0;
  9.     for ($a=0;$a<count($arrive);$a++){
  10.         $exit = 1;
  11.         for ($p=0;$p<count($prono);$p++){ 
  12.             if($arrive[$a] === $prono[$p]){
  13.                 $exit = 0;
  14.                 $prono = array_slice($prono,$p,count($prono)); 
  15.                 $total+=1;
  16.             } 
  17.         }
  18.         if($exit) break;
  19.     }
  20.     return $total;
  21. }
  22. function combineToutOrdre($prono,$arrive){
  23.     return count(array_intersect($arrive,$prono));
  24. }
  25. function jeu($prono,$arrive,$jeu,$type){
  26.     switch($jeu){
  27.         case "tierce":
  28.             if(count($prono)>3&&($type==="ordre"||$type==="desordre" )){
  29.                 $prono = array_slice($prono,0,3); 
  30.             }
  31.             if(count($prono)<3) return "Vous n'avez pas assez de chevaux pour jouer au tierce";
  32.             if(count($arrive)<3) return "Il n'y a pas assez de chevaux pour jouer au tierce";
  33.             return $type($prono,$arrive) >= 3 ? "Gagnant tierce ".$type : "Perdant tierce ".$type;
  34.         break;
  35.         case "quarte":
  36.              if(count($prono)>4&($type==="ordre"||$type==="desordre" )){
  37.                 $prono = array_slice($prono,0,4); 
  38.             }           
  39.              if(count($prono)<4) return "Vous n'avez pas assez de chevaux pour jouer au quarte";
  40.              if(count($arrive)<4) return "Il n'y a pas assez de chevaux pour jouer au quarte";
  41.            return $type($prono,$arrive) >= 4 ? "Gagnant quarte ".$type : "Perdant quarte ".$type;
  42.         break;
  43.         case "quinte":
  44.              if(count($prono)>5&&($type==="ordre"||$type==="desordre" )){
  45.                 $prono = array_slice($prono,0,5); 
  46.             }           
  47.              if(count($prono)<5) return "Vous n'avez pas assez de chevaux pour jouer au quinte";
  48.              if(count($arrive)<5) return "Il n'y a pas assez de chevaux pour jouer au quinte";
  49.            return $type($prono,$arrive) >= 5 ? "Gagnant quinte ".$type : "Perdant quinte ".$type;
  50.         break;
  51.     }
  52. }
  53. $prono = array(3,6,14,5,7,21);
  54. $arrive = array(6,14,3,7);
  55. echo jeu($prono,$arrive,"tierce","ordre" );//ne garde que le 3 premier chevaux du prono si le prono a plus de 3 chevaux, car le tierce se joue avec 3 chevaux...
  56. echo"<br>";
  57. echo jeu($prono,$arrive,"tierce","desordre" );//ne garde que le 3 premier chevaux du prono si le prono a plus de 3 chevaux, car le tierce se joue avec 3 chevaux...
  58. echo"<br>";
  59. echo jeu($prono,$arrive,"tierce","combine" );
  60. echo"<br>";
  61. echo jeu($prono,$arrive,"tierce","combineToutOrdre" );
  62. echo"<br>";
  63. echo jeu($prono,$arrive,"quarte","ordre" );//ne garde que le 4 premier chevaux du prono si le prono a plus de 4 chevaux, car le tierce se joue avec 4 chevaux...
  64. echo"<br>";
  65. echo jeu($prono,$arrive,"quarte","desordre" );//ne garde que le 4 premier chevaux du prono si le prono a plus de 4 chevaux, car le tierce se joue avec 4 chevaux...
  66. echo"<br>";
  67. echo jeu($prono,$arrive,"quarte","combine" );
  68. echo"<br>"; 
  69. echo jeu($prono,$arrive,"quarte","combineToutOrdre" );
  70. echo"<br>";
  71. echo jeu($prono,$arrive,"quinte","ordre" );//ne garde que le 5 premier chevaux du prono si le prono a plus de 5 chevaux, car le tierce se joue avec 5 chevaux...
  72. echo"<br>";
  73. echo jeu($prono,$arrive,"quinte","desordre" );//ne garde que le 5 premier chevaux du prono si le prono a plus de 5 chevaux, car le tierce se joue avec 5 chevaux...
  74. echo"<br>";
  75. echo jeu($prono,$arrive,"quinte","combine" );
  76. echo"<br>";
  77. echo jeu($prono,$arrive,"quinte","combineToutOrdre" );
  78. echo"<br>";
  79. echo"<br>";


 
 
Merci

n°2275158
Michel6359
Posté le 07-02-2016 à 17:09:40  profilanswer
 

Oui c sa pour  le tiercé en 3
 
Mais sa peut être [autre 7  autre autre  6 - autre  autre  - 14 - autre].  ect  il faut que dans la combinaison les 3 dans sont l'ordre quelque soit leur emplacement .
 
Regarde le fichier excel que je suis actuellement ►https://1fichier.com/?h6ask543ul

n°2275159
MaybeEijOr​Not
but someone at least
Posté le 07-02-2016 à 17:21:00  profilanswer
 

Oui il manque une parenthèse fermante, désolé :
 

Code :
  1. $ordre = count(array_intersect_assoc($tab_res, array_intersect(($tab_res, $tab_pronos))));


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°2275160
Michel6359
Posté le 07-02-2016 à 17:23:46  profilanswer
 

Oui je l'avais ajouté et erreur dans même je vais retester pour en être sur

n°2275162
Michel6359
Posté le 07-02-2016 à 17:33:47  profilanswer
 

J'ai mis ça car il y avait aussi une erreur  
 

Code :
  1. $ordre = count(array_intersect_assoc($tab_res, array_intersect($tab_res, $tab_pronos)));
  2. au lieu de
  3. $ordre = count(array_intersect_assoc($tab_res, array_intersect(($tab_res, $tab_pronos))));


 
Mais sa ne change rien il trouve aussi bien en ordre que désordre m^me pour les combinaisons non ordres
 
[url] http://www.michel-techet.com/PMU/T [...] oints2.php  [/url]

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Comparaison de 5 chiffres ordre et désordre sur 8 autres chiffres

 

Sujets relatifs
[BATCH] Script de comparaison valeur de registre avec valeur en durproblème double comparaison
comparaison de 2 fichierscomparaison de sequence texte
PHPExcel comparaison cellules et boucleComparaison des moteurs PHP
Ordre aléatoire d'exécution + duplication traitement d'un BAT[Access/SQL] Comparaison de tables
Des chiffres et des lettres VBAAide VBA comparaison de deux fichiers Excel
Plus de sujets relatifs à : Comparaison de 5 chiffres ordre et désordre sur 8 autres chiffres


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR