par
Nestecha » 24 oct. 2014, 03:07
<html>
<head>
<title>grille loto</title>
</head>
<body>
<?Php
session_start();
define ( "NBL", 7); //nombre de lignes
define ("NBC", 7); //nombre de colonnes
/* Création du tableau */
$tab = array();
$tab[0] = range (1, 7, 1);
$tab[1] = range (8, 14, 1);
$tab[2] = range (15, 21, 1);
$tab[3] = range (22, 28, 1);
$tab[4] = range (29, 35, 1);
$tab[5] = range (36, 42, 1);
$tab[6] = range (43, 49, 1);
if (isset($_GET['session'])) {
if ($_GET['session'] == 'reset') {
unset($_SESSION['id']);
unset($_SESSION['winningNumber']);
}
}
if (isset($_GET['numero'])) {
$_SESSION['id'][$_GET['numero']] = $_GET['numero'];
}
if (!isset($_SESSION['winningNumber'])) {
$_SESSION['winningNumber'] = rand(1,49);
}
function affiche_grille($tab)
{
echo "
<br><br><br><br>
<table border = '1', align='center', cellpadding='6', textalign='center'>";
// On parcours toutes les lignes du tableau
for ($i = 0; $i< NBL ; $i++)
{
echo "<tr>";
// On parcours toutes les colonnes de la ligne
for ($j = 0; $j < NBC; $j++)
{
$value = $tab[$i][$j];
if (isset($_SESSION['id'][$value])) {
if ($_SESSION['id'][$value] == $_SESSION['winningNumber']) {
echo '<td style="color: red;">X</td>';
} else {
echo '<td>X</td>';
}
} else {
echo '<td><a href="?numero=',$value,'">',$value,'</td>';
// nouveau numero cliquable qui renvoie une variable $_GET['numero']
}
}
'</tr>';
}
'</table>';
{
echo "<br>
<table align='center', textalign='center'>";
$new = 'Nouveau tirage';
echo '<br><br><br><td><a href="index.php?session=reset">',$new,'</td>';
// nouveau numero cliquable qui renvoie une variable $_GET['numero']
}}
function realise_tirage() {
$tab = array();
$busy = false; //numéro unique
for ($i=0; $i<6; $i++) {
do {
$nb = rand(1,49);
foreach ($tab as $val) {
if ($busy = ($val == $nb))
break;
}
} while ($busy);
$tab[] = $nb;
}
return $tab;
}
var_dump($_SESSION);
affiche_grille($tab);
?>
</body>
</html>
Je te conseille vraiment beaucoup de refaire tout ton code, du début à la fin.
Déjà, une fonction ne doit rien afficher, elle devrait retourner un résultat, rien d'autre. Ensuite ta fonction realise_tirage est inutile. Fais ton code plus "simplement", plus efficacement, c'est vraiment très faisable.
[php]<html>
<head>
<title>grille loto</title>
</head>
<body>
<?Php
session_start();
define ( "NBL", 7); //nombre de lignes
define ("NBC", 7); //nombre de colonnes
/* Création du tableau */
$tab = array();
$tab[0] = range (1, 7, 1);
$tab[1] = range (8, 14, 1);
$tab[2] = range (15, 21, 1);
$tab[3] = range (22, 28, 1);
$tab[4] = range (29, 35, 1);
$tab[5] = range (36, 42, 1);
$tab[6] = range (43, 49, 1);
if (isset($_GET['session'])) {
if ($_GET['session'] == 'reset') {
unset($_SESSION['id']);
unset($_SESSION['winningNumber']);
}
}
if (isset($_GET['numero'])) {
$_SESSION['id'][$_GET['numero']] = $_GET['numero'];
}
if (!isset($_SESSION['winningNumber'])) {
$_SESSION['winningNumber'] = rand(1,49);
}
function affiche_grille($tab)
{
echo "
<br><br><br><br>
<table border = '1', align='center', cellpadding='6', textalign='center'>";
// On parcours toutes les lignes du tableau
for ($i = 0; $i< NBL ; $i++)
{
echo "<tr>";
// On parcours toutes les colonnes de la ligne
for ($j = 0; $j < NBC; $j++)
{
$value = $tab[$i][$j];
if (isset($_SESSION['id'][$value])) {
if ($_SESSION['id'][$value] == $_SESSION['winningNumber']) {
echo '<td style="color: red;">X</td>';
} else {
echo '<td>X</td>';
}
} else {
echo '<td><a href="?numero=',$value,'">',$value,'</td>';
// nouveau numero cliquable qui renvoie une variable $_GET['numero']
}
}
'</tr>';
}
'</table>';
{
echo "<br>
<table align='center', textalign='center'>";
$new = 'Nouveau tirage';
echo '<br><br><br><td><a href="index.php?session=reset">',$new,'</td>';
// nouveau numero cliquable qui renvoie une variable $_GET['numero']
}}
function realise_tirage() {
$tab = array();
$busy = false; //numéro unique
for ($i=0; $i<6; $i++) {
do {
$nb = rand(1,49);
foreach ($tab as $val) {
if ($busy = ($val == $nb))
break;
}
} while ($busy);
$tab[] = $nb;
}
return $tab;
}
var_dump($_SESSION);
affiche_grille($tab);
?>
</body>
</html>[/php]
Je te conseille vraiment beaucoup de refaire tout ton code, du début à la fin.
Déjà, une fonction ne doit rien afficher, elle devrait retourner un résultat, rien d'autre. Ensuite ta fonction realise_tirage est inutile. Fais ton code plus "simplement", plus efficacement, c'est vraiment très faisable.