2017-04-01 1 views
0

Ich habe eine Datenbank mit einem Feld namens part_name. mit den Werten:Distinct Werte von While-Schleife

Front Control Arm, Rear Control Arm 

Ich brauche nur, Radaufhängung, nur einmal ein Echo aus. unterschiedliche Werte Echo aus while-Schleife Ergebnisse Ab jetzt, was ich bin auf der while-Schleife das Erzielen von Ergebnissen ist

Control Arm, Control Arm. 

benötigen. Ich kann es nicht auf die SQL-Abfrage SELECT DISTINCT tun, weil ich preg den Wert aus der Zeile ersetzen werde, die ich in der Datenbank queering bin.

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>'; 
} 

Ich muss die eindeutigen Werte der $ part-Variablen aussprechen, nur einmal pro Teilname.

Nur Steuerarm.

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

Ich fügte hinzu, die sonst zum Debuggen: einmal die Teilenamen anzuzeigen

+0

Sie können Regex ersetzen in der MySQL-Abfrage auch tun. –

+0

@WillemVanOnsem Mit nativen mysql-Funktionen? – chris85

+0

@ chris85: nein mit einem benutzerdefinierten definiert. –

Antwort

0

Dies könnte funktionieren, wenn Sie möchten. Es werden die zwei Variablen angezeigt, die zum Erkennen von Duplikaten verwendet werden. Sie würden es nach dem Testen entfernen.

Dies könnte funktionieren, wenn Sie den Teilenamen nur einmal anzeigen möchten, wenn die Teilenamen nicht in der richtigen Reihenfolge sind. Es erstellt eine Liste von Teilenamen und überprüft jeden Teilnamen anhand der Liste, wobei nur die Namen angezeigt werden, die nicht in der Liste enthalten sind.

$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

es funktioniert nicht mit Code, den Sie mir gab, ist immer noch doppelte Namen von Teilen – user3740456

+0

Können Sie ein Beispiel dafür geben, wie es nicht funktioniert? Das heißt, eine kurze Liste der abgerufenen Datensätze und die resultierende Ausgabe? –

+0

Bitte gehen Sie auf die Live-Website @ http://www.imricardo.com/vehicle/2004/BMW/325i/2.5L.html – user3740456

Verwandte Themen