|

pHP 입문 – table 자료 구조

php 입문- table 자료 구조

php는 굉장히 직관적이고 합리적이다. 여러 자료형이 있고, 어디서 많이 본 듯한 구조들과 단순한 구성으로 앵간한 자료형은 기초만 알면 생각하는 대로 다 쓸 수 있다.

php table 자료 구조는 크게 3가지 계층으로 나뉜다. table 전체를 이루는 table, 한 행을 이루는 row, 한 행에서의 한 칸 또는 데이터를 담당하는 dt가 있다. 행과 열을 이용한 구조가 아니지만, 한 데이터 뭉치가 행을 이루고, 여러 행이 모여 한 테이블을 이룬다는 사실은 자명하고, 어렵지 않게 사용할 수 있다.

가장 대표적인 예시인, 달력을 만들어 가면서 한 번 제대로 배워보자.

PHP
<table> // table을 앞으로 만들겠다고 선언하는 태그이다. 이 태그를 닫을 때까지의 내용물(행)은 이 태이블에 포함된다. border, width 등등의 속성도 바꿀 수 있다.

<tr> // table을 만든 후, 행을 만들겠다는 태그이다. 이 행 역시 닫을 때까지 이후의 데이터들은 모두 이 행에 포함된다. ( tmi : 행을 영타로 치면 god이다. 신기할 따름이다.)

<td> // 이 자료 구조의 최소 단위인 data를 만들고 앞으로 닫을 때까지의 내용물을 데이타에 담겠다는 의미이다. 

 test // 이게 그 내용물

</td>// 그리고 모든 태그는 이렇게 슬래시를 앞에 붙혀 태그를 닫는다. 하나의 태그에는 꼭 하나의 닫는 태그가 필요하다

<td> test </td> // 똑같은 데이터를 여러개 만들자

<td> test </td>

<td> test </td>

<td> test </td> 

<td> test </td>

</tr> // 그리고 모든 태그는 이렇게 슬래시를 앞에 붙혀 태그를 닫는다. 행 또한 마찬가지다

<tr> // 행을 닫았으니, 새로운 행을 또 열어주자

<td> test </td>

<td> test </td>

<td> test </td>

<td> test </td> 

<td> test </td>

<td> test </td>. 당연히 while, for문 등을 이용해서 10번 반복하는게 정신건강에 이롭다

</tr>

</table> // 드디어 테이블을 닫는다. 이걸로 우리는 이쁜 테이블 하나를 완성했다. test로 가득 찬 2행짜리 table이다.

<table border = "1"> // 이번에는 조건문과 반복문들을 이용해서 테이블을 만들어보자. 이번엔 태두리도 넣어봤다.

<?php 

for ($i = 1; $i <=10; $i++) echo "<td width='20px'> $i </td>" ;  // 1부터 10까지를 반복문을 통해 데이타로 만들었다.

?>

</tr> //tr을 처음에 따로 선언해주지 않았지만, 어짜피 1행짜리기 떄문에 괜찮다.

</table>
PHP
<?php

$now = "2025-09-01";

$nowdate = strtotime($now);

echo date("t", $nowdate) ;

echo date("w",$nowdate);

$start = date("w",$nowdate);

$end = date("t", $nowdate) ;

?>

//php의 timestamp를 이용해 본격적인 캘린더를 만들어보자.  now 변수에 정석적 형태의 날짜를 저장하고 timestamp를 이용해 날짜를 쉽게 인덱싱하게끔 합자

<table border = "1">

<tr>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

<td></td>

</tr>

//날짜부터 써줍시다

<?php

echo "<tr>" ;

for($i=0;$i<$start;$i++) {

    echo "<td> </td>" ;

}

//꼭 월요일은 아닌 1일부터 시작하기에, 행을 맞춰주기 위한 공백 데이터를 넣어주어야 한다.

$col = $start ;

for($i=1;$i<=$end;$i++){

    echo "<td> $i </td>" ;

    $col++ ;

    if ($col % 7 === 0){

        echo "</tr> <tr>" ;

    }

}

while ($col%7 !==0 ){

    echo "<td></td>" ;

    $col++;

}

?>

//조건문이다. 7번마다 줄바꿈을 통해 새로운 행으로 이동하고, 캘린더의 형식에 맞춰 날짜를 채워주자

</tr> </table>

<br>

<?php

function show_calander($date){

    // // 어떤 달의 캘린더를 보여주는 달력을 이번에는 함수로 만들어보자. php의 테이블 메소드를 이용하여 달력을 출력해보자.

    $now = $date;

    $nowdate = strtotime($now); // strtotime, xxxx-xx-xx 

    $start = date("w",$nowdate);

    $end = date("t", $nowdate) ;

echo $date; //편의상 캘린더를 출력하기 위한 날짜도 출력해보자.

    echo '<table border = "1">';

    echo '<tr>';

    echo '<td> 일 </td>';

    echo '<td> 월 </td>';

    echo '<td> 화 </td>';

    echo '<td> 수 </td>';

    echo '<td> 목 </td>';

    echo '<td> 금 </td>';

    echo '<td> 토 </td>';

    echo '</tr>';

    echo "<tr>" ;

    for($i=0;$i<$start;$i++) {

        echo "<td> </td>" ;

    }

    $col = $start ;

    for($i=1;$i<=$end;$i++){

        echo "<td> $i </td>" ;

        $col++ ;

        if ($col % 7 === 0){

            echo "</tr> <tr>" ;

        }

    }

    while ($col%7 !==0 ){

        echo "<td></td>" ;

        $col++;

    }

    echo "</tr> </table> ";

}

?>

//아까 예제에서 만든 걸 날짜만 입력하면 되게끔 일반화하여 함수로 만들었다. 

<br>

<php

show_calander("1997-6-16");

?>

// 그대로 복사해서 실행해 보자. 함수가 정의된 대로, 1997년 6월의 달력이 출력될 거다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다