2016-03-01 3 views
0

Мне удалось составить табло, которое отлично работает, но с ним небольшая проблема. Я всегда увеличиваю свое «место» на 1. Если у двух конкурентов одинаковые результаты, у них должно быть одно и то же «место».Php + MySQL табло

Мой код в данный момент (только PHP я повторяющим его в таблице):

<?php 

      while($row = mysql_fetch_assoc($u10z)){ 

      print "<tr>"; 

      print "<td>" . $i1 . "</td>";   

      print "<td>" . $row['ime'] . "</td>"; 

      print "<td>" . $row['priimek'] . "</td>"; 

      print "<td>" . $row['klub'] . "</td>"; 

      print "<td>" . $row['drzava'] . "</td>"; 

      print "<td>" . $row['vrh'] . "</td>"; 

      print "<td>" . $row['vrhPoskus'] . "</td>"; 

      print "<td>" . $row['bonus'] . "</td>"; 

      print "<td>" . $row['bonusPoskus'] . "</td>"; 

      print "</tr>"; 

      $i1++; 

      } 

     ?> 

Как вы можете видеть $i1 является «место» счетчик.

Пример: example image of results

Если посмотреть на он второй таблице, first(1) и second(2) конкурент должен быть оба на first(1) месте, поскольку они оба имеют один и тот же счет.

Также спортсмен eighth(8) и ninth(9) должен находиться на eighth(8) месте.

EDIT:

Я сейчас, используя код, который комментировал ниже, но у меня есть небольшая проблема. Числа сдвинуты.

<?php 

    $pre_vrh = false; 
    $pre_vrhPoskus = false; 
    $pre_bonus = false; 
    $pre_bonusPoskus = false; 
    while($row = mysql_fetch_assoc($u10z)){ 
     print "<tr>"; 
     print "<td>" . $i1 . "</td>";   
     print "<td>" . $row['ime'] . "</td>"; 
     print "<td>" . $row['priimek'] . "</td>"; 
     print "<td>" . $row['klub'] . "</td>"; 
     print "<td>" . $row['drzava'] . "</td>"; 
     print "<td>" . $row['vrh'] . "</td>"; 
     print "<td>" . $row['vrhPoskus'] . "</td>"; 
     print "<td>" . $row['bonus'] . "</td>"; 
     print "<td>" . $row['bonusPoskus'] . "</td>"; 
     print "</tr>"; 

     if ($pre_vrh != $row['vrh'] || $pre_vrhPoskus != $row['vrhPoskus'] || $pre_bonus != $row['bonus'] || $pre_bonusPoskus != $row['bonusPoskus']) { 
      $i1++; 
     } 
     $pre_vrh = $row['vrh']; 
     $pre_vrhPoskus = $row['vrhPoskus']; 
     $pre_bonus = $row['bonus']; 
     $pre_bonusPoskus = $row['bonusPoskus']; 
     } 

    ?> 

Изображение: New results

+4

Посмотрите на эту тему, http://stackoverflow.com/questions/27324830/php-code-to-give-the-position-according-to- их счет-1-я-3-я-3-я-5-я, кажется, то, что вам нужно. – chris85

ответ

0

Я не могу понять, что вы значит, когда речь идет о счете, но ... похоже, если $row['vrh'], $row['vrhPoskus'], $row['bonus'], $row['bonusPoskus'] одинаковые, то место должно быть таким же. Если это верно, когда код может быть, как это

<?php 

    $pre_vrh = false; 
    $pre_vrhPoskus = false; 
    $pre_bonus = false; 
    $pre_bonusPoskus = false; 
    $place = 1; 
    $i1 = 0; 
    while($row = mysql_fetch_assoc($u10z)){ 
     print "<tr>"; 

     // we should compare old and new values for getting place 
     if ($pre_vrh != $row['vrh'] || $pre_vrhPoskus != $row['vrhPoskus'] || $pre_bonus != $row['bonus'] || $pre_bonusPoskus != $row['bonusPoskus']) { 
      $place = $i1 + 1; 
     } 
     $i1++; 

     print "<td>" . $place . "</td>";   
     print "<td>" . $row['ime'] . "</td>"; 
     print "<td>" . $row['priimek'] . "</td>"; 
     print "<td>" . $row['klub'] . "</td>"; 
     print "<td>" . $row['drzava'] . "</td>"; 
     print "<td>" . $row['vrh'] . "</td>"; 
     print "<td>" . $row['vrhPoskus'] . "</td>"; 
     print "<td>" . $row['bonus'] . "</td>"; 
     print "<td>" . $row['bonusPoskus'] . "</td>"; 
     print "</tr>"; 


     $pre_vrh = $row['vrh']; 
     $pre_vrhPoskus = $row['vrhPoskus']; 
     $pre_bonus = $row['bonus']; 
     $pre_bonusPoskus = $row['bonusPoskus']; 
    }  
?> 
+0

Спасибо, это работает, но места сдвинуты. Picure [link] (http://i.imgur.com/7o00bmK.png?1) @ alexander.polomodov – cufare

+0

Можете ли вы рассказать о смещенных местах? Возможно вам нужны места 1, 2, 2, 4, 5 ...? –

+0

Извините. Поскольку оценка совпадает с первым и вторым конкурентами (4,4,4,4), они оба должны быть на первом месте. Следующий участник со счетом (2,3,4,5) находится на третьем месте. И так далее, когда мы приходим к последним двум конкурентам, у которых снова есть тот же результат (0,0,0,0), и у них должно быть одно и то же «место» - (восьмое). @ alexander.polomodov – cufare

Смежные вопросы