Autor Zpráva
microfox
Profil *
<h2 class='h2registrace'>Nákupní košík</h2>
<div class='registrace_text_error'>Všechny jsou včetně DPH</div><br>
<?php
$email=$_SESSION['email'];
$pozice=$_SESSION['pozice'];

require "db.php"; // pripojeni k databazi
$kosik_html='<table align="center" style="font-family:verdana; font-size:12px; line-height:1.5;" border="1"><thead align="center">
<tr bgcolor="#009FB0">
<th ><font style="color:white; font-family:Tahoma; font-size:12px;">Kód</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px;">Název produktu</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Množství</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Cena za 1ks</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Cena celkem</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Odebrat</th>
';
$kosik=mysql_query("SELECT * FROM TK_KOSIK WHERE email='$email' ");   
while($data=mysql_fetch_assoc($kosik))
{
 $zbozi=mysql_query("SELECT * FROM TK_ZBOZI ");   
 while($data_zbozi=mysql_fetch_assoc($zbozi))
 {
  if ($data['kod_produktu']==$data_zbozi['kod_produktu'])
  {
 $bronz=$data_zbozi['Bronz_s_dph']/"1.20";
 $silver=$data_zbozi['Silver_s_dph']/"1.20";
 $gold=$data_zbozi['Gold_s_dph']/"1.20";

$kosik_html.='
<tr>
<td>'.$data_zbozi['kod_produktu'].'</td>
<td>'.$data_zbozi['nazev_produktu'].'</td>
<td>'.$data['mnozstvi'].'</td>
<td> ';  
if($pozice==Bronz) {$kosik_html.= $data_zbozi['Bronz_s_dph']; $kosik_html.=',- Kč' ; }
if($pozice==Silver) {$kosik_html.= $data_zbozi['Silver_s_dph']; $kosik_html.=',- Kč' ;}
if($pozice==Gold) {$kosik_html.= $data_zbozi['Gold_s_dph']; $kosik_html.=',- Kč' ;}
$kosik_html.='</td>
<td> ';  
if($pozice==Bronz) {$kosik_html.= $data_zbozi['Bronz_s_dph']*$data['mnozstvi']; $kosik_html.=',- Kč' ; }
if($pozice==Silver) {$kosik_html.= $data_zbozi['Silver_s_dph']*$data['mnozstvi']; $kosik_html.=',- Kč' ;}
if($pozice==Gold) {$kosik_html.= $data_zbozi['Gold_s_dph']*$data['mnozstvi']; $kosik_html.=',- Kč' ;}
$kosik_html.='</td>      
<td><form action="index.php?page=zpracuj_smazat_polozku_kosik" method="post">
<input type="hidden" name="smazat" value="'.$data['id'].'" /> 
<input type="image" name="submit" style="position:relative; top:0px" src="index_soubory/images/delete.png">
</form></td>
</tr>';
}}}
$kosik_html.='</table>';
?>
<table align="center"><tr><td><?php echo $kosik_html; ?></td></tr></table>


- Zde je jak bych chtěl aby to vypadalo....přimaloval jsem tam ten poslední řádek SUMA

Pomohl by mi někdo s tím kódem? Já mam problém ten, že když tam chci ten řádek přidat tak se mi přidá pod každou položku v košíku, jenže já ho potřebuju jen na konec té tabulky a nevím jakým způsobem sečíst ty položky. Děkuji


$kosik_html.='<tr><td colspan="3">SUMA</td><td>Součet</td><td>Součet</td></tr></table>';
?>
<table align="center"><tr><td><?php echo $kosik_html; ?></td></tr></table>

Tak ten řádek kde bude součet jsem pořešil, ted to jen sčítat...
Again
Profil
Předtím než nastíním řešení problému, měl bych výtku ke tvému kódu je strašně nepřehledný. Snaž se ho prosím odsadit alespoň tabulátorem.

Součet všech položek je velice jednoduchý, z toho co jsem pochopil, máš jednotlivé položky v tabulce (dočasné ?) a v samotném košíku si vybereš dotazem do jiné tabulky ostatní informace (tady použij spojování tabulek místo svého dotazu v cyklu). Při výběru jednotlivých položek můžeš přímo v daném cyklu počítat i jejich celkovou cenu pomocí operátoru přiřazení (+=), kdy přičteš k proměnné (např: $celkovaCena) v každém kole smyčky další cenu zboží ...

Zrovna u košíku bych volil jiné řešení, doporučují přečíst článek nákupní košík od Jakuba Vrány, kde je řešení pomocí SESSION přece jenom elegantnější.
microfox
Profil *
<?php
$email=$_SESSION['email'];

