Page 1 sur 1

session php débutant help

Posté : 22 oct. 2014, 21:57
par nolan3009
Je dois créer un loto en php. voila ce que j'ai fait mais je n'arrive pas a transformer les nombres cliqués par des croix...en plus de dois ajouter une session :
"On utilisera également une session, contenant essentiellement un tableau à deux dimensions appelé grille. Ainsi, la variable $_SESSION['grille'] contiendra au départ les entiers 1 à 49.
Quand une case sera cochée, on pourra par exemple changer le signe de sa valeur (exemple : 10 deviendra -10). Les nombres négatifs seront affichés sous forme d'une croix (caractère « X » non cliquable) lors de l'affichage de la grille à l'écran.
D'autres variables de session seront sans doute utiles pour réaliser cette application, comme par exemple un entier comptant le nombre de cases cochées."
<html>
<head>
<title>grille loto</title>
</head>
<body>

<?Php	

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);
return affiche_grille($tab);


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];
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">',$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;
}

?>

</body>
</html>

Re: session php débutant help

Posté : 23 oct. 2014, 23:45
par moogli
salut,

il est regrettable que dans le sujet il n'y ai pas d'indiquer que les formules de politesses ne sot pas de veine chose lorsque l'on demande quelque chose.

je t'invite donc à relire le règlement que tu as accepté en postant afin de t'y conformer.

si tu ne comprend pas le fonctionnement du système de session voici un tuto http://www.lephpfacile.com/cours/18-les-sessions

quand reste une simple boucle for de 1 à 49, une césure (utilise l'opérateur modulo) et un if permet de faire ce que tu veux.
sauvegarde simplement les numéro cliqué pas besoin d'avoir la grille en entier.

sinon ton prof / formateur pourra certainement t'aider.

@+

Re: session php débutant help

Posté : 24 oct. 2014, 03:07
par Nestecha
<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.

Re: session php débutant help

Posté : 24 oct. 2014, 08:46
par sirakawa
C'est un problème qui a été posé déjà plusieurs fois par la même personne. A chaque fois, survient une nouvelle question ou un UP!!!!

Re: session php débutant help

Posté : 25 oct. 2014, 15:50
par nolan3009
Bonjour

Effectivement j'ai dejà poser la question mais je n'ai pas eu de réponse. C'est un problème sur un forum d'aide de poser plusieurs questions?
C'est limité à 1?
Un grand Merci à ceux qui m'ont répondu :-)
Concernant le code, il est clair que l'on peut faire plus simple mais le devoir impliquait de passer par ça...

Re: session php débutant help

Posté : 04 nov. 2014, 16:21
par nolan3009
Bonjour,
La fonction réalise tirage doit généré un tirage automatique, et comparer la grille cochée par la personne avec ce tirage. Doivent ensuite s'afficher le message, vous avez tiré 2 bon numéros, si deux numeros sont identique dans chaque grille. Je n'arrive pas à réaliser cette partie, ni bloquer le nombre de numéros cliquables, car sur la grille de jeu on doit pouvoir cocher uniquement 6 numéros par session... les autres ne se transforment plus en croix.

merci d'avance pour votre aide