Autor | Zpráva | ||
---|---|---|---|
Honzicek Profil |
#1 · Zasláno: 6. 8. 2013, 12:58:13
Zdravím přátele webů,
mám takový problém, vytvářím tabulku získaných medailí (zlato stříbro bronz) z různých akcí a potřeboval bych, aby mi to počítalo kolik medailí už bylo získáno. V tuhle chvíli mám hotové zadávání medailí, řazení dle typu akce (Mistrovství světa, Evropy...) a ted bych potřeboval, aby mi to vypsalo Počet získaných medailí: 23 - 14 - 76. Poradíte někdo? Děkuji předem |
||
juriad Profil |
#2 · Zasláno: 6. 8. 2013, 13:02:59
Ukaž strukturu té tabulky.
Pokud je to to něco jako: (země, počet zlatých, počet stříbrných, počet bronzových) 'USA', 46, 29, 29 'Čína', 38, 27, 23 SELECT SUM(zlate), SUM(stribrne), SUM(bronzove) FROM medaile |
||
Honzicek Profil |
#3 · Zasláno: 6. 8. 2013, 13:08:07 · Upravil/a: Honzicek
Ne, potřebuju, aby například bylo:
Mistrovství světa Počet získaných medailí: 13 - 17 - 43 zlato Martin Fuksa (kanoistika - kanoe 500 m, Portugalsko) zlato Martin Fuksa (kanoistika - kanoe 500 m, Portugalsko) zlato Martin Fuksa (kanoistika - kanoe 500 m, Portugalsko) zlato Martin Fuksa (kanoistika - kanoe 500 m, Portugalsko) <h2> Mistrovství světa </h2> <table width="610px" border="1xp solid black;"> <?php $srchQ = "SELECT * FROM medaile WHERE akce=1 ORDER BY poradi, datum DESC"; $srch = MySQL_Query($srchQ); $rows = MySQL_Num_Rows($srch); if ($rows==0) echo "<tr><td style='width: 50px;'> </td><td>Zatím žádná získaná medaile</td></tr>"; ?> <?php for ($i=0;$i<$rows;$i++): $zaznam = MySQL_Fetch_Array($srch); ?> <tr ><td style="width: 50px;"><?php echo $zaznam[medaile] ?></td><td><b><span style="font-size: 16px;"><?php echo $zaznam[jmeno] ?></b></span><span style="font-size:12px;"> (<i><?php echo $zaznam[disciplinamisto] ?></i>)</span></td></tr> <?php endfor; ?> </table> Aby když se přidá přes admin další medaile, aby ji to automaticky "přičetlo" |
||
juriad Profil |
#4 · Zasláno: 6. 8. 2013, 13:18:44
SELECT medaile, COUNT(*) FROM medaile WHERE … GROUP BY medaile vrátí několik řádků (0-3), podle toho, jestli získal alespoň jednu medaili toho typu; například pokud nezískal žádné stříbro: zlato, 13 bronz, 43 |
||
Časová prodleva: 21 dní
|
|||
Honzicek Profil |
#5 · Zasláno: 27. 8. 2013, 19:34:34
Prosím o zapracování kodu do tohoto kodu
<?php $srchQ = "SELECT * FROM medaile WHERE akce=0 ORDER BY poradi, datum DESC"; $srch = MySQL_Query($srchQ); $rows = MySQL_Num_Rows($srch); if ($rows !== 0): ?> <h2> Olympijské hry </h2> <table width="610px" border="1xp solid black;"> <?php for ($i=0;$i<$rows;$i++): $zaznam = MySQL_Fetch_Assoc($srch); ?> <tr><td class="<?php echo $zaznam['medaile'] ?>"><?php echo $zaznam['medaile'] ?></td><td><b><span style="font-size: 16px;"><?php echo $zaznam['jmeno'] ?></b> </span><span style="font-size:12px;">(<i><?php echo $zaznam['disciplinamisto'] ?></i>)</span></td></tr> <?php endfor; ?> </table> <?php endif; ?> |
||
juriad Profil |
Něco jako (nezkoušel jsem to):
$medaile = array('zlata' => 0, 'stribrna' => 0, 'bronzova' => 0); $sql = "SELECT medaile, COUNT(*) AS pocet FROM medaile WHERE … GROUP BY medaile"; $vysledek = mysql_query($sql); while($row = mysql_fetch_assoc($vysledek)) { $medaile[$row['medaile']] = $row['pocet']; } echo $medaile['zlata'] . '-' . $medaile['stribrna'] . '-' . $medaile['bronzova']; Nebo si počet medailí můžeš spočítat přímo v PHP (když už si vytahuješ informace o každé medaili. Za 13. řádek přidáš: $medaile[$row['medaile']]++; |
||
Honzicek Profil |
#7 · Zasláno: 27. 8. 2013, 19:51:54
Nefunguje :(
|
||
pcmanik Profil |
#8 · Zasláno: 27. 8. 2013, 20:40:03
Honzicek:
Jak nefunguje? Vyhadzuje nejakú chybu? |
||
Honzicek Profil |
#9 · Zasláno: 29. 8. 2013, 09:23:57 · Upravil/a: Honzicek
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /data/web/virtuals/16062/virtual/www/subdom/medaile/index.php on line 70
a píše to 0-0-0, ačkoliv by to mělo být 3-0-1. <h2> Mistrovství světa </h2> <?php $medaile = array('zlata' => 0, 'stribrna' => 0, 'bronzova' => 0); $sql = "SELECT medaile, COUNT(*) AS pocet FROM medaile WHERE … GROUP BY medaile"; $vysledek = mysql_query($sql); while($row = mysql_fetch_assoc($vysledek)) { $medaile[$row['medaile']] = $row['pocet']; } echo $medaile['zlata'] . '-' . $medaile['stribrna'] . '-' . $medaile['bronzova']; ?> <table width="610px" border="1xp solid black;"> <?php for ($i=0;$i<$rows;$i++): $zaznam = MySQL_Fetch_Assoc($srch); ?> <tr><td class="<?php echo $zaznam['medaile'] ?>"><?php echo $zaznam['medaile'] ?></td><td><b><span style="font-size: 16px;"><?php echo $zaznam['jmeno'] ?></b> </span><span style="font-size:12px;">(<i><?php echo $zaznam['disciplinamisto'] ?></i>)</span></td></tr> <?php endfor; ?> </table> <?php endif; ?> <?php $srchQ = "SELECT * FROM medaile WHERE akce=2 ORDER BY poradi, datum DESC"; $srch = MySQL_Query($srchQ); $rows = MySQL_Num_Rows($srch); if ($rows !== 0): ?> Ještě ke struktuře : 1 medaile - zlato, stříbro, bronz 2 poradi - 1,2, 3 3 akce- typ akce (MS=2....) 4 jmeno 5 disciplinamisto 6 datum 7 id |
||
Kajman Profil |
Honzicek
Na řádku 6 si ve where části doplňte místo trojtečky chtěnou podmínku. Na řádku 11 použijte přesné hodnoty, které ukládáte do db. |
||
Honzicek Profil |
#11 · Zasláno: 29. 8. 2013, 12:24:54
Bože, to jsem lama, už to funguje, děkuji
|
||
Časová prodleva: 11 let
|
0