2013-09-22 2 views
0

У меня есть эта треску для моего TOP LISTTop List трех частей

$pos=0; 

$upit = mysql_query("SELECT * FROM wp_entries ORDER BY vote DESC"); 

while ($sms = mysql_fetch_array($upit)) { 
$pos++; 
$data = unserialize($sms['data']); 
echo " ".$pos." ".$data[1]['value']." ".$data[2]['value']." ".$sms[vote]." "; 
} 
  • данные [1] является NAME

  • данных [2] является ФАМИЛИЯ

  • смс [ голосов] является ЧИСЛО ГОЛОС

И это топ-лист выглядит следующим образом

1 Novak Djokovic 50 
2 Rafael Nadal 35 
3 Roger Federer 30 
4 Andre Agassi 26 
5 Pete Sampras 22 
6 Andy Murray 19 
7 Chris Evert 13 
8 Michael Chang 10 
9 Andy Roddick 7 
10 Boris Becker 5 
11 Björn Borg 1 

И я хочу, чтобы мой топ-лист выглядит следующим образом

// FINALIST // Limit first 4 // green font 
     1 Novak Djokovic 50 
     2 Rafael Nadal 35 
     3 Roger Federer 30 
     4 Andre Agassi 26 
// OTHERS // All other except first 4 and last 2 // black font 
     5 Pete Sampras 22 
     6 Andy Murray 19 
     7 Chris Evert 13 
     8 Michael Chang 10 
     9 Andy Roddick 7   
// FALL OUT // Limit last 2 // red font 
     10 Boris Becker 5 
     11 Björn Borg 1 

Я надеюсь, вы меня поняли, и что кто-то знает, как решить эту проблему. Спасибо.

+0

Таким образом, у вас есть данные правильно, вы просто хотите отформатировать его по-разному на основе их оценки? –

+0

Вы отправляете в HTML? Это вопрос HTML/CSS? –

+0

Да, треска в порядке и работает. Я просто хочу вывести другой взгляд. –

ответ

1

Вы можете использовать этот код:

$pos=0; 
$upit = mysql_query("SELECT * FROM wp_entries ORDER BY vote DESC"); 
$max = mysql_num_rows($upit); 
$max = $max - 2; 
while ($sms = mysql_fetch_array($upit)) { 
    $pos++; 
    $data = unserialize($sms['data']); 
    if ($pos < 5){ 
     // first 4 in different color. Green Font 
     echo " ".$pos." ".$data[1]['value']." ".$data[2]['value']." ".$sms[vote]." "; 
    } elseif ($pos <= $max) { 
     //from 5th to 3rd last (left 2 from bottom) in different color. Black Font 
     echo " ".$pos." ".$data[1]['value']." ".$data[2]['value']." ".$sms[vote]." "; 
    } else { 
     // last 2 in different color. Red Font 
     echo " ".$pos." ".$data[1]['value']." ".$data[2]['value']." ".$sms[vote]." "; 
    } 
} 
0

Я предполагаю, что вы хотите что-то вроде этого ... вы можете затем изменить свой код echo на основе того, как вы хотите отформатировать его.

$pos=0; 

$upit = mysql_query("SELECT * FROM wp_entries ORDER BY vote DESC"); 

while ($sms = mysql_fetch_array($upit)) { 
    $pos++; 
    $data = unserialize($sms['data']); 
    if ($pos < 5){ 
     // finalist format (1-4) 
     echo " ".$pos." ".$data[1]['value']." ".$data[2]['value']." ".$sms[vote]." "; 
    } elseif ($pos > 9) { 
     // format fallout users (9+) 
     echo " ".$pos." ".$data[1]['value']." ".$data[2]['value']." ".$sms[vote]." "; 
    } else { 
     // format other (5-9) 
     echo " ".$pos." ".$data[1]['value']." ".$data[2]['value']." ".$sms[vote]." "; 
    } 
} 
+0

Эта треска в порядке ... Только одна вещь не работает хорошо для fallout. Количество людей в списке сверху постоянно увеличивается. Когда список увеличивается, таким образом увеличивается количество и количество лиц, выпадающих из группы. d Мне нужно ограничить это последними 2 людьми для выпадения. –

0

Предполагая, что первые 4 в различном цвете, с 5-го по 3 последнего (слева 2 снизу) в разные цвета, и последний 2 в другой цвет.

Итак, сначала найдите общее количество строк из SQL-запроса, чтобы мы могли установить условие 2-го if.

$pos=0; 
$upit = mysql_query("SELECT * FROM wp_entries ORDER BY vote DESC"); 
$max = mysql_num_rows($upit); 
$max = $max - 2; 
while ($sms = mysql_fetch_array($upit)) { 
    $pos++; 
    $data = unserialize($sms['data']); 
    if ($pos < 5){ 
     // first 4 in different color. Green Font 
     echo " ".$pos." ".$data[1]['value']." ".$data[2]['value']." ".$sms[vote]." "; 
    } elseif ($pos <= $max) { 
     //from 5th to 3rd last (left 2 from bottom) in different color. Black Font 
     echo " ".$pos." ".$data[1]['value']." ".$data[2]['value']." ".$sms[vote]." "; 
    } else { 
     // last 2 in different color. Red Font 
     echo " ".$pos." ".$data[1]['value']." ".$data[2]['value']." ".$sms[vote]." "; 
    } 
} 
0

Предполагая, что вы нужны выход HTML, здесь очень сырой способ сделать это:

<?php 


$pos = 0; 

if($upit = mysql_query("SELECT * FROM wp_entries ORDER BY vote DESC")) 
{ 
    $num_rows = mysql_num_rows($upit); 
    if($num_rows > 0) 
    { 
     echo '<ul>'; 

     while ($sms = mysql_fetch_array($upit)) 
     { 
      $pos++; 

      $style = ""; 

      if ($pos < 5) 
      { 
       $style = ' style="color:#00FF00;"'; 
      } 
      elseif ($pos <= ($num_rows-2)) 
      { 
       $style = ' style="color:#000000;"'; 
      } 
      else 
      { 
       $style = ' style="color:#FF0000;"'; 
      } 


      $data = unserialize($sms['data']); 
      echo ' <li'.$style.'>'.$pos." ".$data[1]['value']." ".$data[2]['value']." ".$sms['vote']."<li>"; 
     } 

     echo '<ul>'; 
    } 
} 
?> 
Смежные вопросы