Autor Zpráva
Honzicek
Profil
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
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
tak by mohlo stačit:
SELECT SUM(zlate), SUM(stribrne), SUM(bronzove) FROM medaile
Honzicek
Profil
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
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
Honzicek
Profil
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']]++;
A na konci vypíšeš počty zase úplně stejně.
Honzicek
Profil
Nefunguje :(
pcmanik
Profil
Honzicek:
Jak nefunguje? Vyhadzuje nejakú chybu?
Honzicek
Profil
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
Bože, to jsem lama, už to funguje, 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: