Loterie en ligne

Utilisateur anonyme -  
cheese42 Messages postés 890 Statut Membre -
Bonjour,

Je souhaiterais mettre une petite loterie sur mon site... Mon code se décompose en trois parties:
- Une partie la grille de numéros
- Une autre qui enregistre sous une session les numéro joués (et les efface par un second clic)
- Enfin une troisième partie qui range dans l'ordre croissant les numéros.
Je suis donc arrivé au résultat satisfaisant suivant...

/* Affichage ou Suppression des numéros sélectionnés */

if(isset($_GET['numero']))
	{
	if ($_SESSION['numero1'] == '')
		{
		$_SESSION['numero1'] = $_GET['numero'];
		}
	else
		{
		if($_SESSION['numero1'] == $_GET['numero'])
			{
			$_SESSION['numero1'] = '';
			if($_SESSION['numero2'] != '')
				{
				$_SESSION['numero1'] = $_SESSION['numero2'];
				$_SESSION['numero2'] = $_SESSION['numero3'];
				$_SESSION['numero3'] = $_SESSION['numero4'];
				$_SESSION['numero4'] = $_SESSION['numero5'];
				$_SESSION['numero5'] = $_SESSION['numero6'];
				}
			}
		else
			{
			if ($_SESSION['numero2'] == '')
				{
				$_SESSION['numero2'] = $_GET['numero'];
				}
			else
				{
				if($_SESSION['numero2'] == $_GET['numero'])
					{
					$_SESSION['numero2'] = '';
					if($_SESSION['numero3'] != '')
						{
						$_SESSION['numero2'] = $_SESSION['numero3'];
						$_SESSION['numero3'] = $_SESSION['numero4'];
						$_SESSION['numero4'] = $_SESSION['numero5'];
						$_SESSION['numero5'] = $_SESSION['numero6'];
						}
					}
				else
					{
					if ($_SESSION['numero3'] == '')
						{
						$_SESSION['numero3'] = $_GET['numero'];
						}
					else
						{
						if($_SESSION['numero3'] == $_GET['numero'])
							{
							$_SESSION['numero3'] = '';
							if($_SESSION['numero4'] != '')
								{
								$_SESSION['numero3'] = $_SESSION['numero4'];
								$_SESSION['numero4'] = $_SESSION['numero5'];
								$_SESSION['numero5'] = $_SESSION['numero6'];
								}
							}
						else
							{
							if ($_SESSION['numero4'] == '')
								{
								$_SESSION['numero4'] = $_GET['numero'];
								}
							else
								{
								if($_SESSION['numero4'] == $_GET['numero'])
									{
									$_SESSION['numero4'] = '';
									if($_SESSION['numero5'] != '')
										{
										$_SESSION['numero4'] = $_SESSION['numero5'];
										$_SESSION['numero5'] = $_SESSION['numero6'];
										}
									}
								else
									{
									if ($_SESSION['numero5'] == '')
										{
										$_SESSION['numero5'] = $_GET['numero'];
										}
									else
										{
										if($_SESSION['numero5'] == $_GET['numero'])
											{
											$_SESSION['numero5'] = '';
											if($_SESSION['numero6'] != '')
												{
												$_SESSION['numero5'] = $_SESSION['numero6'];
												}
											}
										else
											{
											if ($_SESSION['numero6'] == '')
												{
												$_SESSION['numero6'] = $_GET['numero'];
												}
											else
												{
												if($_SESSION['numero6'] == $_GET['numero'])
													{
													$_SESSION['numero6'] = '';
													}
												else
													{
													echo 'Vous avez séléctionné tout vos numéros';
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}

	if($_SESSION['numero6'] == $_SESSION['numero5'])
		{
		$_SESSION['numero6'] = '';
		}
/* Reclassage dans l'ordre croissant des numéros */
	
	$numeros = array($_SESSION['numero1'],$_SESSION['numero2'],$_SESSION['numero3'],$_SESSION['numero4'],$_SESSION['numero5'],$_SESSION['numero6']);
	sort($numeros);
	foreach ($numeros as $key => $val)
		{
		echo "$key = $val\n";
		}
	}

/* La grille de numéros */

	$br = 0;

	for ($i = 1; $i < 50; $i++)
		{
		echo '<a href="gerer_compte.php?numero='.$i.'"> '.$i.' .</a>';
		$br = $br + 1;

			if ($br == 10)
			{
			echo '<br />';
			$br = 0;
			}
		}
?>


...Mais j'ai bien peur que ce code soit pas du tout optimisé... Qu'en pensez vous ? Avez vous des pistes à me donner pour améliorer cela ? Merci

4 réponses

Utilisateur anonyme
 
Je relance le post...
1
Utilisateur anonyme
 
Alors qu'après un temps laissé de côté, je me remet à travailler sur mon site de loterie, je me rends compte de mon amateurisme... Je pense avoir simplifier mon script de tirage de loterie basée sur le même principe... ou j'avais pas pensé à utiliser un tableau... Voici l'ancien code:

function tirage()
	{
	$a = 0; $b = 0; $c = 0; $d = 0; $e = 0; $f = 0;

	srand();
	$a = rand(1, 49);
/*	echo $a.'-';*/
	
	srand();
	$b = rand(1, 49);
	if ($b == $a)
		{
/*		echo 'PB: b = '.$b.'->';*/
		$b = rand(1, 49);
		}
/*	echo $b.'-';*/
	
	srand();
	$c = rand(1, 49);
	if ($c == $a || $c == $b)
		{
/*		echo 'PB: c = '.$c.'->';*/
		$c = rand(1, 49);
		}
/*	echo $c.'-';*/
	
	srand();
	$d = rand(1, 49);
	if ($d == $a || $d == $b || $d == $c)
		{
/*		echo 'PB: d = '.$d.'->';*/
		$d = rand(1, 49);
		}
/*	echo $d.'-';*/
	
	srand();
	$e = rand(1, 49);
	if ($e == $a || $e == $b || $e == $c || $e == $d)
		{
/*		echo 'PB: e = '.$e.'->';*/
		$e = rand(1, 49);
		}
/*	echo $e.'-';*/
	
	srand();
	$f = rand(1, 49);
	if ($f == $a || $f == $b || $f == $c || $f == $d || $f == $e)
		{
/*		echo 'PB: f = '.$f.'->';*/
		$f = rand(1, 49);
		}
/*	echo $f.'<br />';*/
	
	
	if($a == $b || $a == $c || $a == $d || $a == $e || $a == $f || $b == $c || $b == $d || $b == $e || $b == $f || $c == $d || $c == $e || $c == $f || $d == $e || $d == $f || $e == $f)
		{
/*		echo 'Probleme, deux chiffre similaires:<br />'.$a.'-'.$b.'-'.$c.'-'.$d.'-'.$e.'-'.$f.'- <br /> On recommence: <br />';*/
		tirage();
		}
	else
		{
/*		echo 'Sans problème:<br />'.$a.'-'.$b.'-'.$c.'-'.$d.'-'.$e.'-'.$f.'<br />';*/
		echo '<table class="numeros"><tr><td class="numeros_case" colspan=6>Voici la grille d\'aujourd\'hui</td></tr><tr><td class="numeros_case">'.$a.'</td><td class="numeros_case">'.$b.'</td><td class="numeros_case">'.$c.'</td><td class="numeros_case">'.$d.'</td><td class="numeros_case">'.$e.'</td><td class="numeros_case">'.$f.'</td></tr></table>';
		}

	return array($a,$b,$c,$d,$e,$f);

	}
   


et voici le nouveau:

function tirage()
	{
	$tirage = array();
	$i = 1;
	$nbre_de_numeros = 0;

	while ($nbre_de_numeros < 6)
		{
		srand();
		$numero = rand(1, 49);

		if (!in_array ($numero, $tirage))
			{
/* Petite verification:				echo 'On enregistre ce numero ( '.$numero.' ) car il n\'est pas dans le tableau<br />';		*/
			$tirage[$i] = $numero;
			$i++;
			}
/* Petite verification:	
		else
			{
			echo 'Ce numero ( '.$numero.' ) est déja dans le tableau on ne le rentre pas à nouveau <br />';
			}
*/
		$nbre_de_numeros = count($tirage);

/* Petite verification:				echo 'Le numéro: '.$nbre_de_numeros.' à pour valeur: '.$tirage[$i - 1].'<br /><br />';		*/
		}

	return $tirage;
	}

Ce code peut sûrement être encore optimiser mais il y a déjà pas de comparaison possible entre les deux...
Bref tout ça pour dire qu'à l'avenir je penserais plus souvent aux tableaux...
0
Utilisateur anonyme
 
J'ai essayé de simplifier ce système de sélection des numéros et je suis arrivé au résultat suivant:
	$nbre_de_numeros = 0;
	$grille_numeros = array();
	$i = 1;

	while ($i < 7)
		{
		if(isset($_SESSION['numero'.$i]))
			{
			$grille_numeros[$i] = $_SESSION['numero'.$i];
			}
		$i++;
		}
	$nbre_de_numeros = count($grille_numeros);

if(isset($_GET['numero']))
	{
	$numero_selectionne = $_GET['numero'];
	$nbre_de_numeros = count($grille_numeros) + 1;

		if(!in_array($numero_selectionne, $grille_numeros))
			{
			$_SESSION['numero'.$nbre_de_numeros] = $numero_selectionne;
			}
		else
			{
			$cle = array_search($numero_selectionne, $grille_numeros);

			while ($cle < 6)
				{
				$cle_superieure = $cle + 1;
				$_SESSION['numero'.$cle] = $_SESSION['numero'.$cle_superieure];
				$cle++;
				}
			unset($_SESSION['numero'.$cle]);
			}
	}


Ca me semble dix fois moins lourd comme code mais je suis pas encore sûre qu'il n'y ait aucun bugs.

Ps: Ne pas oublier de détruire les $_SESSION['numeroX'] après l'enregistrement de numéros.

Vu que j' ai , je pense, assez améliorer le système je laisse quelques jours à ceux qu'ils voudraient répondre ou ajouter des détails ou corrections puis je clôturerai le sujet.

Merci à ceux qui m'ont lu... A bientôt
0
cheese42 Messages postés 890 Statut Membre 120
 
slt AaSensuio,et a tous les membres de ccm, perso j'ai un code sur une page de loterie, mais j'ai un enorme probleme, bon il n'est pas terminé le script mais regarde ce que j'ai car il fonctionne a peu pres^^, mais si un membre met une lettre a la place d'un chiffre ca marche quand meme, c'est cela que je n'arrive pas a changer::::

<?php
$jouer_le = date("Y/m/d");
$pseudo = $_POST['pseudo'];
$x1 = $_POST['x1'];
$x2 = $_POST['x2'];
$x3 = $_POST['x3'];
$x4 = $_POST['x4'];
$x5 = $_POST['x5'];
$xbonus = $_POST['xbonus'];

$erreur_double = "Il est impossible d'entrer plusieurs numéros identiques";
$erreur_vide = " Il manque un ou plusieurs numéros, tu dois mettre 5 numéros et un complémentaire soit 6 numéros pour pouvoir valider la grille !";

if(isset($_post['x1']))
{
$_POST['x1'] = htmlspecialchars($_POST['x1']);
if (preg_match("#[0-9]#", $_POST['x1']))
{
echo '';
}
else
{
echo '$erreur_vide';
}
}
if(isset($_post['x2']))
{
$_POST['x2'] = htmlspecialchars($_POST['x2']);

die("$erreur_vide");
}
if(isset($_post['x3']))
{
$_POST['x3'] = htmlspecialchars($_POST['x3']);

die("$erreur_vide");
}
if(isset($_post['x4']))
{
$_POST['x4'] = htmlspecialchars($_POST['x4']);

die("$erreur_vide");
}
if(isset($_post['x5']))
{
$_POST['x5'] = htmlspecialchars($_POST['x5']);

die("$erreur_vide");
}
if(isset($_post['xbonus']))
{
$_POST['xbonus'] = htmlspecialchars($_POST['xbonus']);

die("$erreur_vide");
}

if($x1==$x2 || $x1==$x3 || $x1==$x4 || $x1==$x5 || $x1==$xbonus){
die("$erreur_double");
}
if($x2==$x3 || $x2==$x4 || $x2==$x5 || $x2==$xbonus){
die("$erreur_double");
}
if($x3==$x4 || $x3==$x5 || $x3==$xbonus){
die("$erreur_double");
}
if($x4==$x5 || $x4==$xbonus){
die("$erreur_double");
}
if($x5==$xbonus){
die("$erreur_double");
}

echo " $pseudo ,<br />
aujourd'hui, tu as joué les numéros suivants:<br />
le $x1 , le $x2 , le $x3 , le $x4 , le $x5 et en numéro complementaire le $xbonus.<br />";
0