2017-04-01 11 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>'; 
} 

$ part変数の異なる値を部分名ごとに1回だけエコーアウトする必要があります。

コントロールアームのみ。

+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"; 
    } 
} 

私は他のデバッグのためを追加しました。重複を検出するために使用される2つの変数を表示します。あなたはテストの後にそれを削除します。

部品名が正しくないときに部品名を1回だけ表示したい場合には、この方法が有効です。 部品名のリストを作成し、各部品名をリストと照合して確認します。 はリストにないもののみを表示します。

$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

関連する問題