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

Eléphant du PHP | 134 Messages

02 févr. 2016, 12:31

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

ynx
Mammouth du PHP | 586 Messages

02 févr. 2016, 15:27

Salut,

Un début de solution possible :
$arrivees = array(1,2,3,4,5);

$pronostique = array(1,7,2,9,3,8,4,5);

// on enregistre dans ce tableau tous les chiffres du pronostique qui sont dans les arrivées
$pronostque_tmp = array();

foreach($pronostique as $prono) {
    if (in_array($prono, $arrivees)) {
        $pronostque_tmp[] = $prono;
    }
}

// si on a trouvé le même nombre de chiffres que le tableau d'arrivées, on a donc trouvé tous les chiffres (indépendamment de l'ordre)
if (count($pronostque_tmp) == count($arrivees)) {
    echo 'Tous les chiffres ont été trouvés.';
}

// si la comparaison des tableaux $arrivees et $pronostque_tmp retourne un tableau vide, c'est que les deux tableaux sont identiques et dans le même ordre
if (empty(array_diff_assoc($arrivees, $pronostque_tmp))) {
    echo 'Les chiffres trouvés sont dans l\'ordre.'
}
J'ai un doute sur l'utilisation de array_diff_assoc pour comparer les deux tableaux, il y a p-e un moyen plus efficace.

Bonne journée

Mammouth du PHP | 881 Messages

02 févr. 2016, 23:30

Bonjour,
je crois plus efficace de faire ainsi: d'abord une recherche array_keys puis un dénombrement du résultat par count

http://php.net/manual/fr/function.array-keys.php
Soyez artisans de paix

Eléphant du PHP | 134 Messages

03 févr. 2016, 11:12

Bonjour
Un grand Merci ,super !
Je vous tiens au courant

Eléphant du PHP | 134 Messages

03 févr. 2016, 14:10

Bonjour , j'ai essayé ça , mais je ne peux pas voir le résultat une erreur 500, quand je retire ton code aucune erreur.
Ce qu'il serait bien c qu'il me trouve si 3 chevaux = tiercé ordre(100 points) ou désordre(50 points) , 4 chevaux =quarté ordre (200 points) et désordre (100 points), et 5 chevaux ordre(250 points) et désordre (500 points)
Un grand merci
<?php 
#########################################
# CONNEXION AU SERVEUR BASES DE DONNEES # 
#########################################
$REFERENCE_QUINTE ='02022016';

mysql_connect("127.0.0.1", "*", "*");
mysql_select_db("michelte_pmu"); 
$pronos = "SELECT *, DATE_FORMAT(date_prono, '%Hh:%i' ) AS 'date_enregistrement' FROM Prono_Turf WHERE REFERENCE_QUINTE ='$REFERENCE_QUINTE' ORDER BY PARTICIPANT";
$reponse = mysql_query($pronos) or die (mysql_error());
while ($datas = mysql_fetch_assoc($reponse))
{
$arrivees = array(1,2,3,4,5);
$pronostique = array(1,7,2,9,3,8,4,5);

// on enregistre dans ce tableau tous les chiffres du pronostique qui sont dans les arrivées
$pronostque_tmp = array();

foreach($pronostique as $prono) {
    if (in_array($prono, $arrivees)) {
        $pronostque_tmp[] = $prono;
    }
}

// si on a trouvé le même nombre de chiffres que le tableau d'arrivées, on a donc trouvé tous les chiffres (indépendamment de l'ordre)
if (count($pronostque_tmp) == count($arrivees)) {
    echo 'Tous les chiffres ont été trouvés.';
}

// si la comparaison des tableaux $arrivees et $pronostque_tmp retourne un tableau vide, c'est que les deux tableaux sont identiques et dans le même ordre
if (empty(array_diff_assoc($arrivees, $pronostque_tmp))) {
    echo 'Les chiffres trouvés sont dans l\'ordre.';
}  
        	
$Total_points =1000+1; // Pour linstant le temps de trouver le calcul .
?>
<tbody> 
<tr>
<td><div align="center"><strong><?php echo ''.$datas['date_enregistrement'].'';?></strong></div></td>
<td><div align="center"><?php echo ''.$datas['PARTICIPANT'].'';?></div></td> 
<td><div align="center"><?php echo ''.$datas['CH1'].'';?></div></td>
<td><div align="center"><?php echo ''.$datas['CH2'].'';?></div></td>
<td><div align="center"><?php echo ''.$datas['CH3'].'';?></div></td>
<td><div align="center"><?php echo ''.$datas['CH4'].'';?></div></td>
<td><div align="center"><?php echo ''.$datas['CH5'].'';?></div></td>
<td><div align="center"><?php echo ''.$datas['CH6'].'';?></div></td>
<td><div align="center"><?php echo ''.$datas['CH7'].'';?></div></td>
<td><div align="center"><?php echo ''.$datas['CH8'].'';?></div></td>
<td><div align="center"><?php echo ''.$datas['REGRET'].'';?></div></td>
<td><div align="center"><?php echo ''.$Total_points.'';?></div></td>
</tr>
</tbody>
<?php  } ?>
 
 

