예감

[디자이너의 초보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년 전 조회 931
14년 전 조회 969
14년 전 조회 1,134
14년 전 조회 2,009
14년 전 조회 1,095
14년 전 조회 526
14년 전 조회 961
14년 전 조회 1,394
14년 전 조회 638
14년 전 조회 1,074
14년 전 조회 1,846
14년 전 조회 1,007
14년 전 조회 838
14년 전 조회 893
14년 전 조회 565
14년 전 조회 1,211
14년 전 조회 1,082
14년 전 조회 559
14년 전 조회 940
14년 전 조회 4,001
14년 전 조회 1,021
14년 전 조회 2,736
14년 전 조회 958
14년 전 조회 991
14년 전 조회 786
14년 전 조회 583
14년 전 조회 1,592
14년 전 조회 604
14년 전 조회 557
14년 전 조회 878
14년 전 조회 679
14년 전 조회 945
14년 전 조회 691
14년 전 조회 1,752
14년 전 조회 2,206
14년 전 조회 1,053
14년 전 조회 1,042
14년 전 조회 777
14년 전 조회 2,801
14년 전 조회 820
14년 전 조회 536
14년 전 조회 1,348
14년 전 조회 1,747
14년 전 조회 724
14년 전 조회 1,277
14년 전 조회 1,294
14년 전 조회 1,357
14년 전 조회 1,444
14년 전 조회 1,115
14년 전 조회 8,639
14년 전 조회 1,234
14년 전 조회 1,511
14년 전 조회 663
14년 전 조회 620
14년 전 조회 725
14년 전 조회 1,075
14년 전 조회 2,123
14년 전 조회 645
14년 전 조회 1,660
14년 전 조회 1,874
14년 전 조회 1,013
14년 전 조회 944
14년 전 조회 542
14년 전 조회 1,099
14년 전 조회 1,005
14년 전 조회 878
14년 전 조회 780
14년 전 조회 847
14년 전 조회 1,177
14년 전 조회 1,976
14년 전 조회 1,087
14년 전 조회 551
14년 전 조회 9,908
14년 전 조회 870
14년 전 조회 735
14년 전 조회 1,319
14년 전 조회 2,433
14년 전 조회 1,239
14년 전 조회 924
14년 전 조회 711
14년 전 조회 1,619
14년 전 조회 911
14년 전 조회 2,287
14년 전 조회 710
14년 전 조회 709
14년 전 조회 843
14년 전 조회 1,470
14년 전 조회 722
14년 전 조회 2,196
14년 전 조회 554
14년 전 조회 3,114
14년 전 조회 3,287
14년 전 조회 3,190
14년 전 조회 3,007
14년 전 조회 697
14년 전 조회 654
14년 전 조회 1,146
14년 전 조회 1,410
14년 전 조회 614
14년 전 조회 700
🐛 버그신고