@rusgayfer

Как создать HTML таблицу для игры морской бой?

Нужно создать такую таблицу через цикл, как сделать? Обычными цифрами слева и справа получается, а вот так с одним пробелом и буквами нет. Таблица может быть от 10x10 до 100х100.

62e6c186d888d224266839.jpeg

Моя таблица сейчас
<div class="table">

<?php
        <div class="table">

<?php

if(isset($_POST['size'])) {

    $rows = $_POST['size']; // количество строк, tr
    $cols = $_POST['size']; // количество столбцов, td

for ($tr=1; $tr<=$rows; $tr++){ // в этом цикле счётчик $tr 
    // следит за количеством строк и всегда равен текущему номеру строки.
    // То есть в начале $tr=1, так как в начале у нас 1 строка, затем
    // каждый раз прибавляем единицу, пока не дойдём до заданного количества
    // $rows.
    echo '<i>';
    for ($td=1; $td <= $cols; $td++){ // в этом цикле счётчик $td аналогичен
                                    // счётчику $tr.
        echo '<i>'. $tr*$td .'</i>';
    }
    echo '</i>';
}

}

?>

</div>
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
Для таблицы 10 х 10 понадобится выводить 11 х 11, ведь добавляются заголовки строк / столбцов.

HTML лучше собирать в одной переменной. И вывести её в самом конце.

Сделайте для начала без динамики, без всех этих $_POST['size'] статичную таблицу 3х3.
1, 2, 3; А, Б, В

$size = 3;
$rowTitles = explode(',', 'А,Б,В,Г,Д,Е,Ж,З,И,К');

$html = '';
for ($row = 0; $row <= $size; $row++) {
    $tr = '';
    for ($col = 0; $col <= $size; $col++) {
        if ($row === 0) {
            // строка с номерами столбцов
            if ($col === 0) {
                $tr .= '<th></th>'; // угловая пустая ячейка
            } else {
                $tr .= '<th>' . $col . '</th>'; // название столбца
            }
        } else {
            // строка с обычными клеточками
            if ($col === 0) {
                // название строки
                $tr .= '<th>' . $rowTitles[$row - 1] . '</th>';
            } else {
                // обычная клеточка
                $tr .= '<td>' . $rowTitles[$row - 1] . $col . '</td>';
            }
        }
    }
    $html .= $tr . PHP_EOL;
}

$html = '<table><tbody>' . $html . '</tbody></table>';

echo $html;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
01 мая 2024, в 16:45
120000 руб./за проект
01 мая 2024, в 15:48
18000 руб./за проект
01 мая 2024, в 15:17
500 руб./в час