En cherchant à réaliser un sudoku pour m'entrainer, je me retrouve confronté à blocage.
En effet, après réussi à générer une grille de numéros, avec certains numéro affichés, et pour le reste des champs inuput, pour que l'utilisateur les remplisse lui-même, j'aimerai pouvoir vérifier, lorsque l'utilisateur entre une valeur, que cette valeur n'existe pas déjà dans la colonne et dans la ligne où il se situe (qu'elle n'est pas déjà affichée, ou qu'elle n'ait pas déjà été entrée).
Pour mieux comprendre, j'ai joint une image reprenant ma grille.
Supposons donc que je me trouve en cellule 4-5.
j'ai déjà entré la valeur 2 en cellule 1-5
Je voudrais donc que lorsque j'aurai entré une valeur en cellule 4-5 (mettons la valeur 6), ca me vérifie que 6 n'existe pas déjà dans toute la colonne j5 (de 0-5 à 8-5) et dans toute la ligne i4 (de 4-0 à 4-8)
Pour ca il me faut utiliser du javascript en AJAX, à ce que j'ai cru comprendre
Sauf que je ne connais pas ce langage.
Quel code je pourrais appliquer pour cette vérification ?
Pour information, voici le code de ma grille générée :
include 'gen_grille.php'; // On prend en compte les données du fichier gen_grille.php
echo '<table width="200" border="1" style="border-style:solid;">';// On ouvre le tableau (la grille)
for ($i=0;$i<sizeof($Grille[0]);$i++){ // tant que tu n'a pas atteint la fin de Grille[0], soit 9 lignes, crée un <TR>
echo "<tr>";
for ($j=0;$j<sizeof($Grille[0]);$j++){// Pour chaque TR ouvert, tant que tu n'a pas atteint la fin de Grille[0], soit 9 lignes, crée un <TD>
// Ce qui va créer 9 colonnes pour chacune des 9 lignes (et donc faire une grille de 9/9)
$choix2 = array_pop($choix);// Pour chaque cellule que tu ouvres prend la dernière valeur de $choix (qui se trouve dans gen_grille.php) et stock-la dans $choix2
if ($i==2 || $i==5){ // si tu es à la 3 OU à la 6 ligne ([2] OU [5])
echo '<td style="border-bottom : 4px solid blue;">';// mets une bordure bleu de 4px en bas de la cellule
}
elseif ($j==2 || $j==5){// sinon si tu es à la colonne 3 OU la colone 6
echo '<td style="border-right : 4px solid blue;">';// mets une bordure bleu de 4px sur le coté droit
}
elseif ($i==2 && $j==5) {
echo '<td style="border-right : 4px solid blue; border-bottom : 4px solid blue;">';
}
else{
echo '<td>';
}
if (empty($choix)) {// Si $choix est vide, alors affiche que c'est vide)
echo 'vide';
}
else{ // Sinon, si $choix a encore une valeur, fait ça :
if($choix2==1){ // si la valeur choisie et stockée dans $choix2 = "1"
echo $Grille[$j][$i] ;// alors affiche moi la valeur de Grille[n°colonne où tu es][n°ligne où tu es]
}
else{
echo '<input type="text" name="'.$j.'-'.$i.'" id="'.$j.'-'.$i.'" maxlength="1" size="1" class="">';
// sinon, tu affiches un champs input pour que l'utilisateur le remplisse
}
echo '</td>';
}
}
echo "</tr>";
}
echo "</table>";
A noter :$choix est une array qui se situe dans gen_grille.php et qui renvoie aléatoirement 1 ou 0
En fonction de la valeur, cela permet soit d'afficher le numéro qui correspond dans $Grille[][], soit d'afficher un input
$Grille est un array à double entrée qui se situe aussi dans gen_grille.php et qui permet de générer ma table "source" de chiffres aléatoire
En espérant avoir été clair, sinon n'hésitez pas à me demander des précisions
Merci de votre aide