예감

[디자이너의 초보PHP강의 08] DB에서 값 불러오기

솔직히....정상적으로 php를 공부한것이 아니기 때문에...알고 있는 부분만 적습니다.
다른 방법도 존재할것이고...더 좋은 방법이 있지만....아는 부분까지만 올릴게요
 
DB에서 값을 불러올때는
 
$sql = " select * from g4_member where mb_1 = '남자'  order by mb_id limit 10 ";
$result = sql_query($sql);
$row=sql_fetch_array($result);
 
이런식으로 표현을 합니다.
하나하나 짚어보자면
 
select * from g4_member where mb_1 = '남자'  order by mb_id limit 10 
이것이 DB에 연결해서 데이터를 불러오도록 설정하는 것입니다
 
* 는 g4_memmber 테이블에 있는 모든 필드값을 불러오라는 것이고
 
where mb_1 = '남자'  는 조건을 주어서 조건에 맞는 것만 불러오도록 하는 것입니다. mb_1 필드값이 '남자' 인 게시물을 찾으라는 것이지요
 
order by 는 게시물을 불러왔을때 정렬해 주는 것이고
limit 는 불러오는 갯수를 정해주는 것입니다.
 
이제 쉽죠...??
 
데이터가 있을때 원하는 부분만 불러올때는 저런식으로 값을 넣어서...불러오면 됩니다.
예를 들어 회원레벨이 5에서 7인 회원데이터를 불러오고자 할때에는
 
select * from g4_member where mb_level >= '5' and mb_level <= '7'  이런식으로 조건을 넣어주면 됩니다.
 
보시면 알겠지만 mb_level >= '5' and mb_level <= '7' 조건부분에 두가지 내용이 들어가 있죠??
 
두개다 만족하는 게시물을 찾을때에는 and를 넣어주면 되고 둘중에 한조건만 만족을 주는 것을 찾을때에는
or를 넣어주면 됩니다. and와 or는 완전히 다른 의미입니다
 
select * from g4_member where mb_level >= '5' or mb_level <= '7'
이렇게 되면 회원레벨이 5이상인 회원을 다 불러오는 것이고 또 7이하인 회원을 다 불러오는 것이기 때문에 결국 회원전체를 불러오게 되는 조건이 되어 버립니다.
 
select * from g4_member where mb_level = '5' and mb_level = '7' 
이렇게 넣어주면 회원레벨이 5이면서 7인 회원을 불러오라고 하는 것입니다.....말이 이상하죠??...결국 데이터가 아무것도 없게되죠?
 
근데? 한가지 이상하죠?
 
php구문에서는 == 가 같다는 의미였는데..db불러올때에는 = 가 한개가 들어갑니다...이유는...저도 몰라요..그렇게 씁니다...두개 들어가면 에러나요...ㅜㅜ
 
그리고
$row=sql_fetch_array($result); 부분이 있습니다.
 
$row가 값을 표현해주는 방식입니다
 
<?=$row[mb_1]?>
이렇게 불러와 주시면 됩니다.
 
$row_mb=sql_fetch_array($result); 이렇게 하면
<?=$row_mb[mb_1]?> 이렇게 되겠죠???
 
그리고
 
게시물의 갯수를 구할때에는
 
$sql_cnt = " select count(*) as cnt from g4_member where mb_1 = '남자'";
$row_cnt = sql_fetch($sql_cnt);
$total_count = $row_cnt[cnt];
 
이렇게 처리하면 됩니다.  g4_member 테이블에서 $mb_1 값이 남자인 게시물의 게수를 구하는 것이지요
$total_count  값이 그 값입니다.
 
order by mb_1 asc
는 데이터 정렬 방식인데 asc는 오름차순을 뜻하며, 일반적으로 생략합니다.
그리고 desc는 내림차순을 뜻하는 거구여. 생략할 수 없습니다.
 
order by mb_1 desc    mb_1 값을 기준으로 내림차순으로 정렬하는 것이지요
 
보통 게시판 리스트에서는 게시물이 많이 때문에 for 문을 이용하여 불어옵니다.
 
<?php
 
