Comparaison de 5 chiffres ordre et désordre sur 8 autres chiffres - PHP - Programmation
Marsh Posté le 02-02-2016 à 11:58:44
Tu utilises quoi pour stocker les valeurs , base de données, tableau, chaîne ?
Marsh Posté le 02-02-2016 à 12:05:39
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é .
Marsh Posté le 02-02-2016 à 12:39:08
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)
Marsh Posté le 02-02-2016 à 13:05:00
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
Marsh Posté le 02-02-2016 à 13:57:15
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 ) à 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 :
|
Marsh Posté le 02-02-2016 à 14:01:11
Un grand merci je regarde ça
Pas facile pour moi
Je te tiens au courant MERCIIII
Marsh Posté le 02-02-2016 à 15:32:04
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
Marsh Posté le 02-02-2016 à 16:05:36
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.
Marsh Posté le 02-02-2016 à 23:22:35
Bonsoir
J'ai fais ce petit code mais je ne vois comment faire ce que tu m'as proposé .
Code :
|
Merci pour ton aide
Marsh Posté le 03-02-2016 à 10:04:38
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 !
Marsh Posté le 03-02-2016 à 19:23:39
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 :
|
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 :
|
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 :
|
C'est plus clair?
Marsh Posté le 03-02-2016 à 20:01:15
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
Marsh Posté le 03-02-2016 à 20:20:37
MaybeEijOrNot a écrit : Donc pour commencer tu dois placer tes résultats dans un tableau et de même pour les pronos :
|
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 :
|
Ce code affichera :
[4][18][12][7][2]
foreach(tableau, valeur_temp), comme son nom l'indique, veut dire :
Code :
|
Marsh Posté le 03-02-2016 à 20:36:14
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
Marsh Posté le 03-02-2016 à 20:45:09
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.
Marsh Posté le 03-02-2016 à 22:08:48
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 :
|
Marsh Posté le 03-02-2016 à 22:45:34
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 :
|
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 :
|
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)
Marsh Posté le 03-02-2016 à 23:11:11
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
Marsh Posté le 04-02-2016 à 19:53:34
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 :
|
Boucle niveau 1 : ligne 1
Boucle niveau 2 : ligne 3 et 10
Boucle niveau 3 : ligne 5
Marsh Posté le 04-02-2016 à 20:15:48
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
Marsh Posté le 05-02-2016 à 15:25:23
Bonjour
Je confirme j'ai bien l'erreur ►
Code :
|
Code :
|
Bonne journée je vais continuer l'affichage le temps que tu me dise quoi.
Marsh Posté le 05-02-2016 à 18:03:56
Quel est le message d'erreur exactement? o_O
Sinon tu peux le déclarer de manière non raccourcie :
Code :
|
Si ça règle le problème c'est que tu utilises une vieille version php. (n'oublie de virer la ligne 12)
Marsh Posté le 06-02-2016 à 10:03:05
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 :
|
Marsh Posté le 06-02-2016 à 15:03:51
Je ne comprends rien à ce que tu fais.
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 :
|
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.
Marsh Posté le 06-02-2016 à 15:40:50
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 :
|
Marsh Posté le 06-02-2016 à 17:07:05
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 :
|
Marsh Posté le 07-02-2016 à 09:59:48
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 :
|
Marsh Posté le 07-02-2016 à 15:48:48
C'est ça un tiercé ordre?
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 :
|
On va voir si je suis inspiré.
Marsh Posté le 07-02-2016 à 16:12:17
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
Marsh Posté le 07-02-2016 à 16:49:56
MaybeEijOrNot a écrit : [7 - 6 - autre - 14 - autre]. |
Donc on est bien dans ce cas?
Marsh Posté le 07-02-2016 à 16:51:47
RE
Non sa ne fonctionne pas directement une erreur de syntaxe .
J'ai eu cette solution ►
Code :
|
Merci
Marsh Posté le 07-02-2016 à 16:52:06
RE
Non sa ne fonctionne pas directement une erreur de syntaxe .
J'ai eu cette solution ►
Code :
|
Merci
Marsh Posté le 07-02-2016 à 16:59:33
RE
Non sa ne fonctionne pas directement une erreur de syntaxe .
J'ai eu cette solution ►
Code :
|
Merci
Marsh Posté le 07-02-2016 à 17:09:40
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
Marsh Posté le 07-02-2016 à 17:21:00
Oui il manque une parenthèse fermante, désolé :
Code :
|
Marsh Posté le 07-02-2016 à 17:23:46
Oui je l'avais ajouté et erreur dans même je vais retester pour en être sur
Marsh Posté le 07-02-2016 à 17:33:47
J'ai mis ça car il y avait aussi une erreur
Code :
|
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]
Marsh Posté le 02-02-2016 à 11:46:38
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