2017-04-01 6 views
0

part_name이라는 필드가있는 데이터베이스가 있습니다. 값으로 :while 루프와 다른 값

Front Control Arm, Rear Control Arm 

는 난 단지 컨트롤 암, 한 번만를 에코 할 필요가있다. 지금은 while 루프 결과를 얻고 무엇으로 는

Control Arm, Control Arm. 

는 루프가 발생하면서부터 고유 한 값을 에코 필요하다. 나는 SQL 쿼리 SELECT DISTINCT에서 그것을 수행 할 수 없다. 왜냐하면 나는 데이터베이스에서 큐잉하고있는 행의 값을 바꾸기 때문이다.

while ($rowsparts = mysql_fetch_array($displayparts)) { 
    $part=''.$rowsparts['part_name'].''; 
    $part = preg_replace('/\bFront\b/u', '', $part); 
    $part = preg_replace('/\bRear\b/u', '', $part); 
    echo '<li>'.$part.'</li>'; 
} 

$ 부분 변수 고유 값을 부분 이름 당 한 번만 반향시켜야합니다.

제어 암만.

+0

MySQL 쿼리에서도 regex replace를 사용할 수 있습니다. –

+0

@WillemVanOnsem 기본 MySQL 기능이 있습니까? – chris85

+0

@ chris85 : 맞춤 정의 된 단어가 없습니다. –

답변

0

한 번만 부품 이름을 표시하려는 경우가 작동 할 수는 :

$lastpart = ''; 
while ($rowsparts = mysql_fetch_array($displayparts)) { 
    $part = $rowsparts['part_name']; 
    $part = trim(str_replace('Rear','',str_replace('Front','',$part))); 
    if($lastpart != $part) { 
     $lastpart = $part; 
     echo "<li>".$part."</li>\n"; 
    } else { 
     echo "<li>Part name duplicate: $part, lastpart: $lastpart</li>\n"; 
    } 
} 

나는 디버깅 그렇지 않으면 했다. 그것은 중복을 감지하는 데 사용되는 두 개의 병을 보여줍니다. 테스트 후 제거 할 것입니다.

부품 이름의 순서가 잘못되었을 때 부품 이름을 한 번만 표시하려면이 방법이 유용 할 수 있습니다. 부품 이름 목록을 작성하고 각 부품 이름을 목록과 대조하여 목록에없는 부품 만 으로 표시합니다.

$part_list = array(); 
while ($rowsparts = mysql_fetch_array($displayparts)) { 
    $part = $rowsparts['part_name']; 
    $part = trim(str_replace('Rear','',str_replace('Front','',$part))); 
    if(!isset($part_list[$part])) { 
     $part_list[$part] = 1; 
     echo "<li>".$part."</li>\n"; 
    } 
} 
+0

당신이 나에게 준 코드로는 작동하지 않습니다, 여전히 중복 된 부분 이름을 울리고 있습니다 – user3740456

+0

어떻게 작동하지 않는지 예를 들려 줄 수 있습니까? 즉, 검색된 레코드의 짧은 목록과 결과 출력은 무엇입니까? –

+0

살아있는 웹 사이트 http://www.imricardo.com/vehicle/2004/BMW/325i/2.5L.html – user3740456

관련 문제