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

Copy
<?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."' ");

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'];?>

<?php } ?>

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

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

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

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

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

답변 2개

채택된 답변
+20 포인트
Copy
<?php
include_once("../common.php");

$sql = "
    SELECT * 
      FROM g5_write_cscenter 
     WHERE wr_9 = '{$name}' 
       and wr_42 = '{$wrid}'      
";

$result = sql_query($sql);

while ($row = sql_fetch_array($result)) {
    $list[] = $row;
}
$cnt = count($list);
?>

<?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문을 사용하셔서

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

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

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

Copy
<?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, $row);    
}


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 } ?>
로그인 후 평가할 수 있습니다

답변에 대한 댓글 6개

감사합니다.
그런데 $row 값은 어디에서 나오는건가요?
ㅜㅜ 오타입니다. $row가 아니라 $result
선택박스 구현 부분에서는
foreach( $list as $val )
{
echo $val['wr_18'];
}
이런식으로 사용하시면 됩니다.
[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으로 나오는데 값이 있는건 멈춰버리네요...
제가 뭘 잘못했을까요? ㅠㅠ
확인 부탁드립니다^^;
제가 회사라 코드를 테스트 못해서 죄송합니다

[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]
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 나오는군요...

ㅠㅠ

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

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

로그인
🐛 버그신고