$sql = " select * from g4_member where mb_1 = '남자'  order by mb_id limit 10 ";
$result = sql_query($sql);
?>
<table width=100% cellpadding=0 cellspacing=0>
<tr>
<td class='biz_bbs_left'></td>
<td class='biz_bbs_bg' width=90><b>게시판아이디</td>
<td class='biz_bbs_bg'><b>게시판이름</td>
<td class='biz_bbs_bg' width=80><b>게시판스킨</td>
<td class='biz_bbs_bg' width=80><b>카테고리사용</td>
<td class='biz_bbs_bg' width=80><b>읽기권한</td>
<td class='biz_bbs_bg' width=80><b>쓰기권한</td>
<td class='biz_bbs_bg' width=50><b>삭제</td>
<td class='biz_bbs_bg' width=50><b>보기</td>
<td class='biz_bbs_right'></td>
</tr>
<?
for ($i=0; $row=sql_fetch_array($result); $i++) {
    
$list = $i%2;
 
    echo "
    <tr>
  <td height=35></td>
        <td align=center><b>$row[bbs_id]</td>
        <td align=center>$row[bbs_name]</td>
        <td align=center>$row[bbs_skin]</td>
  <td align=center>$checked</td>
        <td align=center>".get_biz_level("$row[biz_id]", $row[bbs_read_level])."[$row[bbs_read_level]]</td>
  <td align=center>".get_biz_level("$row[biz_id]", $row[bbs_write_level])."[$row[bbs_write_level]]</td>
  <td align=center>$s_del</td>
  <td align=center>$s_mod</td>
  <td></td>
    </tr>
 <tr><td colspan='$colspan' class='biz_bbs_line2'></td></tr>";
}
if ($i == 0)
    echo "<tr><td colspan='$colspan' align=center height=150>자료가 없습니다.</td></tr>";
echo "<tr><td colspan=$colspan class='biz_bbs_line2'></td></tr>
</table>";
?>
 
이런식으로 해서 해당값을 가지는 게시물만 불러와서 보여주는 것입니다.
 
참 쉽죠????

댓글 6개

좋은 정보를 이행하기 쉽게 올려주시는 분들이있어 초보자들이 편하겠네요.. ^^
$list = $i%2;
이부분의 설명이 있을줄 알았는데 ㅠㅠ 아쉽지만 잘보고 가요 ^^
감사합니다.ㅎ
테이블에 특정 id값이 있는지 검사하는 구문을 찾고 있었는데..
이곳에서 힌트를 얻었습니다.
좋은정보 감사합니다^^
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
11-10-25 조회 2,509
11-10-18 조회 4,049
11-10-18 조회 2,434
11-10-15 조회 3,652
11-10-10 조회 2,709
11-10-02 조회 2,610
11-09-28 조회 2,430
11-09-24 조회 2,520
11-09-22 조회 2,415
11-09-05 조회 2,900
11-08-31 조회 2,284
11-08-31 조회 2,596
11-08-31 조회 2,448
11-08-29 조회 2,985
11-08-28 조회 2,486
11-08-25 조회 2,537
11-08-17 조회 2,253
11-08-16 조회 2,488
11-08-11 조회 2,951
11-08-07 조회 2,656
11-08-03 조회 2,362
11-07-22 조회 2,109
11-07-12 조회 3,327
11-06-27 조회 2,105
11-06-01 조회 1,770
11-05-17 조회 2,565
11-05-01 조회 2,624
11-04-28 조회 2,913
11-04-28 조회 2,973
11-04-13 조회 2,626
11-03-27 조회 2,754
11-03-27 조회 2,625
11-03-14 조회 2,042
11-03-02 조회 2,361
11-03-02 조회 2,596
11-02-27 조회 3,021
11-02-23 조회 2,399
11-02-19 조회 2,542
11-02-14 조회 4,157
11-02-03 조회 2,944
11-01-24 조회 3,894
11-01-04 조회 2,427
10-12-08 조회 5,434
10-11-15 조회 2,445
10-11-14 조회 2,631
10-11-14 조회 3,652
10-10-29 조회 3,713
10-10-19 조회 2,727
10-10-07 조회 2,557
10-10-05 조회 4,469
10-09-18 조회 2,765
10-09-18 조회 2,507
10-09-17 조회 4,916
10-09-15 조회 2,851
10-09-15 조회 2,386
10-09-15 조회 2,870
10-09-15 조회 2,703
10-09-11 조회 4,034
10-09-11 조회 2,528
10-09-11 조회 2,579
10-09-07 조회 3,848
10-09-07 조회 3,391
10-08-29 조회 2,855
10-07-01 조회 3,098
10-06-30 조회 2,503
10-06-30 조회 2,680
10-06-30 조회 3,032
10-06-13 조회 2,068
10-04-15 조회 3,242
10-04-04 조회 3,475
10-02-23 조회 3,583
10-02-09 조회 3,170
10-01-25 조회 2,683
10-01-25 조회 2,786
09-12-27 조회 4,419
09-11-23 조회 3,642
09-11-20 조회 4,889
09-08-30 조회 3,076
09-08-30 조회 3,071
09-08-12 조회 3,042
09-07-22 조회 4,097
09-07-22 조회 4,755
09-07-15 조회 5,913
09-07-11 조회 2,995
09-06-17 조회 2,727
09-06-15 조회 3,019
09-05-29 조회 3,303
09-05-11 조회 5,939
09-05-08 조회 2,698
09-04-30 조회 3,808
09-04-17 조회 3,134
09-04-04 조회 3,316
09-03-05 조회 3,697
09-02-09 조회 3,670
09-02-03 조회 6,170
08-12-27 조회 3,232
08-12-20 조회 4,314
08-11-21 조회 5,275
08-11-14 조회 2,852
08-11-03 조회 3,309