</table>

ynx
Mammouth du PHP | 586 Messages

03 févr. 2016, 18:23

Une erreur 500 indique une erreur du serveur, souvent cela correspond à une erreur de syntaxe PHP mais il ne semble pas y en avoir dans le code de ton précédent message.
Tu dois pouvoir trouver le message d'erreur complet dans le journal d'erreur de php (le fichier se nomme en général error_log ou error.log).

Mammouth du PHP | 881 Messages

03 févr. 2016, 19:12

Il faudrait être plus précis dans ta description de code.
Quand tu écris que tu as une erreur 500 en ajoutant mon code ... euh! .... en ajoutant quoi au juste?
Est-ce que le code ci-haut fonctionne ou non?

Les erreurs 500 peuvent être provoquées par une boucle sans fin (voir ton while ...) et bien d'autres choses, cf ynx ci-haut

Aussi, il faudra penser à passer au mysqli et abandonner mysql :. http://php.net/manual/fr/class.mysqli.php
Soyez artisans de paix

Mammouth du PHP | 881 Messages

03 févr. 2016, 19:20

Pense à quelque chose comme:

Code : Tout sélectionner

$arrivees = array(1,2,3,4,5); while ($datas = mysql_fetch_assoc($reponse)) { $pronostique = array(1,7,2,9,3,8,4,5); // on enregistre dans ce tableau tous les chiffres du pronostique qui sont dans les arrivées $communs[$datas->$id_pronostique] = array_intersect($arrivees,$pronostique); $combien[$datas->$id_pronostique] = count($commun[$datas->$id_pronostique]); }
qui me semble plus simple
Soyez artisans de paix

Eléphant du PHP | 51 Messages

04 févr. 2016, 12:59

Je voudrai qu'il me trouve les combinaisons gagnante .
Ca c'est une bonne idée, je cherche depuis longtemps pour me permettre de gagner le tiercé à chaque fois :D

Eléphant du PHP | 134 Messages

04 févr. 2016, 13:27

Tout d'abord Bonjour
Je te rappel que c un concours amical entre nous et non jeux joué , sinon aucun intérêt les course sont tellement imprévisible. Tu m'as donc pas aidé par ton message sans aucun intérêt .

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

04 févr. 2016, 20:03

Je te rappel que c un concours amical entre nous et non jeux joué , sinon aucun intérêt les course sont tellement imprévisible. Tu m'as donc pas aidé par ton message sans aucun intérêt .
Tant que ça ne part pas en troll, un peu d'humour ne fait pas de mal non plus ;-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 2278 Messages

06 févr. 2016, 13:43

Pour gagner à coup sur, il faut s'appeler Monsieur X (il a existé et gagné énormément en dépit des efforts du PMU) ou s'abstenir de jouer.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 2278 Messages

06 févr. 2016, 14:54

Voici une autre piste:
?PHP
function verifie ($resultat, $arrivee, $nb_elems)
{
	$nombre= 0;
	for ($i = 0; $i < $nb_elems; $i++)
	{
		$arrive = isset($arrivee[$i])? $arrivee[$i] : -9;
		$joue = isset($resultat[$i])? $resultat[$i] : 999;
		$nombre += ($arrive == $joue)? 1 : 0;
	}
	return $nombre;
}
$arrivee = array(1,2,3,4,5);
$jeu = array(36,2,9,11,5,4,3);
$resultat = array_intersect($arrivee, $jeu);
$nb_bons = count($resultat);
print_r($resultat);
print "nombre sans ordre $nb_bons";

$exacts = verifie ($jeu, $arrivee, 5);
print "<br> nombre ordre $exacts<be>";

?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 134 Messages

09 févr. 2016, 09:54

BONJOUR sirakawa

Merci pour ton aide c une solution , je regarderai ça .

Bonne journée