Autor Zpráva
Anonymní
Profil *
Chystám tabulku s fotbalovými výsledky.

Z formuláře budu mít pomocí $_POST proměnné asi tyto:

$tym (název týmu)

$score (skóre ve formátu např. 22:12)

$body (za výhru 3 atd...)

Jak udělat automatické seřazení podle bodů, s přihlédnutím k tomu, že když bude mít více týmů stějně bodů, bude rozhodovat scóre? (góly venku)????


Díky za tip.:)
Anonymní
Profil *
bude rozhodovat scóre? (góly venku)????
Teda góly doma jsem chtěl říct.:)
peta
Profil *
php array_sort() (http://cz2.php.net/array_)
lepe to delat v sql, kdyz mas tabulku v sql. sql je primo delane na praci s tabulkami.
joejoe
Profil *
v sql lze zadat razeni podle druheho klice
ORDER BY `body` DESC,`score_venku` ASC // serazene podle bodu sestupne, v pripade ze se body rovnaji, tak podle sloupce score_venku vzestupne.
otazka je jak co nejlepe zvolit strukturu sql tabulek a mit v nich ulozene tyto informace (doporucuju pouzit nejakou kombinaci SUM() GROUP BY)

je mozne taky pouzit funkce sort, array_sort, array_multisort s tim, ze si musite overit jakym algrotimem pracuji (hlavne jestli je stabilni = 2. serazeni neovlivni poradi serazenych prvku), nejdriv seradite pole podle poctu golu doma, a potom podle bodu

jeste je mozne zkusit implementovat si nejaky vlastni algoritmus - v tom pripade hledejte slova jako "bubble sort", "quick sort", "list merge sort" atd.
Anonymní
Profil *
Díky.:)
joejoe
Profil *
dneska je tvuj stastny den, zkusil jsem si to implementovat:
http://www.volny.cz/joejoe/download/fotbal.rar
Anonymní
Profil *
Hej, tak to je supééér, díky!:)) Akorát jedna věc k tomu super scriptu, když je tým co nemá ani jeden bod, tak se mu v tabulce nezobrazí 0 (nula), ale prázdný políčko a pak to vypadá blbě, jako by tam jeden colspan přebýval jestli víš co myslím. Jak by to šlo poupravit?
Anonymní
Profil *
Už jsem na to přišel sám, snad odbře.:)



if ($row['goly1'] > $row['goly2']) { // vyteztvi teamu 1
$tab[$t1]['body'] += 3;
$tab[$t2]['body'] += 0;
} else if ($row['goly2'] > $row['goly1']) { // vyteztvi teamu 2
$tab[$t2]['body'] += 3;
$tab[$t1]['body'] += 0;
} else { // remiza
$tab[$t1]['body'] += 1;
$tab[$t2]['body'] += 1;
}
Anonymní
Profil *
Hm, píše mi to:

Unknown column 't1.id' in 'on clause' :((
Anonymní
Profil *
tAK TO UŽ JSEM VYŘEŠIL. aLE V TABULCE MI TO NESEŘAZUJE PODLE BODŮ A CHTĚL BYCH TAM DODAT SLOUPEC UMÍSTĚNÍ.
Anonymní
Profil *
No, takže tohle mi absolutně nevyhovuje. Mám tři tabulky:

Gold, Silver a Bronz a každá má pořadí 1 - 6. A mám dělat aktualize do každé zvláš´t. Podumám, co si vezmu z tvého scriptu a pokusím se to předělat. Ale i tak samozřejmě díky.
Anonymní
Profil *
Mám to dobře? Nechce mi to nic zapisovat do databáze.


<form action="./admin_tab_off_gold.php" method="post" id="form">
<table border="0" cellpadding="4" cellspacing="0">
<thead>
<tr>
<th colspan="3">Administrace tabulky GOLD</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center;font-size:11px;color:#000000;"><select name="team1">
<?
foreach ($teamy as $t) {
echo "<option value=\"$t[id_tymu]\">$t[jmeno]</option>";
}
?>
</select></td><td>:</td><td style="text-align:center;font-size:11px;color:#000000;"><select name="team2">
<?
foreach ($teamy as $t) {
echo "<option value=\"$t[id_tymu]\">$t[jmeno]</option>";
}
?>
</select></td>
</tr>
<tr>
<td align="center"><input type="text" name="goly1" size="3"/></td><td>:</td><td align="center"><input type="text" name="goly2" size="3"/></td>
</tr>
<tr>
<td align="center" colspan="3"><input type="submit" style="width:120px;background-color:black;color:white;font-weight:bold ;" value="odešli aktualizaci"></td>
</tr>
</tbody>
</table>
</form>



A sem se to odesílá:



<?php
db_connect();
$t1 = (integer)$_REQUEST['team1'];
$t2 = (integer)$_REQUEST['team2'];
$g1 = (integer)$_REQUEST['goly1'];
$g2 = (integer)$_REQUEST['goly2'];

$query = "UPDATE gold SET goly1 = '$g1', goly2 = '$g2' WHERE jmeno = '$t1' SET goly2 = '$g1', goly1 = '$g2' WHERE jmeno = '$t2'";
mysql_query($query) or die(mysql_error());

header('location: admin_tab_off.php');
exit()
?>
Anonymní
Profil *
Jo a tabulka gold je taková:

CREATE TABLE `gold` (
`id_tymu` int(11) NOT NULL auto_increment,
`jmeno` varchar(32) NOT NULL default '',
`goly1` varchar(3) NOT NULL default '',
`goly2` varchar(3) NOT NULL default '',
PRIMARY KEY (`id_tymu`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1405 ;
Anonymní
Profil *
$dotaz = "SELECT `t1`.`jmeno` as `team1`, `t2`.`jmeno` as `team2`, `zapasy_green`.`goly1`, `zapasy_green`.`goly2` FROM `zapasy_green`"
." LEFT JOIN `green` as t1 ON `t1`.`id_tymu` = `zapasy_green`.`team1`"
." LEFT JOIN `green` as t2 ON `t2`.`id_tymu` = `zapasy_green`.`team2`"
." WHERE `zapasy_green`.`hrano` = 'y'"
;

$tab = array();
$result = mysql_query($dotaz) or die(mysql_error());

while($row = mysql_fetch_array($result)) {

$t1 = ibynameg($tab, $row['team1']);
$tab[$t1]['jmeno'] = $row['team1'];
$t2 = ibynameg($tab, $row['team2']);
$tab[$t2]['jmeno'] = $row['team2'];

if ($row['goly1'] > $row['goly2']) { // vyteztvi teamu 1
$tab[$t1]['body'] += 3;
$tab[$t2]['body'] += 0;
} else if ($row['goly2'] > $row['goly1']) { // vyteztvi teamu 2
$tab[$t1]['body'] += 0;
$tab[$t2]['body'] += 3;
} else { // remiza
$tab[$t1]['body'] += 1;
$tab[$t2]['body'] += 1;
}

$tab[$t1]['vst_doma'] += $row['goly1'];

$tab[$t1]['vst'] += $row['goly1'];
$tab[$t2]['vst'] += $row['goly2'];

$tab[$t1]['ink'] += $row['goly2'];
$tab[$t2]['ink'] += $row['goly1'];

}

BubbleSortg($tab, 'vst_doma');
BubbleSortg($tab, 'body');

function ibynameg(&$p, $jmeno) {
for ($i = 0; $i < sizeof($p); $i++) {
if ($p[$i]['jmeno'] == $jmeno) {
return $i;
}
}
return sizeof($p);
}

function BubbleSortg(&$p, $key) {
$sorted = false;
while (!$sorted) {
$sorted = true;
for ($i = 1; $i < sizeof($p); $i++) {
if ($p[$i-1][$key] < $p[$i][$key]) {
$sorted = false;
$tmp = $p[$i-1];
$p[$i-1] = $p[$i];
$p[$i] = $tmp;
}
}
}
}
Toto téma je uzamčeno. Odpověď nelze zaslat.

0