require "db.php"; // pripojeni k databazi
$kosik_html='<table border="1"><thead align="center">
<tr bgcolor="#009FB0">
<th><font style="color:white; font-family:Tahoma; font-size:12px;">Kód</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px;">Název produktu</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Množství</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Cena za 1ks</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Cena celkem</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Odebrat</th>
';
$kosik=mysql_query("SELECT * FROM `TK_KOSIK` JOIN `TK_ZBOZI` WHERE email='$email' ");
while($data=mysql_fetch_assoc($kosik))
{
$kosik_html.='
<tr>
<td>'.$data['kod_produktu'].'</td> 

</tr>
';}$kosik_html.='</table>';  

?>
<table align="center"><tr><td><?php echo $kosik_html; ?></td></tr></table>
Prikaz JOIN mi polozky vypisuje 2x a nevim proc


PRIKAZ JOIN v tom dela akorat vetsi chaos...kdyz mam v kosiku ukladany kod produktu vcetne mailu prihlasenyho uzivatele a chci k tomu vypsat detaily z tabulky zbozi tak to vypisuje nesmysly vsechen mix dohromady a nejde to zadnou podminkou osefovat. Docela bych rad videl reseni pres JOIN
Again
Profil
Nepoužil jsi klauzuli ON pro usměrnění svého dotazu do databáze. Zkus si nastudovat něco více o spojování tabulek. I když neznám přesnou strukturu tvých tabulek, mělo by ti stačit něco na způsob:

$kosik = mysql_query("SELECT (*TVÉ POLOŽKY*)
                      FROM `TK_KOSIK` 
                      INNER JOIN `TK_ZBOZI` ON TK_ZBOZI.kod_produktu = TK_KOSIK.kod_produktu 
                      WHERE TK_KOSIK.email='$email'");
microfox
Profil *
<h2 class='h2registrace'>Nákupní košík</h2>
<div class='registrace_text_error'>Všechny jsou včetně DPH</div><br>
<?php
$email=$_SESSION['email'];
$pozice=$_SESSION['pozice'];

require "db.php"; // pripojeni k databazi
$kosik_html='<table border="1"><thead align="center">
<tr bgcolor="#009FB0">
<th><font style="color:white; font-family:Tahoma; font-size:12px;">Kód</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px;">Název produktu</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Množství</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Cena za 1ks</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Cena celkem</th>
<th><font style="color:white; font-family:Tahoma; font-size:12px">Odebrat</th>
';
$kosik = mysql_query("SELECT * FROM `TK_KOSIK` INNER JOIN `TK_ZBOZI` ON TK_ZBOZI.kod_produktu = TK_KOSIK.kod_produktu WHERE TK_KOSIK.email='$email'");
while($data=mysql_fetch_array($kosik))
{
$kosik_html.='
<tr>
<td>'.$data['kod_produktu'].'</td> 
<td>'.$data['nazev_produktu'].'</td> 
<td>'.$data['mnozstvi'].'</td> 
<td> ';  
if($pozice==Bronz) {$kosik_html.= $data['Bronz_s_dph']; $kosik_html.=',- Kč' ;}
if($pozice==Silver) {$kosik_html.= $data['Silver_s_dph']; $kosik_html.=',- Kč' ;}
if($pozice==Gold) {$kosik_html.= $data['Gold_s_dph']; $kosik_html.=',- Kč' ;}
$kosik_html.='</td>
<td> ';  
if($pozice==Bronz) {$kosik_html.= $data['Bronz_s_dph']*$data['mnozstvi']; $kosik_html.=',- Kč' ; }
if($pozice==Silver) {$kosik_html.= $data['Silver_s_dph']*$data['mnozstvi']; $kosik_html.=',- Kč' ;}
if($pozice==Gold) {$kosik_html.= $data['Gold_s_dph']*$data['mnozstvi']; $kosik_html.=',- Kč' ;}
$kosik_html.='</td>
<td><form action="index.php?page=zpracuj_smazat_polozku_kosik" method="post">
<input type="hidden" name="email" value="'.$data['email'].'" /> 
<input type="hidden" name="smazat" value="'.$data['kod_produktu'].'" /> 
<input type="image" name="submit" style="position:relative; top:0px" src="index_soubory/images/delete.png">
</form></td>  
</tr>
';}$kosik_html.='<tr><td colspan="3">SUMA</td><td>Součet</td><td>Součet</td></tr></table>';  
?>
<table align="center"><tr><td><?php echo $kosik_html; ?></td></tr></table>

Tak už jsem to překopal dle rady přes JOIN :-) Řádku je o dost méně :-) tim líp a přehlednější to taky je :-) Jen jsem nepochopil jak udělat to přičítání do $celkova_cena...
Again
Profil
Jak jsem již psal výše, stačí vytvořit proměnnou $celkovaCena s hodnotou 0 před cyklem while, a potom v samotném cyklu přičítat jednotlivé hodnoty (v každém kole smyčky):

$celkovaCena += $aktualniCenaVyrobku;

Následně bude proměnná $celkovaCena obsahovat součet všech vybraných výrobků.
Lamicz
Profil
Co TO je??
$bronz=$data_zbozi['Bronz_s_dph']/"1.20";
1) float je taky číslo, takže bez uvozovek
2) DPH se bude měnit, hodně štěstí s hledáním ;)
microfox
Profil *
1.DPH se nemění každý dn
2.Vůbec ho v tomto případě nepotřebuji
3.U daného produktu sice budu potřebovat vypočítat cenu bez DPH, ale tak pokud jooo to potřebuju mít univerzálně, tak si udělám proměnnou a přes tu si to budu nastavovat :-)
Majkl578
Profil
microfox:
On má ale Lamicz pravdu. Máš nějaký rozumný důvod float uvádět jako řetězec? Nicméně on celý ten kód je dost hrozný, tohle už se v něm docela ztrácí jako nepodstatný detail.

ale tak pokud jooo to potřebuju mít univerzálně
Za univerzální se právě většinou považuje cena bez DPH. To mimojiné zahrnuje tu výhodu, že při změně sazby DPH nebudeš muset upravovat ceny všech výrobků v celé databázi (a že u e-shopu bys nad tím strávil hodně času).

DPH se nemění každý dn
No, není to tak dlouho od poslední změny a už se připravuje další.

Mimochodem, počítáš všude se sazbou 20%, co položky, které spadají do 14% sazby?
microfox
Profil *
Ja s položkami které spadají do sazby 14% neobchoduji :-)

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: