2010-11-18 3 views
1

est ici très simple Sudoku like HTML table.Générer un « Sudoku comme » Tableau HTML avec PHP

Ce que je veux est de générer ce avec PHP compte tenu de ce qui suit.

Chaque cellule devrait ressembler à ceci (ou similaire):

<!-- Position "a1" --> 

<?php 
if ($a1_pos_txt !== TRUE){ 

    echo "<td>" . $numbers["a1_pos"] . "</td>"; 

}else{ 

?> 

<td><input type="text" name="a1_post" size="1" maxlength="1" /></td> 

<?php 
} 
?> 

Ceci est évidemment la cellule "A1".

Juste au cas où, "c4" et "f9" devrait ressembler à THIS.

Ainsi, la table générée par PHP devrait ressembler THIS et ainsi de suite pour toutes les lignes. Comme je l'ai dit, et je ne veux pas copier et coller ce code et remplacer a1 pour a2 et ainsi de suite 81 fois, je veux que sa table et ses variables soient générées dynamiquement avec PHP.

J'ai essayé de le rendre aussi clair que possible avec tout le code que je pourrais fournir mais s'il vous plaît demander si vous avez besoin de clarifications !!!

NOTE: Désolé pour le choix merdique dans les variables ($a1_pos_txt, $a1_pos et a1_post) pas vert amical :)

Répondre

3

Cela devrait le faire:

$lit = range('A', 'J'); 
echo '<table border="1">'; 
for($y = 0; $y < 9; $y++) { 
    echo '<tr>'; 
    for($x = 0; $x < 9; $x++) { 
     $block = floor($x/3) + floor($y/3) * 3; 
     $cell = ($x % 3 + 1) + ($y % 3) * 3; 
     echo '<td>'.$lit[$block].$cell.'</td>'; 
    } 
    echo '</tr>'; 
} 
echo '</table>'; 

Sortie:

A1 A2 A3 B1 B2 B3 C1 C2 C3 
A4 A5 A6 B4 B5 B6 C4 C5 C6 
A7 A8 A9 B7 B8 B9 C7 C8 C9 
D1 D2 D3 E1 E2 E3 F1 F2 F3 
D4 D5 D6 E4 E5 E6 F4 F5 F6 
D7 D8 D9 E7 E8 E9 F7 F8 F9 
G1 G2 G3 H1 H2 H3 I1 I2 I3 
G4 G5 G6 H4 H5 H6 I4 I5 I6 
G7 G8 G9 H7 H8 H9 I7 I8 I9 

peut probablement être simplifié un peu, mais devrait vous donner ce que vous avez besoin. $block est la grille de 3x3 en cours, et $cell est le nombre de cellules dans cette grille.

EDIT

j'ai vérifié votre exemple et cela pourrait ne pas être ce que vous vouliez. Apparemment, vous voulez A pour la première rangée, B pour la deuxième, etc, pas par bloc 3x3. Voici comment vous pouvez faire:

echo '<table border="1">'; 
foreach(range('A', 'J') as $y) { 
    echo '<tr>'; 
    for($x = 1; $x <= 9; $x++) { 
     echo '<td>'.$y.$x.'</td>'; 
    } 
    echo '</tr>'; 
} 
echo '</table>'; 

Sortie:

A1 A2 A3 A4 A5 A6 A7 A8 A9 
B1 B2 B3 B4 B5 B6 B7 B8 B9 
C1 C2 C3 C4 C5 C6 C7 C8 C9 
D1 D2 D3 D4 D5 D6 D7 D8 D9 
E1 E2 E3 E4 E5 E6 E7 E8 E9 
F1 F2 F3 F4 F5 F6 F7 F8 F9 
G1 G2 G3 G4 G5 G6 G7 G8 G9 
H1 H2 H3 H4 H5 H6 H7 H8 H9 
I1 I2 I3 I4 I5 I6 I7 I8 I9 
J1 J2 J3 J4 J5 J6 J7 J8 J9 
+0

WOW qui a l'air vraiment bien, je vais certainement y aller !! Merci!!! – Trufa

+0

Merci pour la mise à jour que j'essaie de suivre et de l'appliquer. Je vous remercie!! – Trufa

+0

Le seul c'est que ce que je voulais réellement générer ne sont pas les exemples "a1" "b2" je modifie en particulier votre code pour ce cas, merci de me mettre dans la bonne direction. – Trufa

0

PHP supporte les tableaux de tableaux (ou matrice). Créer un tableau de 0 à 8, et chaque valeur doit également être un tableau de 0 à 8.

Lorsque votre matrice 9x9 est construit - à déterminer quelles valeurs vous voulez répondre et mettre ceux true $answers[1][3] = true

Créez ensuite 2 boucles for et imprimez la totalité de votre tableau. Votre outter pour boucle devra également imprimer des étiquettes <tr>.

+0

Ok merci, je pense que je reçois votre approche, mais je ne suis pas sûr de ce que vous entendez par: « à déterminer quelles valeurs vous voulez être répondu "Désolé, merci !! – Trufa

Questions connexes