테스트 사이트 - 개발 중인 베타 버전입니다

DB 검색 질문... 채택완료

밀랍 4년 전 조회 1,725

</p>

<p><?php

include_once($_SERVER['DOCUMENT_ROOT'] ."/common.php");</p>

<p>$name = $_POST['name'];

$wrid = $_POST['wrid'];

$result = sql_fetch("SELECT * FROM g5_write_cscenter WHERE wr_9 = '".$name."' and wr_42 = '".$wrid."' ");</p>

<p>if($result['wr_3']){

?>

<?php echo $result['wr_18'];?>|<?php echo $result['wr_4'];?>|<?php echo $result['wr_3'];?>|<?php echo $result['wr_14'];?>|<?php echo $result['wr_10'];?>|<?php echo $result['wr_17'];?>|<?php echo $result['wr_8'];?></p>

<p><?php } ?>

 

글쓰기에서 이름을 검색하면 해당 정보를 뿌려주는데..

 

중복 이름이 있을경우에는 최초의 값만 검색하더라구요..

 

중복이 있을경우에 선택하게 하고싶은데.. 이럴땐 어떻게 해야 하나요?

 

wr_9가 작성자 이름 wr_42가  검색하는 사람 이름입니다.

 

wr_42가 중복일때 wr_14(전화번호)가 다를경우 선택하게 하고 싶습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
4년 전

<?php

include_once("../common.php");</p>

<p>$sql = "

    SELECT * 

      FROM g5_write_cscenter 

     WHERE wr_9 = '{$name}' 

       and wr_42 = '{$wrid}'      

";</p>

<p>$result = sql_query($sql);</p>

<p>while ($row = sql_fetch_array($result)) {

    $list[] = $row;

}

$cnt = count($list);

?></p>

<p><?php if ($cnt == 1) { ?>

<?php echo $list[0]['wr_18'];?>|<?php echo $list[0]['wr_4'];?>|<?php echo $list[0]['wr_3'];?>|<?php echo $list[0]['wr_14'];?>|<?php echo $list[0]['wr_10'];?>|<?php echo $list[0]['wr_17'];?>|<?php echo $list[0]['wr_8'];?>

<?php } else if ($cnt > 1) { ?>

<select>

    <?php for ($i = 0; $i < $cnt; $i++) { ?>    

    <option value="<?php echo $list[$i]['wr_9'] ?>"><?php echo $list[$i]['wr_14'] ?></option>

    <?php } ?>

</select>

<?php } ?>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

동일이름에 전화번호를 구별하기 위해서

group by로 wr_42, wr_14 검색해 주셔야합니다.

그리고 row가 여러개 나올수 있기 때문에 while문을 사용하셔서

선택박스를 만들어주셔야합니다.

아래 코드 간략하게 작성을 해봤습닌다. 코드 테스트는 안해봤는데

이런 느낌으로 접근하시면 좋을듯 합니다.

 

</p>

<p><?php

include_once($_SERVER['DOCUMENT_ROOT'] ."/common.php");

$name = $_POST['name'];

$wrid = $_POST['wrid'];

$result = sql_fetch("SELECT * FROM g5_write_cscenter WHERE wr_9 = '".$name."' and wr_42 = '".$wrid."' group by wr_42, wr_14 ");</p>

<p>$list = array();

while( $result = sql_fetch("SELECT * FROM g5_write_cscenter WHERE wr_9 = '".$name."' and wr_42 = '".$wrid."' ") )

{

    array_push($list, $row);    

}</p>

<p>

if( count($list ) == 1 ){

?>

<?php echo $result['wr_18'];?>|<?php echo $result['wr_4'];?>|<?php echo $result['wr_3'];?>|<?php echo $result['wr_14'];?>|<?php echo $result['wr_10'];?>|<?php echo $result['wr_17'];?>|<?php echo $result['wr_8'];?>

<?php } else if(  count($list ) > 1 ) { ?>

 선택박스 구현

<?php } ?></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 6개

밀랍
4년 전
감사합니다.
그런데 $row 값은 어디에서 나오는건가요?
D
DogFoot개발
4년 전
ㅜㅜ 오타입니다. $row가 아니라 $result
D
DogFoot개발
4년 전
선택박스 구현 부분에서는
foreach( $list as $val )
{
echo $val['wr_18'];
}
이런식으로 사용하시면 됩니다.
밀랍
4년 전
[code]
<?php
include_once($_SERVER['DOCUMENT_ROOT'] ."/common.php");

$name = $_POST['name'];
$wrid = $_POST['wrid'];
$result = sql_fetch("SELECT * FROM g5_write_cscenter WHERE wr_9 = '".$name."' and wr_42 = '".$wrid."' group by wr_42, wr_14 ");
$list = array();
while( $result = sql_fetch("SELECT * FROM g5_write_cscenter WHERE wr_9 = '".$name."' and wr_42 = '".$wrid."' ") )
{
array_push($list, $result);
}
?>
<?php echo count($list) ?>
[/code]

이렇게 수정했을때
값이 없는건 count 가 0으로 나오는데 값이 있는건 멈춰버리네요...
제가 뭘 잘못했을까요? ㅠㅠ
D
DogFoot개발
4년 전
확인 부탁드립니다^^;
제가 회사라 코드를 테스트 못해서 죄송합니다

[code]
<?php
include_once($_SERVER['DOCUMENT_ROOT'] ."/common.php");

$name = $_POST['name'];
$wrid = $_POST['wrid'];



$rs = sql_query(" SELECT * FROM g5_write_cscenter WHERE wr_9 = '".$name."' and wr_42 = '".$wrid."' GROUP BY wr_42, wr_14 ");
while( $result = sql_fetch_array($rs) )
{
array_push($list, $result);
}
?>
<?php echo count($list) ?>

[/code]
밀랍
4년 전
2차 중복값을 찾아야 하는 부분이 wr_42와 wr_43이여서..
[code]
$rs = sql_query(" SELECT * FROM g5_write_cscenter WHERE wr_9 = '".$name."' and wr_42 = '".$wrid."' GROUP BY wr_42, wr_43 ");
[/code]
이렇게 고쳤는데

계속 0이 나옵니다...

[code]
$rs = sql_query(" SELECT * FROM g5_write_cscenter WHERE wr_9 = '".$name."' and wr_42 = '".$wrid."'");
[/code]

이렇게 해도 0 나오는군요...

ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인