Autor Zpráva
Michales
Profil
Zdravím,
potřeboval bych poradit ohledně php.
Mám tuto struktůru tabulky v db:
teamid    
teamname    
nickname    
teamwins    
teamlosses    
teamties    
teamforfeits    
teamrf    
teamra    
teamdiv    
teamdiv2    
teamorder    
active    
masterteam    
round_1    
round_2    
round_3    
round_4    
fielding_team    
limit

Jedná se mi o sloupec limit.
V něm je hodnota která určuje limit zápasů.
Potřeboval bych pokud daný tým neodehraje daný počet zápasů, které jsou ve sloupci limit tak aby v tabulce byl označený červeně.
Pokud limit splní aby byl označený zeleně.
Tým zobrazuji následně:
<td id="f"><b><a id="f" href="rozpis_new_white.php?tym=<?php print $results['teamid']; ?>&conf=<?php print $confid; ?>&body=<?php print $body; ?>&postup=<?php print $postup; ?>&baraz=<?php print $baraz; ?>" title="View scores for <?php print $results['teamname']; ?>"><?php print $results['teamname']; ?></a></b></td>
Poradil by mi někdo tuto funkci popřípadě napsal?
Děkuji.
juriad
Profil
jak lze vypočíta počet odehraných zápasů (od někud tu informaci musíš mít)?
Michales
Profil
juriad:
Dám sem větší část toho kodu:
<?php }

if ($result_exist) {
        $query="SELECT teamid, teamname, nickname, teamwins, teamties, teamlosses, teamforfeits, teamrf, teamra, 
        (teamwins + teamties + teamlosses + teamforfeits) AS gamesplayed, 
        (
          (SELECT COUNT(1) FROM sportsdb_wins WHERE (winortie=1 AND winner=teamid) OR (winortie=4 AND loser=teamid) ) * $points_win +
          (SELECT COUNT(1) FROM sportsdb_wins WHERE (winortie=5 AND loser=teamid) OR (winortie=2 AND winner=teamid) ) * $points_winned_forfeit +
          (SELECT COUNT(1) FROM sportsdb_wins WHERE (winortie=5 AND winner=teamid) OR (winortie=2 AND loser=teamid) ) * $points_forfeit +
          (SELECT COUNT(1) FROM sportsdb_wins WHERE winortie=0 AND winner=teamid OR loser=teamid) * $points_tie
        ) AS points,
        $winning_pct_formula AS winningpct, 
        ((({$results['leadervalue']}) - (teamwins - teamlosses - teamforfeits)) / 2) AS gamesbehind 
        FROM sportsdb_teams 
        WHERE teamdiv = {$divs['divid']}";

        if ($standings_sort == 9) {
            $query .= " AND teamid != {$results['teamid']}";
        }
        $query .= " AND active = 1" . $division_sort . " ORDER BY $sort_order";
        //echo "<br><pre>$query</pre><br>";
        $result=mysql_query($query);
        $num=mysql_num_rows($result);
        $postupujici=(int)@$_GET['postup'];
        $baraz=(int)@$_GET['baraz'];
        $row_number =0;
        while ($results = mysql_fetch_array($result, MYSQL_ASSOC)) {
            $winningpct=number_format($results['winningpct'], 3)*100;
            $gamesbehind = number_format($results['gamesbehind'],1);

            if ($gamesbehind == "0.0") {
                $gamesbehind = "---";
            }
            
            $sql="SELECT w.winner AS winnerID,w.loser AS loserID,datum,winortie,rf,ra,tw.teamname AS winner,tl.teamname AS loser FROM sportsdb_wins w LEFT JOIN sportsdb_teams tw ON w.winner=tw.teamid LEFT JOIN sportsdb_teams tl ON w.loser=tl.teamid WHERE w.winner={$results['teamid']} OR w.loser={$results['teamid']} ORDER BY w.winid DESC LIMIT 5";
            $resWins=mysql_query($sql);
            

?>
    <tr  style="background-image:url(img/Radky.png)">
     <td style="color:<? If($row_number<$postupujici)echo'#008000';ElseIf($row_number-$postupujici<$baraz)echo'#4169e1';Else echo'#8b0000'?>"><b><?=++$row_number ?></b></td>
     <td><?php print "\t\t" . '<img height="15" width="16" title="' . $results['teamname'] .'" src="http://www.michales.eu/img/' . $results['teamname'] .'.gif">' . "\n"; ?></td>
        <td id="f"><b><a id="f" href="rozpis_new_white.php?tym=<?php print $results['teamid']; ?>&conf=<?php print $confid; ?>&body=<?php print $body; ?>&postup=<?php print $postup; ?>&baraz=<?php print $baraz; ?>" title="View scores for <?php print $results['teamname']; ?>"><?php print $results['teamname']; ?></a></b></td>
       <td width="35%"><a id="c" href="soupiska_tymu_black.php?tym=<?php print $results['teamname']; ?>&conf=<?php print $confid; ?>" title="View scores for <?php print $results['nickname']; ?>"><em><?php print $results['nickname']; ?></em></a></td> 
        <td><?php print $results['gamesplayed']; ?></td>
        <td><?php print $results['teamwins']; ?></td>
        <td><?php print $results['teamlosses']; ?></td> 
<?php if ($show_ties) { ?>
        <td><?php print $results['teamties']; ?></td>

<?php }
if ($forfeit) { ?>
        <td><?php print $results['teamforfeits']; ?></td>
<?php }
if ($show_rfra) { ?>
        <td><?php print (($results['teamrf']).':'. $results['teamra']); ?></td> 
        

       
<?php } ?>

<?php if ($show_points) { ?>
        <td id="e"><b><?php print $results['points']; ?></b></td>
<?php } ?>
        
        <td><?php
            while($rw=mysql_fetch_assoc($resWins)){
                switch($rw['winortie']){
                    case 0:
                        $bg='white';
                        $winner=$loser=$rw['winner'].'+'.$rw['loser'];
                        $popis='remíza';
                        break;
                    case 1:
          $bg=($rw['winnerID']==$results['teamid'])?'Mediumseagreen':'Lightcoral'; 
                        $winner=$rw['winner'];
                        $loser=$rw['loser'];
                        $popis='Vyhrál tým - '.$rw['winner'];
                        break; 
                    case 2:
                        $bg=($rw['winnerID']==$results['teamid'])?'royalblue':'royalblue'; 
                        $winner=$rw['winner'];
                        $loser=$rw['loser']; 
                        $popis='V prodloužení vyhrál tým - '.$rw['winner'];
                        break;
                    case 4:
          $bg=($rw['winnerID']==$results['teamid'])?'Lightcoral':'Mediumseagreen';
                        $winner=$rw['loser'];
                        $loser=$rw['winner']; 
                        $popis='Vyhrál tým - '.$rw['loser'];
                        break; 
                    case 5:
                        $bg=($rw['winnerID']==$results['teamid'])?'royalblue':'royalblue'; 
                        $winner=$rw['loser'];
                        $loser=$rw['winner'];
                        $popis='V prodloužení vyhrál tým - '.$rw['loser'];
                        break;
                }
                $vlozeno=datetime::createfromformat('Y-m-d H:i:s',$rw['datum']);
                $popis_datum='Výsledek uložen v '.$vlozeno->format('H:i:s: D.d.n.Y'); 
                echo '<div style="background-image:url(\'/img/'.$bg.'.gif\');width:10px;height:10px;float:left">
                &nbsp;
                <div  class="hiddenxD" style="background-image:url(\'/img/'.$bg.'.png\');width:240px;"><p/>
                '.$popis.'<br/>
                '.$popis_datum.'<br/>
                '.$rw['winner'].' <img width="15" height="15" src="/img/versus.png"> '.$rw['loser'].'<br />
                '.$rw['rf'].':'.$rw['ra'].' <br />
        Gratulujeme!!   <br />
                </div>
                </div>';
            }
        ?></td>
    </tr>
<?php
        }
    }
?>
Gameplayed je počet odehraných zápasů
juriad
Profil
1) Přídáš sloupec limit do SELECTu na řádku 4, budeš muset napsat: `limit`, protože limit je klíčové slovo v mysql.
2) použiješ stejný způsob jako na řádku 41 s podmínkou: $results['gamesplayed'] < $result['limit'] a pokud je podmínka splněna, nastavíš color na #ff0000. (Za předpokladu, že v databázi jsou čísla)

Máš v tom docela bordel, nebylo by lepší místo nastavování color přes inline styl přiřadit řádku nějakou třídu, kterou bys pak nastyloval přes css? (Ano bylo, hned to předělám, díky za tip. Nemáš zač.)
Joker
Profil
Michales:
No tak jestli počet odehraných zápasů je v gamesplayed, tak není moc co řešit, ne?
Pokud gamesplayed je menší než limit, zobrazit červeně.

Jinak návrh té tabulky, dotazy a práce s daty mi přijdou trošku divoké.
Michales
Profil
Děkuji za rady.
Nenapsali by jste mi to prosím? Nějak v tom tápu.
juriad
Profil
Michales:
Pokud jsi stávající kód dokázal napsat sám, tak by snad neměl být problém přidat na jedno místo jednu podmínku.

Pokud máš problém (konkrétnější než "nějak v tom tápu"), poděl se o něj (podrobně jej popiš: co jsi zkoušel a co nefunguje) a třeba přijdeme na řešení.
Michales
Profil
kod jsem nespal sám, je to stažené z internetu.
Problém je v tom že nevím jak napsat tu podmínku
juriad
Profil
Pokud chceš celý řádek červeně, tak na řádek 40 přidáš podmínku, která ti vypíše do style color: #ff0000; v případě, že podmínka platí

<tr  style="background-image:url(img/Radky.png); <?php if(podmínka) { echo 'color: #ff0000;'; } ?>">

Podmínku už jsem ti napsal v [#4].
Michales
Profil
Tak mi to stejně nejde, chci jen obarvit příslušné pole(písmo)
Mám to takto a nic to neobarvilo:
<td style="font-color:<?php if($results['gamesplayed'] < $result['limit']) { echo 'color: #ff0000' ;} ?>"><?php print $results['gamesplayed']; ?></td>
juriad
Profil
<td <?php if($results['gamesplayed'] < $results['limit']) { echo 'style="color: #ff0000;"';} ?>><?php print $results['gamesplayed']; ?></td>

(1) nic jako font-color neexistuje
(2) vypisuj style, jen pokud má mít nějaký obsah (když je splněna podmínka)
(3) měl jsi tam nejspíš překlep: $result
Michales
Profil
Funguje naprosto perfektně. Děkuji

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: