| Autor | Zpráva | ||
|---|---|---|---|
| Fox21 Profil * |
#1 · Zasláno: 17. 4. 2023, 14:06:20
Ahoj, mám řešený košík přes session kde mam uložené ID produktu a počet kusů a z dabatáze v košíku načítám data jako cena a název produktu. Potřeboval bych nějak udělat celkový součet košíku, ale vůbec nevím jak na to. Kdyby byly počty kusů uloženy v DB, tak bych v příkazu použil příkaz SUM, ale takhle mě nic nenapadá. Měl by někdo nějaké řešení?
<?php if ($_SESSION["kosik"]) {
$tabulka_A='<table >
<thead align="center">
<tr style="line-height:30px; background-color:#00406D;">
<th class="pismo_tabulka" width="50">ID</th>
<th class="pismo_tabulka" width="350">Název zboží</th>
<th class="pismo_tabulka" width="50">Skladem</th>
<th class="pismo_tabulka" width="50">Počet ks</th>
<th class="pismo_tabulka" width="50">Cena za kus</th>
<th class="pismo_tabulka" width="70">Cena celkem</th>
<th class="pismo_tabulka" width="50">Odebrat z košíku</th>
</tr></thead>';
$result = mysqli_query($con, "SELECT * FROM zbozi WHERE id IN ('" . implode("', '", array_keys($_SESSION["kosik"])) . "')") or die (mysqli_error($con));
while ($row = mysqli_fetch_array($result)) {
$pocet_ks=$_SESSION["kosik"][$row["id"]];
$cena_za_ks=$row['cena_prodej_dph'];
$cena_total=$pocet_ks*$cena_za_ks;
$tabulka_A.='<tr style="line-height:30px;" class="radek'.($citac%2).'">
<td style="display: none;" class="pismo_tabulka" width="100">'.++$citac.'</td>
<td class="pismo_tabulka" width="50">'.$row['id'].' </td>
<td class="pismo_tabulka" width="350">'.$row['nazev'].'</td>
<td class="pismo_tabulka" width="50">skladem</td>
<td class="pismo_tabulka" width="50"> <form action="index.php?page=eshop/zpracuj_vlozit_kosik" method="post">
<input type="hidden" name="sent">
<input type="hidden" name="id" value="'.$row['id'].'"> <input style="width:30px; " type="text" name="pocet" value="'.$pocet_ks.'"> <input type="image" src="index_soubory/obrazky/save.png" style="width:24px; height:24px; position:relative; top:5px;" value="Uložit"></form></td>
<td class="pismo_tabulka" width="50">'.$row['cena_prodej_dph'].' </td>
<td class="pismo_tabulka" width="70"> '.$cena_total.',- Kč </td>
<td class="pismo_tabulka" width="50"> <form action="index.php?page=zpracuj_z_kosiku" method="post"><input type="hidden" name="sent"><input type="hidden" name="smazat" value="'.$row['id'].'"> <input type="image" style="position:relative; top:4px;" src="index_soubory/obrazky/delete.png" value="SMAZAT"></form> </td>
</tr>';
} $tabulka_A.='</table>';
mysqli_free_result($result); }
?>
<table align="center">
<tr><td><?php echo $tabulka_A; ?></td></tr>
<tr><td> </td></tr>
</table><br> |
||
| anonym_ Profil * |
#2 · Zasláno: 17. 4. 2023, 14:15:52
Fox21:
Počty kusů jednotlivých produktů jsou v `$pocet_ks`. Na začátku si zadefinuj `$celkem_ks = 0`, při každém průchodu cyklem k tomu přidej `$pocet_ks`. Na konci budeš mít celkový počet kusů všeho. |
||
| Keeehi Profil |
Před cyklus
$foo = 0;
uvnitř $foo += $cena_total;
No a po konci cyklu máš v proměnné $foo součet cen všech položek v košíku. Myslím si, že když se musíš na takové věci ptát, není úplně nejlepší nápad si tvořit vlastní eshop. Postav to na něčemhotovém. |
||
| anonym_ Profil * |
#4 · Zasláno: 17. 4. 2023, 14:16:59
Jo pardon, ty se ptáš na celkový součet peněz, že? Tam to bude podobné, jen budeš přičítat
$cena_total.
|
||
| I don't like AI Profil * |
#5 · Zasláno: 17. 4. 2023, 20:10:53 · Upravil/a: Moderátor (editace znemožněna) 18. 4. 2023, 07:14:22
Fox21:
Chápem, že s PHP asi viac-menej len začínaš. Ak sa mu venuješ dlhšie, tak určite nie naplno. K podstatným veciam sa už vyjadrili kolegovia vyššie, ja doplním ešte zopár typov. Takéto miešanie PHP a HTML kódu nie je veľmi šťastné, pretože to kód zneprehľadňuje. Kľúčové slovo na ďalšie štúdium je šablónovacie systémy. SELECT * FROM zbozi WHERE id IN ('" . implode("', '", array_keys($_SESSION["kosik"])) . "') A teraz si do košíka ulož Mc Donald's Big Mac. Kľúčové slovo SQL Injection.
<td class="pismo_tabulka" width="350">'.$row['nazev'].'</td> - bez ošetrenia nie. Kľúčové slovo XSS.
|
||
|
Časová prodleva: 3 roky
|
|||
0