2010-01-05 9 views
0

J'ai un programme qui présente une sélection aléatoire simple à partir de la base de données chaque fois qu'il est exécuté. Ce que je voudrais faire est d'avoir les sélections triées par niveau d'activité et ensuite le titre de sélection montré dans une couleur qui représente la façon dont la sélection aléatoire est active.PHP tri par âge et couleur codant les résultats?

Par exemple: Point 1 est de 45 jours, Point 2 est de 61 jours et Point 3 est de 10 jours.

La plage horaire est: 1-45days (noir), 46-60days (violet) et plus 61 jours (bleu)

Je voudrais que le PHP pour trier les éléments et quand le programme est exécuté, je veux l'élément aléatoire sélectionné pour être un code de couleur afin que: Si l'article 3 a été choisi le texte pour le titre des articles serait en couleur: # 000000 Si l'article 1 a été choisi le texte pour le titre des articles serait en couleur: # 770077 Si l'article 2 a été choisi le texte pour le titre des articles serait en couleur: # 0000ff

le programme PHP existant n'a pas de transaction variables à l'âge de l'élément ou avec colori ng le titre des éléments. Je suis un novice presque complet avec PHP (juste acheté le livre de Larry Ullman sur le sujet), donc je ne sais même pas si cela peut être fait, mais je me suis dit que je demanderais à voir ...

+0

Tout ce qui est des besoins durables soient stockés et retournés de votre base de données. – Blair

Répondre

0

Vous pouvez essayer la méthode suivante . Notez que j'ai réduit le minimum/maximum en supposant que l'index de tableau suivant dans la séquence est toujours plus grand que la gamme précédente.

// a mapping of ranges and their associated color 
$range_map = array(
    array('color' => '#000000', 'min' => 1, 'max' => 46), 
    array('color' => '#770077', 'min' => 46, 'max' => 61), 
    array('color' => '#0000ff', 'min' => 61, 'max' => 1000000) 
); 

$output = ''; 
foreach ($items as $item) { 
    $color = ''; 
    foreach ($range_map as $range) { 
     if ($item->days_old >= $range['min'] && $item->days_old < $range['max']) { 
      $color = $range['color']; 
      break; 
     } 
    } 

    if (!empty($color)) { 
     $output .= '<span style="color:' . $color . '">' . $YOUR_OUTPUT_HERE . '</span>'; 
    } else { 
     $output .= $YOUR_OUTPUT_HERE; 
    } 
} 

echo $output; 

Ce n'est pas la solution la plus rapide, mais il peut gérer un certain nombre de cas, avec un minimum de modifications.

0

ok. Ce qui suit est la plus simple façon de le faire:

$items[0]['title'] = 45; 
$items[0]['daysold'] = 45; 
$items[1]['title'] = 61; 
$items[1]['daysold'] = 45; 
$items[2]['title'] = 10; 
$items[2]['daysold'] = 45; 

$output = ''; 
foreach ($items as $item) { 
    switch ($item['daysold']) { 
     case ($item['daysold'] > 60): 
      $color = "#00FFFF"; 
      break; 
     case ($item['daysold'] > 45): 
      $color = "#AA00FF"; 
      break; 
     default: 
      $color = "#000000"; 
    } 
    $output .= '<span style="color:' . $color . '">' . $item['title'] . '</span>'; 
} 
echo $output; 

article 1 devrait être noir, article 2 doit être bleue, et l'article 3 doit être noir et selon vos besoins.