문제문제 정보
문제문제본문
이미지를 누르면 파라미터 값을 주게 했는데요.
쇼핑몰 리스트에요.
리스트에 두가지 분류로 보이게했어요.
하나는
$query = " select * from tb_product2 where seq is not null and bcode = '$bid' and cate_good='Y' order by writetime desc limit 4";
다른하나는
$query = " select * from tb_product2 where seq is not null and bcode = '$bid' order by writetime desc limit 4";
이런식으로 하나는 cate_good='Y' 인 제품이 나오게해고 다른하나는 그냥 cate_good='Y' 조건을 주지 않고 제품을 나오게 했어요.
여기서 bcode의 파라미터값을 주면 bcode값에 맞게 물품이 나타나는데요.
이게 위에 쿼리문이 첫번째쿼리문은 먹히는대요.
두번째 쿼리문은 cate_good='Y' 가 없이 where절을 줬는데 cate_good='Y' 이게 나오는거에요
두번째 쿼리문이 첫번째 쿼리문의 영향을 받는거 같아요 ㅠㅠ
왜그럴까요?ㅠ
첫번째와 두번째가 똑같은 제품이 나와요 ㅠㅠ
<?
// 신상품 SQL 쿼리문
$query = " select * ";
$query .= " from tb_product2 ";
$query .= " where seq is not null ";
$query .= "and bcode = '$bid' ";
$query .= " and cate_good='Y' ";
$query .= " order by writetime desc limit 4";
$result = mysql_query($query) or die (mysql_error()); // 쿼리문을 실행 결과
$total_no = mysql_num_rows($result);
if($total_no == 0) {
?>
<?
} else {
$t_number_idx = 1;
while ($array = mysql_fetch_array($result)) {
$rot_num += 1;
$seq = $array[seq];
$webgub = stripslashes($array[webgub]); //웹구분
$bcode = stripslashes($array[bcode]); //대분류코드
$mcode = stripslashes($array[mcode]); //중분류코드
$pcode = stripslashes($array[pcode]); //상품코드
--생략--
if($update == "0000-00-00") $update = "-";
?>
<? if ($rot_num =="1") {?>
<div class="best_img"><? if($img1 != "") { ?>
<a href="product_view.php?seq=<?=$seq?>" target="_parent"><img src="/goods_img/<?=($img1)?>" border="0" width="321" height="205"></a>
<? } else { ?>
<img src="../img/main/noimg_main.gif" width="321" height="205" >
<? } ?></div>
<?} ?>
<? if ($rot_num == "2") {?>
<div class="best_img02">
<? if($img1 != "") { ?>
<a href="product_view.php?seq=<?=$seq?>" target="_parent"><img src="/goods_img/<?=($img1)?>" border="0" width="238" height="160"></a>
<? } else { ?>
<img src="../img/main/noimg_main.gif" width="238" height="160" >
<? } ?></div>
<? } ?>
<? if ($rot_num == "3") {?>
<div class="best_img02">
<? if($img1 != "") { ?>
<a href="product_view.php?seq=<?=$seq?>" target="_parent"><img src="/goods_img/<?=($img1)?>" border="0" width="238" height="160"></a>
<? } else { ?>
<img src="../img/main/noimg_main.gif" width="238" height="160" >
<? } ?></div>
<? } ?>
<?
$t_number_idx++;
}
}
?>
<?
$tablename = "tb_product2"; //테이블명
$tablename_b = "menu_cate1"; //테이블명
$tablename_m = "menu_cate2"; //테이블명
$foldername = "/goods_img/"; //폴더 이름
if($page == '') $page = 1; //페이지 번호가 없으면 1
$list_num = 16; //한 페이지에 보여줄 목록 갯수
$page_num = 10; //한 화면에 보여줄 페이지 링크(묶음) 갯수
$offset = $list_num*($page-1); //한 페이지의 시작 글 번호(listnum 수만큼 나누었을 때 시작하는 글의 번호)
//페이지 링크주소 매개변수를 여러개 넘길때는 끝에 '&' 추가
$link_url = "$PHP_SELF?bid=$bid&mid=$mid&search=$search&search_text=$search_text&bcode=$bcode&mcode=$mcode&divgb=$divgb&maingb=$maingb&";
if ($bcode != "") $qry_where = "and bcode = '$bcode' ";
if ($mcode != "") $qry_where = $qry_where . " and mcode = '$mcode' ";
if ($divgb != "") $qry_where = $qry_where . " and divgb = '$divgb' ";
if($maingb != "") $qry_where = $qry_where . " and maingb = '$maingb' ";
if($bid != "") $qry_where = $qry_where . " and bcode = '$bid' ";
if($mid != "") $qry_where = $qry_where . " and mcode = '$mid' ";
if ($search != "") $qry_where = $qry_where . " and $search like '%$search_text%'" ;
//전체 글 수를 구합니다. (쿼리문을 사용하여 결과를 배열로 저장하는 일반적인 방법)
$query="select count(*) from $tablename where seq is not null "; // SQL 쿼리문을 문자열 변수에 일단 저장하고
$query = $query." $qry_where ";
$result=mysql_query($query) or die (mysql_error()); // 위의 쿼리문을 실제로 실행하여 결과를 result에 저장한 다음
$row=mysql_fetch_row($result); //위 결과 값을 하나하나 배열로 저장합니다.
$total_no=$row[0]; //배열의 첫번째 요소의 값, 즉 테이블의 전체 글 수를 저장합니다.
//전체 페이지 수와 현재 글 번호를 구합니다.
$total_page=ceil($total_no/$list_num); // 전체글수를 페이지당글수로 나눈 값의 올림 값을 구합니다.
$cur_num=$total_no - $list_num*($page-1); //현재 글번호
//bbs테이블에서 목록을 가져옵니다. (위의 쿼리문 사용예와 비슷합니다.)
$query = "select * from $tablename where seq is not null "; // SQL 쿼리문
$query = $query." $qry_where order by seq desc limit $offset, $list_num";
$result=mysql_query($query) or die (mysql_error()); // 쿼리문을 실행 결과
//쿼리 결과를 하나씩 불러와 실제 HTML에 나타내는 것은 HTML 문 중간에 삽입합니다.
$loop_num = 0;
while ($array = mysql_fetch_array($result)) {
$rot_num += 1;
$seq = $array[seq];
$webgub = stripslashes($array[webgub]); //웹구분
$bcode = stripslashes($array[bcode]); //대분류코드
$mcode = stripslashes($array[mcode]); //중분류코드
$pcode = stripslashes($array[pcode]); //상품코드
--생략--
if($update == "0000-00-00") $update = "-";
$boolnull = $rot_num % 4;
if ($boolnull == 0) {
$bgcol = "bgcolor='#FFFFFF'";
} else {
$bgcol = "";
}
$remnant = $loop_num % 4;
if($remnant == 0) {
echo "
</tr>
<tr>
";
}
?>
<!--제품이미지 들어갈 곳 -->
<? if($img1 != "") { ?>
<a href="javascript:go_view('<?=$seq?>');"><img src="<?=$foldername?><?=imageKor($img1)?>" border="0" width="238" height="160"></a>
<? } else { ?>
<img src="../img/main/noimg_main.gif" width="238" height="160" >
<? } ?>
<?
$loop_num++;
} // end while
?>
쇼핑몰 리스트에요.
리스트에 두가지 분류로 보이게했어요.
하나는
$query = " select * from tb_product2 where seq is not null and bcode = '$bid' and cate_good='Y' order by writetime desc limit 4";
다른하나는
$query = " select * from tb_product2 where seq is not null and bcode = '$bid' order by writetime desc limit 4";
이런식으로 하나는 cate_good='Y' 인 제품이 나오게해고 다른하나는 그냥 cate_good='Y' 조건을 주지 않고 제품을 나오게 했어요.
여기서 bcode의 파라미터값을 주면 bcode값에 맞게 물품이 나타나는데요.
이게 위에 쿼리문이 첫번째쿼리문은 먹히는대요.
두번째 쿼리문은 cate_good='Y' 가 없이 where절을 줬는데 cate_good='Y' 이게 나오는거에요
두번째 쿼리문이 첫번째 쿼리문의 영향을 받는거 같아요 ㅠㅠ
왜그럴까요?ㅠ
첫번째와 두번째가 똑같은 제품이 나와요 ㅠㅠ
<?
// 신상품 SQL 쿼리문
$query = " select * ";
$query .= " from tb_product2 ";
$query .= " where seq is not null ";
$query .= "and bcode = '$bid' ";
$query .= " and cate_good='Y' ";
$query .= " order by writetime desc limit 4";
$result = mysql_query($query) or die (mysql_error()); // 쿼리문을 실행 결과
$total_no = mysql_num_rows($result);
if($total_no == 0) {
?>
<?
} else {
$t_number_idx = 1;
while ($array = mysql_fetch_array($result)) {
$rot_num += 1;
$seq = $array[seq];
$webgub = stripslashes($array[webgub]); //웹구분
$bcode = stripslashes($array[bcode]); //대분류코드
$mcode = stripslashes($array[mcode]); //중분류코드
$pcode = stripslashes($array[pcode]); //상품코드
--생략--
if($update == "0000-00-00") $update = "-";
?>
<? if ($rot_num =="1") {?>
<div class="best_img"><? if($img1 != "") { ?>
<a href="product_view.php?seq=<?=$seq?>" target="_parent"><img src="/goods_img/<?=($img1)?>" border="0" width="321" height="205"></a>
<? } else { ?>
<img src="../img/main/noimg_main.gif" width="321" height="205" >
<? } ?></div>
<?} ?>
<? if ($rot_num == "2") {?>
<div class="best_img02">
<? if($img1 != "") { ?>
<a href="product_view.php?seq=<?=$seq?>" target="_parent"><img src="/goods_img/<?=($img1)?>" border="0" width="238" height="160"></a>
<? } else { ?>
<img src="../img/main/noimg_main.gif" width="238" height="160" >
<? } ?></div>
<? } ?>
<? if ($rot_num == "3") {?>
<div class="best_img02">
<? if($img1 != "") { ?>
<a href="product_view.php?seq=<?=$seq?>" target="_parent"><img src="/goods_img/<?=($img1)?>" border="0" width="238" height="160"></a>
<? } else { ?>
<img src="../img/main/noimg_main.gif" width="238" height="160" >
<? } ?></div>
<? } ?>
<?
$t_number_idx++;
}
}
?>
<?
$tablename = "tb_product2"; //테이블명
$tablename_b = "menu_cate1"; //테이블명
$tablename_m = "menu_cate2"; //테이블명
$foldername = "/goods_img/"; //폴더 이름
if($page == '') $page = 1; //페이지 번호가 없으면 1
$list_num = 16; //한 페이지에 보여줄 목록 갯수
$page_num = 10; //한 화면에 보여줄 페이지 링크(묶음) 갯수
$offset = $list_num*($page-1); //한 페이지의 시작 글 번호(listnum 수만큼 나누었을 때 시작하는 글의 번호)
//페이지 링크주소 매개변수를 여러개 넘길때는 끝에 '&' 추가
$link_url = "$PHP_SELF?bid=$bid&mid=$mid&search=$search&search_text=$search_text&bcode=$bcode&mcode=$mcode&divgb=$divgb&maingb=$maingb&";
if ($bcode != "") $qry_where = "and bcode = '$bcode' ";
if ($mcode != "") $qry_where = $qry_where . " and mcode = '$mcode' ";
if ($divgb != "") $qry_where = $qry_where . " and divgb = '$divgb' ";
if($maingb != "") $qry_where = $qry_where . " and maingb = '$maingb' ";
if($bid != "") $qry_where = $qry_where . " and bcode = '$bid' ";
if($mid != "") $qry_where = $qry_where . " and mcode = '$mid' ";
if ($search != "") $qry_where = $qry_where . " and $search like '%$search_text%'" ;
//전체 글 수를 구합니다. (쿼리문을 사용하여 결과를 배열로 저장하는 일반적인 방법)
$query="select count(*) from $tablename where seq is not null "; // SQL 쿼리문을 문자열 변수에 일단 저장하고
$query = $query." $qry_where ";
$result=mysql_query($query) or die (mysql_error()); // 위의 쿼리문을 실제로 실행하여 결과를 result에 저장한 다음
$row=mysql_fetch_row($result); //위 결과 값을 하나하나 배열로 저장합니다.
$total_no=$row[0]; //배열의 첫번째 요소의 값, 즉 테이블의 전체 글 수를 저장합니다.
//전체 페이지 수와 현재 글 번호를 구합니다.
$total_page=ceil($total_no/$list_num); // 전체글수를 페이지당글수로 나눈 값의 올림 값을 구합니다.
$cur_num=$total_no - $list_num*($page-1); //현재 글번호
//bbs테이블에서 목록을 가져옵니다. (위의 쿼리문 사용예와 비슷합니다.)
$query = "select * from $tablename where seq is not null "; // SQL 쿼리문
$query = $query." $qry_where order by seq desc limit $offset, $list_num";
$result=mysql_query($query) or die (mysql_error()); // 쿼리문을 실행 결과
//쿼리 결과를 하나씩 불러와 실제 HTML에 나타내는 것은 HTML 문 중간에 삽입합니다.
$loop_num = 0;
while ($array = mysql_fetch_array($result)) {
$rot_num += 1;
$seq = $array[seq];
$webgub = stripslashes($array[webgub]); //웹구분
$bcode = stripslashes($array[bcode]); //대분류코드
$mcode = stripslashes($array[mcode]); //중분류코드
$pcode = stripslashes($array[pcode]); //상품코드
--생략--
if($update == "0000-00-00") $update = "-";
$boolnull = $rot_num % 4;
if ($boolnull == 0) {
$bgcol = "bgcolor='#FFFFFF'";
} else {
$bgcol = "";
}
$remnant = $loop_num % 4;
if($remnant == 0) {
echo "
</tr>
<tr>
";
}
?>
<!--제품이미지 들어갈 곳 -->
<? if($img1 != "") { ?>
<a href="javascript:go_view('<?=$seq?>');"><img src="<?=$foldername?><?=imageKor($img1)?>" border="0" width="238" height="160"></a>
<? } else { ?>
<img src="../img/main/noimg_main.gif" width="238" height="160" >
<? } ?>
<?
$loop_num++;
} // end while
?>
댓글 전체
두 가지 쿼리문을 가지고 실제 쿼리하는 부분아래쪽에다 코드를 출력 시켜보면 원인을 알 수있겠죠
echo $query.'/////////'.$qry_where;
echo $query.'/////////'.$qry_where;
와!!!!! 문제점을 찾앗어요!! 감사합니다!!ㅎㅎ