Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вывод футбольной таблицы

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]  [41-41] 

 
 автор: P@Sol   (18.06.2007 в 17:35)   письмо автору
 
   для: P@Sol   (18.06.2007 в 17:16)
 

разобрался:)

   
 
 автор: P@Sol   (18.06.2007 в 17:16)   письмо автору
 
   для: Trianon   (07.06.2007 в 18:19)
 

еще добавил строки


    $tours[$teamst[0]]['diffs'][$teamst1] = $goal[0]-$goal[1];
    $tours[$teamst[0]]['diffs'][$teamst2] = $goal[1]-$goal[0];
    $tours[$teamst[0]]['win'][$teamst1] = $w1;
    $tours[$teamst[0]]['win'][$teamst2] = $w2;

....

function compare_rank($a, $b)
{
    return (($b['points']- $a['points']) ? ($b['points'] - $a['points']) :
           (($b['diffs']- $a['diffs']) ? ($b['diffs'] - $a['diffs']) :
           (($b['goals']- $a['goals']) ? ($b['goals'] - $a['goals']) :
           (($b['win']- $a['win']) ? ($b['win'] - $a['win']) : //74 строка
           (($a['id']- $b['id']) ? ($a['id'] - $b['id']) :
           0)))));
}
....

        $acm[$cmd]['id'] = 0+$cmd;
        $acm[$cmd]['win'] += $res['win'][$cmd];
  //108 строка


почему-то вылазит ошибка Notice: Undefined index: win in z:\home\localhost\www\index6.php on line 108

   
 
 автор: Trianon   (18.06.2007 в 17:05)   письмо автору
 
   для: P@Sol   (18.06.2007 в 16:58)
 

Вы чего?

function compare_rank($a, $b) 

    return (($b['points']- $a['points']) ? ($b['points'] - $a['points']) : 
           (($b['diffs']- $a['diffs']) ? ($b['diffs'] - $a['diffs']) : 
           (($b['goals']- $a['goals']) ? ($b['goals'] - $a['goals']) : 
           (($b['id']- $a['id']) ? ($b['id'] - $a['id']) : 
           0)))); 



        $acm[$cmd]['id'] = 0+$cmd; 

   
 
 автор: P@Sol   (18.06.2007 в 16:58)   письмо автору
 
   для: Trianon   (07.06.2007 в 18:19)
 

пользовательскую функцию переписал:)

function compare_rank($a, $b)
{
    return (($b['points']- $a['points']) ? ($b['points'] - $a['points']) :
           (($b['diffs']- $a['diffs']) ? ($b['diffs'] - $a['diffs']) :
           (($b['goals']- $a['goals']) ? ($b['goals'] - $a['goals']) :
           0)));
}

а как еще добавить если 'points, 'diffs' и 'goals' равны, то сортировать по ИД?

   
 
 автор: P@Sol   (07.06.2007 в 22:17)   письмо автору
 
   для: Trianon   (07.06.2007 в 18:19)
 

ты гений:)

   
 
 автор: Trianon   (07.06.2007 в 18:19)   письмо автору
 
   для: P@Sol   (07.06.2007 в 16:53)
 


<?

$rep 
'1:2-0:24:2
1:1-2:25:16
1:0-2:12:19
1:1-0:11:21
1:0-0:3:20
1:0-2:4:22
1:1-0:9:0
1:2-0:17:27
###
2:2-1:0:24
2:0-3:12:22
2:1-3:25:20
2:0-3:21:9
2:2-0:17:2
2:0-1:27:3
2:1-0:16:4
2:0-1:19:11
###'
;

//$stats = file("res.txt");
$stats explode("\r\n"$rep);

foreach(
$stats as $stat)
  {
    
$stat trim($stat);
    if (
$stat[0] == "#")
       continue;

    
$team1s=0;
    
$team2s=0;

    
$teamst explode(":",$stat);
    
$teamst1 $teamst[2];
    
$teamst2 $teamst[3];

    
$goal explode("-",$teamst[1]);
    
$goal[0] = intval($goal[0]);
    
$goal[1] = intval($goal[1]);

    if (
$goal[0] > $goal[1])
    {
            
$p1 3;
            
$p2 0;
    }
    else if (
$goal[0] < $goal[1])
    {
            
$p1 0;
            
$p2 3;
    }
    else if (
$goal[0] == $goal[1])
    {
            
$p1 1;
            
$p2 1;
    }
    
$tours[$teamst[0]]['points'][$teamst1] = $p1;
    
$tours[$teamst[0]]['points'][$teamst2] = $p2;
    
$tours[$teamst[0]]['goals'][$teamst1] = $goal[0];
    
$tours[$teamst[0]]['goals'][$teamst2] = $goal[1];
    
$tours[$teamst[0]]['diffs'][$teamst1] = $goal[0]-$goal[1];
    
$tours[$teamst[0]]['diffs'][$teamst2] = $goal[1]-$goal[0];
    
$src[$teamst1][$teamst[0]] = $p1;
    
$src[$teamst2][$teamst[0]] = $p2;
  }

$commands array_keys($src);
//print_r($commands);
//$tours = array();
foreach($src as $cmd => $res)
{
  
$acm[$cmd] = array('points'=>0'diffs'=>0'goals'=>0);
}
function 
compare_rank($a$b)
{
    return ((
$a['points']- $b['points']) ? ($a['points'] - $b['points']) :
           ((
$a['diffs']- $b['diffs']) ? ($a['diffs'] - $b['diffs']) :
           ((
$a['goals']- $b['goals']) ? ($a['goals'] - $b['goals']) :
           
0)));
}

foreach(
$tours as $tour => $res)
{
    foreach(
$res['points'] as $cmd => $point)
    {
        
$acm[$cmd]['points'] += $point;
        
$acm[$cmd]['diffs'] += $res['diffs'][$cmd];
        
$acm[$cmd]['goals'] += $res['goals'][$cmd];
        
$tours[$tour]['points'][$cmd] = $acm[$cmd];
    }
    
uasort($acm'compare_rank');


    
$n 0;
    foreach(
$acm as $cmd =>$point)
       
$ord[$cmd]=++$n;
    
$tours[$tour]['rank']=$ord;
}
{
    echo 
"<table border=1><tr><th> Command </th>";
    foreach(
$tours as $tour => $res)
        echo 
"<th> Tour $tour </th><th> Rank </th>";
    echo 
"</tr>\r\n";
}
foreach(
$commands as $cmd)
{
    echo 
"<tr><th> $cmd </th>";
    foreach(
$tours as $tour => $res)
    {
        
$points $res['points'][$cmd]['points'];
        
$rank  $res['rank'][$cmd];
        echo 
"<td> $points </td><td> $rank </td>\r\n";
    }
    echo 
"</tr>\r\n";
}
{
    echo 
"</table>\r\n";
}

//print_r($tours);


?>

   
 
 автор: P@Sol   (07.06.2007 в 16:53)   письмо автору
 
   для: Trianon   (07.06.2007 в 13:58)
 

получиться должно вот это

sql запрос в данном случае

$query = "Select * from table order by `point` DESC, `matches`, `diff` DESC, `in_g` DESC, `win` DESC, `id`";


разница мячей = забитые мячи - пропущенные
в туре проходит 8 игр, но для каждой команды 1 тур = 1 игра

в массивах такое сделать мне кажется очень-очень сложно, если не возможно

   
 
 автор: Trianon   (07.06.2007 в 13:58)   письмо автору
 
   для: P@Sol   (07.06.2007 в 13:26)
 

если Вы вот эту фразу

итоге надо получить таблицу, где указаны места команд по турам, при равенстве очков учитывать разницу мяцей, а при равенстве разницы учитывать кол-во забитых мячей.

раскроете более подробно, можно будет над этим подумать.

Что такое разница мячей я еще понять могу,
но что значит "учитывать кол-во забитых мячей" и чем оно отличается от разницы - для меня - нефутболиста в общем-то - не доходит.
Равно как непонятно, чем игра отличается от тура, а если отличается - за игру или за тур учитывать.

   
 
 автор: P@Sol   (07.06.2007 в 13:26)   письмо автору
 
   для: cheops   (07.06.2007 в 13:13)
 

так изначально он полюбому будет пустой:( вот когда он первый раз попадает в эту строку ошибка и возникает, при последующих заходах ошибки уже нет, что логично. Вот и возник у меня вопрос как инициализировать вначале этот массив

   
 
 автор: cheops   (07.06.2007 в 13:13)   письмо автору
 
   для: P@Sol   (07.06.2007 в 12:23)
 

2) in_array() принимает в качестве второго аргумента массив, поэтому следует проверять - является ли он массивом
<?php
if(!empty($commands) && is_array($commands))
        if(!
in_array($tbl['id'],$commands)) 
         { 
             
$commands[$i] = $tbl['id']; 
             
$i++; 
         }
?>

   

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]  [41-41] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования