2016-03-24 8 views
-1

Ich habe hier und Google gesucht, aber ich habe nicht in der Lage, eine Lösung zu finden, die ich integrieren kann.PHP alternative Zeile Farbe basierend auf Inhalt

Ich habe Zeilen von Daten aus einer MySQL-Datenbank gefüllt, was ich tun möchte, ist die Zeilenfarbe wechseln, wenn eine bestimmte Spalte ändert. Zum Beispiel:

Sponsor Name 
John  Terry 
John  Bob 
John  Paul 
Grant  Peter 
Perry  Toby 
Perry  Gerald 

Also, alle Johns Zeilen würde eine Hintergrundfarbe von row1 haben, Grant row2, dann würde Perry row1 wieder.

Ich überlegte, einen einfachen Schalter zu machen und sie auf diese Weise zu wechseln, aber mit 20 (und wachsenden) verschiedenen Möglichkeiten für den Sponsor wollte ich wissen, ob es einen einfacheren Weg gab.

Gibt es einen einfacheren Weg da draußen, oder wird es über eine Switch-Anweisung gemacht, der Weg zu gehen?

Prost

+2

Wenn Sie den Code enthalten, die Sie zur Zeit unter Verwendung dieser Daten angezeigt werden, wird es einfacher sein, für jemanden zu empfehlen, wie modifiziere es, um dies zu erreichen. –

+0

Meinst du, dass du deine Tischreihen mit zwei Farben färben willst? Für 3 erste Reihen Farbe # 1 und 4. Reihe Farbe # 2 und für 5. und 6. Reihe Farbe # 1 und wieder für nächste Reihe (n) Farbe # 2 und so weiter? Woran werden Sie die Farbe ändern? Ändern Sie die Farbe anhand des Sponsornamens? –

+0

@AliFarhoudi yeah, also im Grunde die Farbänderung würde auf Sponsor-Name basieren ... –

Antwort

0

Hier ist ein allgemeiner Weg, dies zu erreichen. Wenn Sie das Konzept verstehen, sollten Sie es an Ihre spezifischen Bedürfnisse anpassen können. Verfolgen Sie im Wesentlichen das vorherige Element, während Sie über Ihre Abfrageergebnisse iterieren. Wenn das aktuelle Element anders ist, ändern Sie die Farbe.

$sponsors = ['John', 'John', 'Grant', 'Perry', 'Perry']; 

$color = null; 
$previous_sponsor = null; 

foreach ($sponsors as $sponsor) { 
    if ($sponsor != $previous_sponsor) { 
     $color = $color == 'red' ? 'green' : 'red'; 
     $previous_sponsor = $sponsor; 
    } 
    echo "$sponsor $color<br>"; 
} 
0

Hier ist eine allgemeine Art und Weise wie das Zeug zu tun:

$dataArray = array(
    array('sponsor' => 'John', 'name' => 'Terry'), 
    array('sponsor' => 'John', 'name' => 'Bob'), 
    array('sponsor' => 'Grant', 'name' => 'Peter'), 
    array('sponsor' => 'Grant', 'name' => 'Peter'), 
    array('sponsor' => 'John', 'name' => 'Bob'), 
    array('sponsor' => 'John', 'name' => 'Bob'), 
    array('sponsor' => 'Grant', 'name' => 'Peter'), 
    array('sponsor' => 'Grant', 'name' => 'Peter'), 
    array('sponsor' => 'John', 'name' => 'Bob'), 
); 

$colors = array('red', 'green', 'blue'); 
$currentColorIndex = 0; 

echo '<table>'; 
foreach ($dataArray as $key => $data) { 
    if ((key($dataArray) > 0) && ($data['sponsor'] !== $dataArray[key($dataArray) - 1]['sponsor'])) { 
     $currentColorIndex = ($currentColorIndex + 1) % count($colors); 
    } 
    echo '<tr style="background-color: ' . $colors[$currentColorIndex] . '">' . 
      '<td>' . $data['sponsor'] . '</td>' . 
      '<td>' . $data['name'] . '</td>' . 
     '</tr>'; 
} 
echo '</table>'; 
Verwandte Themen