Autor Zpráva
matlala
Profil
ahoj,
potřeboval bych pomoct s hledáním chyby ve skriptu:
<?php
include "include/zacatek_stranky.php";
echo"<script type=\"text/javascript\" src=\"".HTTP."/js/switchcontent.js\"></script>
<script type=\"text/javascript\" src=\"".HTTP."/js/switchicon.js\"></script>
<h1 class=\"center\">Půjčovna</h1>";
$num=mysql_num_rows(mysql_query("SELECT * FROM pujcovna"));
if(isset($_POST["uloz"])){
if($_POST["dnu"]==false or $_POST["dnu"]==""){
echo"<div class=\"center\"><strong>Nevyplnil/a jste počet dní na které chcete položky půjčit.</strong></div>";
}
else{
echo"<table class=\"tabulka_stred_pujcovna\" cellpadding=\"0\">
<tr><th class=\"left\">Položka</th><th></th><th class=\"center\">Kč/den</th><th class=\"right\">Cena za údržbu</th><th class=\"right\">Celkem bez údržby</th><th class=\"right\">Celkem s údržbou</th></tr>";
$soucet=0;
for($s=1;$s<=$num;$s++){
$nazev_postks="ks-".$s;
$ks=$_POST[$nazev_postks];
if($ks=="" or $ks==false){
$ks=0;
}
$id_post="id-".$s;
$id_polozky=$_POST[$id_post];
$vysl=mysql_query("SELECT * FROM pujcovna WHERE id='$id_polozky' limit 1");
$zazn=mysql_fetch_array($vysl);
if($ks!=0){
$pocetdni=$_POST["dnu"];
$cena_den=$ks*$zazn["cena_den"];
$cena=$cena_den*$pocetdni;
$sudrzbou=$cena+$zazn["udrzba"];
echo "<tr class=\"zvyrazneni\"><td class=\"left\">".$zazn["polozka"]."</td><td class=\"center\">".$ks." ks</td><td class=\"center\">".$zazn["cena_den"]." Kč</td><td class=\"right\">".$zazn["udrzba"]." Kč</td><td class=\"right\">".$cena." Kč</td><td class=\"right\"><strong>".$sudrzbou." Kč</strong></td></tr>";
}
if($_POST["dnu"]<5){
$dnu_i=" dny";
}
else{
$dnu_i=" dní";
}
if($s==$num){
$soucet+=$sudrzbou;
echo "<tr class=\"zvyrazneni\"><td colspan=\"5\">Celkem: ".$soucet." na ".$_POST["dnu"].$dnu_i."<td></tr>";
}
}
echo"</table><br>";
}
}
if(JePrihlaseny()==true and Prava()=="admin"){
echo"<a href=\"".HTTP."/pujcovna/pridat-polozku/\"><img src=\"".PRIDAT."\" alt=\"Přidat položku\" title=\"Přidat položku\" class=\"rss_img\"></a> <a href=\"".HTTP."/pujcovna/pridat-polozku/\">Přidat položku</a>";
}
if($num>0){
echo"<p><a href=\"javascript:faq.sweepToggle('contract')\">Sbalit vše</a> | <a href=\"javascript:faq.sweepToggle('expand')\">Rozbalit vše</a></p>
<form action=\"".$url."\" method=\"post\">";
$kat=array("Kroje kompletní","Mužské - součástky","Ženské - součástky","Dětské kompletní","Ostatní");
$a=0;
for($i=0;$i<=4;$i++){
$a=$a;
echo"<div class=\"eg-bar\"><span id=\"faq".$i."-title\" class=\"iconspan\">Sbalit</span>".$kat[$i]."</div>
<div id=\"faq".$i."\" class=\"icongroup1\">
<table class=\"tabulka_stred_pujcovna\" cellpadding=\"2\">
<tr><th class=\"center\">Fotka</th><th></th><th class=\"left\">Položka</th><th class=\"right\">Kč/den</th><th class=\"right\">Pořizovací cena</th><th class=\"right\">Cena za údržbu</th></tr>\n";
$kategor=$kat[$i];
$vysledek=mysql_query("SELECT * FROM pujcovna WHERE kat='$kategor' order by polozka");
while($zaznam=mysql_fetch_array($vysledek))
{
$a++;
if(JePrihlaseny()==true and Prava()=="admin"){
$akcea="<a href=\"".HTTP."/pujcovna/upravit-polozku/".$zaznam["id"]."/\"><img src=\"".TUZKA."\" alt=\"Upravit položku\" class=\"img2\"></a><br>\n
<a href=\"".HTTP."/pujcovna/smazat-polozku/".$zaznam["id"]."/\"><img src=\"".KRIZEK."\" alt=\"Smazat\" class=\"img2\"></a>\n<br>\n";
}
if($zaznam["fotka"]=="ANO"){
$foto_polozky="<a title=\"".$kat[$i]." - ".$zaznam["polozka"]."\" href=\"".HTTP."/".PUJCOVNA_FOTO."/".$zaznam["id"].".jpg\" class=\"thickbox\" rel=\"VPUT\"><img src=\"".HTTP."/".PUJCOVNA_FOTO."/nahled_".$zaznam["id"].".jpg\" alt=\"Fotka položky\" class=\"img\"></a>\n
<a href=\"".HTTP."/".PUJCOVNA_FOTO."/".$zaznam["id"].".jpg\" class=\"noveokno\" title=\"Otevřít v novém okně\"><img src=\"".NOVE_OKNO."\" alt=\"Nové Okno\" class=\"img2\"></a><br>\n";
}
else{
$foto_polozky="<img src=\"".BEZ_FOTA."\" alt=\"Fotka položky\" class=\"img\">";
}
if($_POST["dnu"]!=false or $_POST["dnu"]!=""){
$nazev="ks-".$a;
$value=$_POST[$nazev];
}
else{
$value=0;
}
echo"<tr class=\"zvyrazneni\"><td class=\"middle-img\">".$foto_polozky."</td><td class=\"pujcovna_td_upravy\">".$akcea."<input type=\"text\" value=\"".$value."\" size=\"1\" name=\"ks-".$a."\" class=\"input_pujcovna-ks\"> ks<input type=\"hidden\" value=\"".$zaznam["id"]."\" name=\"id-".$a."\"></td><td class=\"left\">".$zaznam["polozka"]."</td><td class=\"right\">".$zaznam["cena_den"]." Kč</td><td class=\"right\">".$zaznam["cena_celkem"]." Kč</td><td class=\"right\">".$zaznam["udrzba"]." Kč</td></tr>\n";
}
echo"</table></div>\n";
}
if($_POST["dnu"]!=false or $_POST["dnu"]!=""){
$value2=" value=\"".$_POST["dnu"]."\"";
}
echo"<div class=\"clearboth\">&nbsp;</div>
<div><strong>Počet dní: <input type=\"text\" size=\"3\" name=\"dnu\" class=\"input\"".$value2."></strong></div>
<div class=\"center\"><input type=\"submit\" name=\"uloz\" value=\"Spočítat\" class=\"tlacitko_ulozit_b\"></div></form>";
}else{echo"<div class=\"center\"><strong>Ještě nebyly vloženy žádné položky.</strong></div>";}
echo"<script type=\"text/javascript\">
var faq=new switchicon(\"icongroup1\", \"div\")
faq.setHeader('<img src=\"".HTTP."/ico/minus.gif\" alt=\"Sbalit\">', '<img src=\"".HTTP."/ico/plus.gif\" alt=\"Rozbalit\">') 
faq.collapsePrevious(false)
faq.setPersist(true, 10)
faq.init()
</script>";
include "include/konec_stranky.php";
?>


schválně ho tu dávám celý.
takže jedná se mi o řádek 39 součet všech součtů (součet proměnných $sudrzbou) v cyklu for. Pořád mi to háře jakési nesmyslné čísla. Funkční ukázka je půjčovna na VPUT.cz. Má vynásobit celkovou cenu počtem dní, přičíst cenu za údržbu a pak seeč
tragi
Profil *
melo by se ti jednat o radek 38 mas to v cyklu a ve chvili kdy cyklus projizdi naposledy, tak se ti provede podminka tim padem radek 39 se provede jenom jednou a zapocita to uplne posledni hodnotu...takze podminku zrusit a vypis dat az za konec cyklu a radek 38 nechat v cyklu,

jinak nestudoval jsem to cele ale jenom tak fyi vyraz typu $promenna == false je to same jako $promenna == 0 , jestli chces overit zdali je promenna vubec nastavena doporucuji pouzit budto:

1) isset($promenna) - koluji povery ze je to pry nejrychlejsi typovani...ale kdo dneska hraje na rychlost ze :)
2) $promenna === false -tri rovnase porovnavaji typy nikoli hodnoty
matlala
Profil
jj za rady diky, skript jsme opravil tim přesunutím, ale nepomohlo háže tam divné ceny.
tragi
Profil *
pro upresneni smazani radku 38 se ti posunou nasledujici radky a z radku 39 se stane radek 38 aneb jsem se prepsal a mel jsem namysli nechat radek 39(tedy scitani do celku) nechat v cyklu a vypis provest az za cyklem a tu podminku hodit dopryc
tragi
Profil *
jj za rady diky, skript jsme opravil tim přesunutím, ale nepomohlo háže tam divné ceny.
teď kouám už ten skript je pozměněný, asi nějáká početní chyba někde. Tak doporučuju si tam udělat testovací výpisy, za každým řádkem který ovlivňuje celkový součet, dát testovací výpis proměnných a chyba bude vidět ihned, a bude to rychlejší než přemejšlet kde je teď chyba.
tragi
Profil *
aha tak tobě ten cyklus projede tolikrát kolik je druhů zboží, tznm že teď pověstný 39. řádek proběhne v závislosti na počtu zobží a ne kolik zboží návštěvník chce, takže ten výslednej součet zkus šoupnout do té podmínky kde počítáš ostatní věci, ale ještě tam jsou další chyby ale to už nechám na tobě, a pardon za spam
matlala
Profil
aha už to mám
musím napsat
$soucet+=$cena+$zazn["udrzba"];
a ne
$soucet=$cena+$zazn["udrzba"];
$soucet+=$soucet;


a taky díky za rady na zjednodušení a zrychlení

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: