2017-04-01 97 views
0

我有一个名为part_name的字段的数据库。 的价值观:来自while循环的不同值

Front Control Arm, Rear Control Arm 

我要呼应出只控制臂,只有一次。 截至目前我得到的while循环的结果是什么我是

Control Arm, Control Arm. 

需要从while循环的结果呼应了不同的值。我无法在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变量的不同值,每个部分名称只有一次。

控制臂只。

+0

你也可以在MySQL查询中做正则表达式替换。 –

+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