예감

[디자이너의 초보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값이 있는지 검사하는 구문을 찾고 있었는데..
이곳에서 힌트를 얻었습니다.
좋은정보 감사합니다^^
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
14년 전 조회 939
14년 전 조회 982
14년 전 조회 1,149
14년 전 조회 2,020
14년 전 조회 1,117
14년 전 조회 541
14년 전 조회 972
14년 전 조회 1,405
14년 전 조회 652
14년 전 조회 1,087
14년 전 조회 1,858
14년 전 조회 1,017
14년 전 조회 848
14년 전 조회 907
14년 전 조회 578
14년 전 조회 1,220
14년 전 조회 1,093
14년 전 조회 569
14년 전 조회 949
14년 전 조회 4,011
14년 전 조회 1,037
14년 전 조회 2,743
14년 전 조회 971
14년 전 조회 1,006
14년 전 조회 795
14년 전 조회 596
14년 전 조회 1,603
14년 전 조회 618
14년 전 조회 569
14년 전 조회 892
14년 전 조회 689
14년 전 조회 956
14년 전 조회 709
14년 전 조회 1,762
14년 전 조회 2,221
14년 전 조회 1,067
14년 전 조회 1,052
14년 전 조회 782
14년 전 조회 2,809
14년 전 조회 834
14년 전 조회 548
14년 전 조회 1,362
14년 전 조회 1,760
14년 전 조회 739
14년 전 조회 1,289
14년 전 조회 1,304
14년 전 조회 1,367
14년 전 조회 1,461
14년 전 조회 1,128
14년 전 조회 8,649
14년 전 조회 1,246
14년 전 조회 1,517
14년 전 조회 671
14년 전 조회 631
14년 전 조회 733
14년 전 조회 1,086
14년 전 조회 2,131
14년 전 조회 650
14년 전 조회 1,669
14년 전 조회 1,882
14년 전 조회 1,023
14년 전 조회 956
14년 전 조회 546
14년 전 조회 1,113
14년 전 조회 1,017
14년 전 조회 885
14년 전 조회 790
14년 전 조회 857
14년 전 조회 1,189
14년 전 조회 1,990
14년 전 조회 1,097
14년 전 조회 560
14년 전 조회 9,927
14년 전 조회 880
14년 전 조회 744
14년 전 조회 1,326
14년 전 조회 2,443
14년 전 조회 1,251
14년 전 조회 939
14년 전 조회 723
14년 전 조회 1,625
14년 전 조회 914
14년 전 조회 2,290
14년 전 조회 719
14년 전 조회 721
14년 전 조회 849
14년 전 조회 1,478
14년 전 조회 730
14년 전 조회 2,203
14년 전 조회 567
14년 전 조회 3,121
14년 전 조회 3,294
14년 전 조회 3,199
14년 전 조회 3,011
14년 전 조회 713
14년 전 조회 658
14년 전 조회 1,155
14년 전 조회 1,422
14년 전 조회 624
14년 전 조회 711
🐛 버그신고