Autor Zpráva
Stepanka
Profil *
Ahoj,

mohl by mi někdo, prosím, poradit?

Mám takovýto kód, který mi tahá údaje z databáze a pak je zobrazuje v tabulce:

$result = mysql_query(" SELECT 
									p.$text AS nazev_platby,
									count(o.id_objednavka) AS pocet_objednavek,
									sum(CEIL(o.celkova_cena)) AS celkova_cena,
									sum(o.celkem_bez_dph) as celkem_bez_dph,
									sum(o.celkem_poplatek) AS celkem_poplatek

						FROM ".TBL_PREFIX."objednavky o
						JOIN ".TBL_PREFIX."platby p ON o.id_platba=p.id_platba ".$sql_on."
						GROUP BY p.id_platba
						") or die(err(1));

echo '<table class="hlavni" style="width:auto">
	<tr><th rowspan="2">'.__PLATBA__.'</th><th colspan="2">'.__POCET_OBJEDNAVEK__.'</th><th colspan="2">'.__CELKEM_BEZ_DOPRAVY_A_DPH__.'</th><th colspan="2">'.__CELKEM_S_DOPRAVOU_A_DPH__.'</th></tr>
	<tr>
	<th class="center">'.__KS__.'</th><th class="center">%</th>
	<th class="center">'.__KS__.'</th><th class="center">%</th>
	<th class="center">'.__KS__.'</th><th class="center">%</th>
	</tr>
	</tr>';

while ($row = mysql_fetch_array($result)) {
		
		echo '<tr>
				<td>'.$row['nazev_platby'].'</td>
				<td class="right">'.$row['pocet_objednavek'].'</td>
				<td> * </td>
				<td class="right">'.cena($row['celkem_bez_dph'],true,false).'</td>
				<td> * </td>
				<td class="right">'.cena($row['celkova_cena'],true,false).'</td>
				<td> * </td>
			</tr>';

		$celkem_objednavek=$celkem_objednavek+$row['pocet_objednavek'];
		$celkova_cena=$celkova_cena+$row['celkova_cena'];
		$celkem_bez_dph=$celkem_bez_dph+$row['celkem_bez_dph']+$poplatek_bez_dph;			
}

echo '<tr><td><strong>'.__CELKEM__.':</strong></td>
	<td class="right"><strong>'.$celkem_objednavek.'</strong></td>
	<td></td>
	<td class="right"><strong>'.cena($celkem_bez_dph,true,false).'</strong></td>
	<td></td>
	<td class="right"><strong>'.cena(ceil($celkova_cena),true,false).'</strong></td>
	<td></td>
	</tr>';	 
	
echo '</table>';


A v těch buňkách, ve kterých jsou hvězdičky * bych potřebovala zobrazit vždy procenta z uvedených údajů.

Pro lepší pochopení uvedu příklad, jak by to mělo vypadat: [url=http://obi22.ic.cz/pokus.php]http://obi22.ic.cz/pokus.php
[/url]

Zde by v prvním řádku měly být hodnoty 28,6%, 95,94%, 92,15%..

Vím samozřejmě, jak vypočítat procenta z celkové částky. Ale chybí mi právě ta celková částka. Jak by se z té databáze dala vytáhnout, abych ji mohla používat hned v prvním průchodu cyklem?

Děkuju.
SwimX
Profil
$query = "select count(*) as pocet from `kniha`";
 $result = mysql_query($query) or die("Dotaz nelze provést: " . mysql_error());

takov0ho n2co< samoy5ejm2 upraven0 pro tvuj p59pad..
SwimX
Profil
nemůžu změnit svuj příspěvek?
>> něvo takověho? samozřejmě upravené pro tvuj případ..
Stepanka
Profil *
SwimX
Díky za reakci, ale asi jsi nepochopil můj případ.. SELECT count tam už mám, ale celkový počet objednávek znám až na konci cyklu. Jenže já bych ho potřebovala znát už na začátku, ať z toho celkového počtu můžu počítat procenta..

Ale asi to vyřeším dotazem navíc..
Joker
Profil
Stepanka
Buď dotaz navíc, nebo si data z té tabulky nejdřív uložit a až potom sestavit HTML kód... něco jako:
$tabulka = array(); $i=0;
while ($row = mysql_fetch_array($result)) {
        $tabulka[$i][0] = $row['nazev_platby'];
        $tabulka[$i][1] = $row['pocet_objednavek'];
        $tabulka[$i][3] = cena($row['celkem_bez_dph'],true,false);
        $tabulka[$i][5] = cena($row['celkova_cena'],true,false);
        
        $celkem_objednavek=$celkem_objednavek+$row['pocet_objednavek'];
        $celkova_cena=$celkova_cena+$row['celkova_cena'];
        $celkem_bez_dph=$celkem_bez_dph+$row['celkem_bez_dph']+$poplatek_bez_dph;            
        $i++;
}
$html = "";
for($j=0; $j<$i; $j++){
        $tabulka[$j][2] = ($tabulka[$j][1] / $celkem_objednavek) * 100;
(...)
        $html .= '<tr><td>'.implode('</td><td>', $tabulka[j]).'</td></tr>';

Nějak takhle.
SwimX
Profil
Stepanka
pochopil sem: ale myslel sem jinak než sem psal:
nejdřív udělat ten count,
potom ten druhej s výpisen

dšlat pole viz Joker mi příde horší z důvodu paměti
Stepanka
Profil *
Joker
Děkuju.. ale už jsem to vyřešila druhým dotazem.
Joker
Profil
SwimX
Víceméně souhlas, ale asi by záleželo i na konkrétní situaci.
Ale ještě lepší podle mě je myšlenku toho pole rozšířit na ukládání celého webu a používat šablony :-)
Kajman_
Profil *
Také se dá použít
GROUP BY WITH ROLLUP
A přednostně si zpracovat součtový řádek.

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: