<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>http://srv112858.seohost.com.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3ATrenerzy_sezon</id>
	<title>Moduł:Trenerzy sezon - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="http://srv112858.seohost.com.pl/index.php?action=history&amp;feed=atom&amp;title=Modu%C5%82%3ATrenerzy_sezon"/>
	<link rel="alternate" type="text/html" href="http://srv112858.seohost.com.pl/index.php?title=Modu%C5%82:Trenerzy_sezon&amp;action=history"/>
	<updated>2026-08-20T22:18:14Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>http://srv112858.seohost.com.pl/index.php?title=Modu%C5%82:Trenerzy_sezon&amp;diff=2932&amp;oldid=prev</id>
		<title>Admin karol bury: Utworzono nową stronę &quot;local p = {}  function p.main(frame)      -- =====================================================     -- PARAMETRY     -- =====================================================      local sezon = frame.args.sezon or &quot;&quot;     local druzyna = frame.args.druzyna or &quot;&quot;      if sezon == &quot;&quot; then         return &quot;&#039;&#039;&#039;Błąd:&#039;&#039;&#039; nie podano sezonu.&quot;     end      if druzyna == &quot;&quot; then         return &quot;&#039;&#039;&#039;Błąd:&#039;&#039;&#039; nie podano drużyny.&quot;     end      -- Bezpieczne przygotowanie wa…&quot;</title>
		<link rel="alternate" type="text/html" href="http://srv112858.seohost.com.pl/index.php?title=Modu%C5%82:Trenerzy_sezon&amp;diff=2932&amp;oldid=prev"/>
		<updated>2026-08-17T14:45:00Z</updated>

		<summary type="html">&lt;p&gt;Utworzono nową stronę &amp;quot;local p = {}  function p.main(frame)      -- =====================================================     -- PARAMETRY     -- =====================================================      local sezon = frame.args.sezon or &amp;quot;&amp;quot;     local druzyna = frame.args.druzyna or &amp;quot;&amp;quot;      if sezon == &amp;quot;&amp;quot; then         return &amp;quot;&amp;#039;&amp;#039;&amp;#039;Błąd:&amp;#039;&amp;#039;&amp;#039; nie podano sezonu.&amp;quot;     end      if druzyna == &amp;quot;&amp;quot; then         return &amp;quot;&amp;#039;&amp;#039;&amp;#039;Błąd:&amp;#039;&amp;#039;&amp;#039; nie podano drużyny.&amp;quot;     end      -- Bezpieczne przygotowanie wa…&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
    -- PARAMETRY&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
&lt;br /&gt;
    local sezon = frame.args.sezon or &amp;quot;&amp;quot;&lt;br /&gt;
    local druzyna = frame.args.druzyna or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if sezon == &amp;quot;&amp;quot; then&lt;br /&gt;
        return &amp;quot;&amp;#039;&amp;#039;&amp;#039;Błąd:&amp;#039;&amp;#039;&amp;#039; nie podano sezonu.&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if druzyna == &amp;quot;&amp;quot; then&lt;br /&gt;
        return &amp;quot;&amp;#039;&amp;#039;&amp;#039;Błąd:&amp;#039;&amp;#039;&amp;#039; nie podano drużyny.&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Bezpieczne przygotowanie wartości do SQL&lt;br /&gt;
    local sezonSQL = mw.ustring.gsub(sezon, &amp;quot;&amp;#039;&amp;quot;, &amp;quot;&amp;#039;&amp;#039;&amp;quot;)&lt;br /&gt;
    local druzynaSQL = mw.ustring.gsub(druzyna, &amp;quot;&amp;#039;&amp;quot;, &amp;quot;&amp;#039;&amp;#039;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
    -- POBRANIE TRENERÓW I MECZÓW&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
&lt;br /&gt;
    local fields = table.concat({&lt;br /&gt;
        &amp;quot;SztabMeczu.osoba=trener&amp;quot;,&lt;br /&gt;
        &amp;quot;SztabMeczu.druzyna=druzyna&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;Mecze.id=mecz&amp;quot;,&lt;br /&gt;
        &amp;quot;Mecze.data=data&amp;quot;,&lt;br /&gt;
        &amp;quot;Mecze.sezon=sezon&amp;quot;,&lt;br /&gt;
        &amp;quot;Mecze.druzyna1=druzyna1&amp;quot;,&lt;br /&gt;
        &amp;quot;Mecze.druzyna2=druzyna2&amp;quot;,&lt;br /&gt;
        &amp;quot;Mecze.gole1=gole1&amp;quot;,&lt;br /&gt;
        &amp;quot;Mecze.gole2=gole2&amp;quot;,&lt;br /&gt;
        &amp;quot;Mecze.wynik=wynik&amp;quot;&lt;br /&gt;
    }, &amp;quot;,&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local args = {&lt;br /&gt;
        join = &amp;quot;SztabMeczu.mecz=Mecze.id&amp;quot;,&lt;br /&gt;
        where =&lt;br /&gt;
            &amp;quot;SztabMeczu.rola=&amp;#039;Trener&amp;#039;&amp;quot; ..&lt;br /&gt;
            &amp;quot; AND SztabMeczu.druzyna=&amp;#039;&amp;quot; .. druzynaSQL .. &amp;quot;&amp;#039;&amp;quot; ..&lt;br /&gt;
            &amp;quot; AND Mecze.sezon=&amp;#039;&amp;quot; .. sezonSQL .. &amp;quot;&amp;#039;&amp;quot;,&lt;br /&gt;
        orderBy = &amp;quot;Mecze.data ASC&amp;quot;,&lt;br /&gt;
        limit = 5000&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    local rows = mw.ext.cargo.query(&lt;br /&gt;
        &amp;quot;SztabMeczu,Mecze&amp;quot;,&lt;br /&gt;
        fields,&lt;br /&gt;
        args&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    if not rows or #rows == 0 then&lt;br /&gt;
        return &amp;quot;&amp;#039;&amp;#039;Brak danych o trenerach dla tej drużyny w podanym sezonie.&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
    -- PODSUMOWANIA TRENERÓW&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
&lt;br /&gt;
    local trenerzy = {}&lt;br /&gt;
&lt;br /&gt;
    local function nowePodsumowanie()&lt;br /&gt;
&lt;br /&gt;
        return {&lt;br /&gt;
            mecze = 0,&lt;br /&gt;
            zwyciestwa = 0,&lt;br /&gt;
            porazki = 0,&lt;br /&gt;
            remisy = 0,&lt;br /&gt;
            rzucone = 0,&lt;br /&gt;
            stracone = 0&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
    -- PRZETWARZANIE MECZÓW&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
&lt;br /&gt;
    for _, row in ipairs(rows) do&lt;br /&gt;
&lt;br /&gt;
        local trener = row.trener or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if trener ~= &amp;quot;&amp;quot; then&lt;br /&gt;
&lt;br /&gt;
            if not trenerzy[trener] then&lt;br /&gt;
                trenerzy[trener] = nowePodsumowanie()&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            local stat = trenerzy[trener]&lt;br /&gt;
&lt;br /&gt;
            local d1 = row.druzyna1 or &amp;quot;&amp;quot;&lt;br /&gt;
            local d2 = row.druzyna2 or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
            local g1 = tonumber(row.gole1 or &amp;quot;&amp;quot;)&lt;br /&gt;
            local g2 = tonumber(row.gole2 or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
            -- Jeżeli pola gole1/gole2 nie są dostępne,&lt;br /&gt;
            -- próbujemy odczytać wynik z pola wynik.&lt;br /&gt;
&lt;br /&gt;
            if not g1 or not g2 then&lt;br /&gt;
&lt;br /&gt;
                local wynik = row.wynik or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
                local a, b =&lt;br /&gt;
                    wynik:match(&amp;quot;(%d+)%s*:%s*(%d+)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
                if a and b then&lt;br /&gt;
                    g1 = tonumber(a)&lt;br /&gt;
                    g2 = tonumber(b)&lt;br /&gt;
                end&lt;br /&gt;
&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- Bez poprawnego wyniku nie liczymy meczu&lt;br /&gt;
            -- do klasyfikacji.&lt;br /&gt;
&lt;br /&gt;
            if g1 and g2 then&lt;br /&gt;
&lt;br /&gt;
                stat.mecze =&lt;br /&gt;
                    stat.mecze + 1&lt;br /&gt;
&lt;br /&gt;
                -- -----------------------------------------&lt;br /&gt;
                -- DRUŻYNA TRENERA JAKO GOSPODARZ&lt;br /&gt;
                -- -----------------------------------------&lt;br /&gt;
&lt;br /&gt;
                if druzyna == d1 then&lt;br /&gt;
&lt;br /&gt;
                    stat.rzucone =&lt;br /&gt;
                        stat.rzucone + g1&lt;br /&gt;
&lt;br /&gt;
                    stat.stracone =&lt;br /&gt;
                        stat.stracone + g2&lt;br /&gt;
&lt;br /&gt;
                    if g1 &amp;gt; g2 then&lt;br /&gt;
&lt;br /&gt;
                        stat.zwyciestwa =&lt;br /&gt;
                            stat.zwyciestwa + 1&lt;br /&gt;
&lt;br /&gt;
                    elseif g1 &amp;lt; g2 then&lt;br /&gt;
&lt;br /&gt;
                        stat.porazki =&lt;br /&gt;
                            stat.porazki + 1&lt;br /&gt;
&lt;br /&gt;
                    else&lt;br /&gt;
&lt;br /&gt;
                        stat.remisy =&lt;br /&gt;
                            stat.remisy + 1&lt;br /&gt;
&lt;br /&gt;
                    end&lt;br /&gt;
&lt;br /&gt;
                -- -----------------------------------------&lt;br /&gt;
                -- DRUŻYNA TRENERA JAKO GOŚĆ&lt;br /&gt;
                -- -----------------------------------------&lt;br /&gt;
&lt;br /&gt;
                elseif druzyna == d2 then&lt;br /&gt;
&lt;br /&gt;
                    stat.rzucone =&lt;br /&gt;
                        stat.rzucone + g2&lt;br /&gt;
&lt;br /&gt;
                    stat.stracone =&lt;br /&gt;
                        stat.stracone + g1&lt;br /&gt;
&lt;br /&gt;
                    if g2 &amp;gt; g1 then&lt;br /&gt;
&lt;br /&gt;
                        stat.zwyciestwa =&lt;br /&gt;
                            stat.zwyciestwa + 1&lt;br /&gt;
&lt;br /&gt;
                    elseif g2 &amp;lt; g1 then&lt;br /&gt;
&lt;br /&gt;
                        stat.porazki =&lt;br /&gt;
                            stat.porazki + 1&lt;br /&gt;
&lt;br /&gt;
                    else&lt;br /&gt;
&lt;br /&gt;
                        stat.remisy =&lt;br /&gt;
                            stat.remisy + 1&lt;br /&gt;
&lt;br /&gt;
                    end&lt;br /&gt;
&lt;br /&gt;
                end&lt;br /&gt;
&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
    -- USUNIĘCIE TRENERÓW BEZ POLICZONYCH MECZÓW&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
&lt;br /&gt;
    for trener, stat in pairs(trenerzy) do&lt;br /&gt;
&lt;br /&gt;
        if stat.mecze == 0 then&lt;br /&gt;
            trenerzy[trener] = nil&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
    -- SPRAWDZENIE DANYCH&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
&lt;br /&gt;
    local lista = {}&lt;br /&gt;
&lt;br /&gt;
    for trener, stat in pairs(trenerzy) do&lt;br /&gt;
&lt;br /&gt;
        table.insert(&lt;br /&gt;
            lista,&lt;br /&gt;
            {&lt;br /&gt;
                trener = trener,&lt;br /&gt;
                stat = stat&lt;br /&gt;
            }&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #lista == 0 then&lt;br /&gt;
        return &amp;quot;&amp;#039;&amp;#039;Brak kompletnych danych o meczach trenerów w tym sezonie.&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
    -- SORTOWANIE&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
&lt;br /&gt;
    table.sort(&lt;br /&gt;
        lista,&lt;br /&gt;
        function(a, b)&lt;br /&gt;
&lt;br /&gt;
            -- najpierw liczba zwycięstw&lt;br /&gt;
            if a.stat.zwyciestwa ~= b.stat.zwyciestwa then&lt;br /&gt;
                return a.stat.zwyciestwa &amp;gt; b.stat.zwyciestwa&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- następnie liczba meczów&lt;br /&gt;
            if a.stat.mecze ~= b.stat.mecze then&lt;br /&gt;
                return a.stat.mecze &amp;gt; b.stat.mecze&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            -- następnie bilans&lt;br /&gt;
            local bilansA =&lt;br /&gt;
                a.stat.rzucone - a.stat.stracone&lt;br /&gt;
&lt;br /&gt;
            local bilansB =&lt;br /&gt;
                b.stat.rzucone - b.stat.stracone&lt;br /&gt;
&lt;br /&gt;
            if bilansA ~= bilansB then&lt;br /&gt;
                return bilansA &amp;gt; bilansB&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            return a.trener &amp;lt; b.trener&lt;br /&gt;
&lt;br /&gt;
        end&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
    -- WYNIK&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
&lt;br /&gt;
    local wynik = {}&lt;br /&gt;
&lt;br /&gt;
    table.insert(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;#039;{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%; text-align:center;&amp;quot;&amp;#039;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    -- Nagłówki&lt;br /&gt;
&lt;br /&gt;
    table.insert(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;quot;! Trener&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    table.insert(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;quot;! Mecze&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    table.insert(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;quot;! W&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    table.insert(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;quot;! P&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    table.insert(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;quot;! R&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    table.insert(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;quot;! % zwycięstw&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    table.insert(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;quot;! Kosze rzucone&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    table.insert(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;quot;! Kosze stracone&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    table.insert(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;quot;! Bilans&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
    -- WIERSZE&lt;br /&gt;
    -- =====================================================&lt;br /&gt;
&lt;br /&gt;
    for _, item in ipairs(lista) do&lt;br /&gt;
&lt;br /&gt;
        local trener = item.trener&lt;br /&gt;
        local stat = item.stat&lt;br /&gt;
&lt;br /&gt;
        local bilans =&lt;br /&gt;
            stat.rzucone - stat.stracone&lt;br /&gt;
&lt;br /&gt;
        local procent = 0&lt;br /&gt;
&lt;br /&gt;
        if stat.mecze &amp;gt; 0 then&lt;br /&gt;
&lt;br /&gt;
            procent =&lt;br /&gt;
                (stat.zwyciestwa / stat.mecze) * 100&lt;br /&gt;
&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        -- Zaokrąglenie do jednego miejsca&lt;br /&gt;
&lt;br /&gt;
        procent =&lt;br /&gt;
            string.format(&lt;br /&gt;
                &amp;quot;%.1f&amp;quot;,&lt;br /&gt;
                procent&lt;br /&gt;
            )&lt;br /&gt;
&lt;br /&gt;
        -- Link do strony trenera&lt;br /&gt;
&lt;br /&gt;
        local trenerLink =&lt;br /&gt;
            &amp;quot;[[&amp;quot; .. trener .. &amp;quot;]]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        table.insert(&lt;br /&gt;
            wynik,&lt;br /&gt;
            &amp;quot;|-&amp;quot;&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        table.insert(&lt;br /&gt;
            wynik,&lt;br /&gt;
            &amp;quot;| &amp;quot; .. trenerLink&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        table.insert(&lt;br /&gt;
            wynik,&lt;br /&gt;
            &amp;quot;| &amp;quot; .. stat.mecze&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        table.insert(&lt;br /&gt;
            wynik,&lt;br /&gt;
            &amp;quot;| &amp;quot; .. stat.zwyciestwa&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        table.insert(&lt;br /&gt;
            wynik,&lt;br /&gt;
            &amp;quot;| &amp;quot; .. stat.porazki&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        table.insert(&lt;br /&gt;
            wynik,&lt;br /&gt;
            &amp;quot;| &amp;quot; .. stat.remisy&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        table.insert(&lt;br /&gt;
            wynik,&lt;br /&gt;
            &amp;quot;| &amp;quot; .. procent .. &amp;quot;%&amp;quot;&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        table.insert(&lt;br /&gt;
            wynik,&lt;br /&gt;
            &amp;quot;| &amp;quot; .. stat.rzucone&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        table.insert(&lt;br /&gt;
            wynik,&lt;br /&gt;
            &amp;quot;| &amp;quot; .. stat.stracone&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        local bilansTekst&lt;br /&gt;
&lt;br /&gt;
        if bilans &amp;gt; 0 then&lt;br /&gt;
&lt;br /&gt;
            bilansTekst =&lt;br /&gt;
                &amp;quot;+&amp;quot; .. bilans&lt;br /&gt;
&lt;br /&gt;
        else&lt;br /&gt;
&lt;br /&gt;
            bilansTekst =&lt;br /&gt;
                tostring(bilans)&lt;br /&gt;
&lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        table.insert(&lt;br /&gt;
            wynik,&lt;br /&gt;
            &amp;quot;| &amp;quot; .. bilansTekst&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;quot;|}&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    return table.concat(&lt;br /&gt;
        wynik,&lt;br /&gt;
        &amp;quot;\n&amp;quot;&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Admin karol bury</name></author>
	</entry>
