Forum » Programiranje » Težava s spremembo davka v MySQL PHP skripti (skripta inside)
Težava s spremembo davka v MySQL PHP skripti (skripta inside)
Yohan del Sud ::
Državni prašičevec se je zopet spomnil malo porediti na račun boge raje, in greniti življenje ljudem. Torej zadeva je sledeča in ni enostavna, glede na to da nisem ne vem kaki programer in za precej zadev se mi sploh ne sanja, poleg tega spodnje kode nisem pisal jaz:
V spodnjem primeru skripte je potrebno spremeniti 8% davek v 8,5% in 19% v 20%. Slednje ni bilo problem, ker prvič zadeve ne vleče iz baze in drugič gre za celo številko - kot boste videli je to že opravljeno. Spodnja skripta se prične pri tabeli za izračun DDV-ja. Pomagajte si z find opcijo v katero vpišete št. 8.
<table border=0 width=80% cellspacing=0 cellpadding=3>
<tr>
<td valign="top" align="left"><b><font face="Arial" size="1">Šifra in naziv izdelka</font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1">Kol.</font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"> Cena brez DDV</font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"> DDV</font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"> Znesek</font></b></td>
<tr><td colspan=5><img src=images/blackdot.gif width=100% height=1></td>
<%
$osnova8 = 0.00;
$osnova20 = 0.00;
$startiklov = 0;
for ($i=0; $i<count($sqlarray); $i++) {
$sqlrow = $sqlarray[$i];
$startiklov += $sqlrow['kolicina'];
if ($sqlrow['DDV'] == 8) $osnova8 += $sqlrow['skupajcena'];
else if ($sqlrow['DDV'] == 20) $osnova20 += $sqlrow['skupajcena'];
%>
<tr>
<td valign="top" align="left"><b><font face="Arial" size="1"><%=$sqlrow['ISBN']%> <b><%=$sqlrow['naslov']%></b></font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"><%=$sqlrow['kolicina']%></font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"><%=$sqlrow['cena']%> SIT </font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"><%=$sqlrow['DDV']%>%</font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"> <%=$sqlrow['skupajcena']%> SIT</font></b></td>
<%
}
print "<tr><td colspan=5><img src=images/blackdot.gif width=100% height=1></td>n";
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Skupaj</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova8 + $osnova20);
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Davek (8,5%%)</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova8 * 0.08 + $osnova20 * 0.20);
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Manipulativni stroški</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $startiklov * $narocilo['shippingperitem']);
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Poštnina</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $narocilo['shippingperorder']);
$narocilo['totalshipping'] = $startiklov * $narocilo['shippingperitem'] + $narocilo['shippingperorder'];
// printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Skupaj</b></font></td>");
// printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $narocilo['totalshipping']);
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Davek (20%%)</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $narocilo['totalshipping'] * 0.20);
$osnova20 += $narocilo['totalshipping'];
print "<tr><td colspan=2></td><td colspan=3><img src=images/blackdot.gif width=100% height=1></td>n";
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>ZA PLAČILO</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova8 * 1.08 + $osnova20 * 1.20);
%>
</tr>
</table>
<font size=1>Specifikacija obračunanega davka</font>
<table border=0 cellspacing=0 cellpadding=3>
<tr><td><font face=Arial size=1><b>osnova</b></font></td>
<td><font face=Arial size=1><b>stopnja DDV</b></font></td>
<td><font face=Arial size=1><b>davek</b></font></td>
<tr><td colspan=3><img src=images/blackdot.gif width=100% height=1></td>
<%
if ($osnova8 > 0) {
printf("<tr><td align=right><font face=Arial size=1>%.2f</font></td>", $osnova8);
printf("<td align=right><font face=Arial size=1>8%% </font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova8*0.08);
print "<tr><td colspan=3><img src=images/blackdot.gif width=100% height=1></td>n";
}
if ($osnova20 > 0) {
printf("<tr><td align=right><font face=Arial size=1>%.2f</font></td>", $osnova20);
printf("<td align=right><font face=Arial size=1>20%% </font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova20*0.20);
print "<tr><td colspan=3><img src=images/blackdot.gif width=100% height=1></td>n";
}
if ($osnova8 > 8 && $osnova20 > 0) {
printf("<tr><td colspan=2 align=right><font face=Arial size=1>SKUPAJ</font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova8*0.08 + $osnova20*0.20);
}
print "</table>n";
}
/* LOG.LIB */
function log_add($event, $data) {
global $sid;
$logfile = fopen(LOGFILE, 'a');
fputs($logfile, sprintf("[%s] [%s] [%s] [%s] %sn", strftime('%d.%m.%Y %H:%M:%S'),
$sid,
getenv('REMOTE_ADDR'),
$event,
$data));
fclose($logfile);
}
function log_quicksearch($search) {
sql_query("INSERT INTO log_quicksearch VALUES(NULL, '" . $search . "')");
}
function log_search($search_naslov, $search_avtor, $search_ISBN, $search_zalozba, $search_jezik) {
$sqlquery = "INSERT INTO log_search VALUES(NULL, "
. "'" . $search_naslov . "', "
. "'" . $search_avtor . "', "
. "'" . $search_ISBN . "', "
. "'" . $search_zalozba . "', "
. "'" . $search_jezik . "')";
sql_query($sqlquery);
}
function getshipping($total) {
$sqlquery = "SELECT DISTINCT s.perorder, s.peritem FROM main_shipping s "
. "WHERE s.low <= $total AND s.high > $total";
$sqlarray = sql_query($sqlquery);
if (count($sqlarray)) {
$shipping['perorder'] = $sqlarray[0]['perorder'];
$shipping['peritem'] = $sqlarray[0]['peritem'];
} else {
$shipping['perorder'] = 0;
$shipping['peritem'] = 0;
}
return $shipping;
}
%>
Problem je prvi - osemprocentni - davek ker izgleda da ta vrstica v Mysql bazi ne podpira decimalnih števil.
Stolpec je v Mysql bazi definiran kot: "DDV tinyint(4)" DDV lahko definiram vsakemu artiklu posebej, a četudi ročno spremenim 8 v 8,5 (oziroma 8.5) ni razlike, morda tudi zato, ker v PHP skripti še ni definiran kot 8,5% davek.
Mi lahko iz te obširne kolobocije da kdo kakšen praktičen nasvet, kako spremeniti davek, da bo pujs sit in jaz cel...
Pomagalec dobi masten popust v moji knjigarni.
Dobrodošel tudi kaki nasvet kjer bi lahko še dobil nasvet.
V spodnjem primeru skripte je potrebno spremeniti 8% davek v 8,5% in 19% v 20%. Slednje ni bilo problem, ker prvič zadeve ne vleče iz baze in drugič gre za celo številko - kot boste videli je to že opravljeno. Spodnja skripta se prične pri tabeli za izračun DDV-ja. Pomagajte si z find opcijo v katero vpišete št. 8.
<table border=0 width=80% cellspacing=0 cellpadding=3>
<tr>
<td valign="top" align="left"><b><font face="Arial" size="1">Šifra in naziv izdelka</font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1">Kol.</font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"> Cena brez DDV</font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"> DDV</font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"> Znesek</font></b></td>
<tr><td colspan=5><img src=images/blackdot.gif width=100% height=1></td>
<%
$osnova8 = 0.00;
$osnova20 = 0.00;
$startiklov = 0;
for ($i=0; $i<count($sqlarray); $i++) {
$sqlrow = $sqlarray[$i];
$startiklov += $sqlrow['kolicina'];
if ($sqlrow['DDV'] == 8) $osnova8 += $sqlrow['skupajcena'];
else if ($sqlrow['DDV'] == 20) $osnova20 += $sqlrow['skupajcena'];
%>
<tr>
<td valign="top" align="left"><b><font face="Arial" size="1"><%=$sqlrow['ISBN']%> <b><%=$sqlrow['naslov']%></b></font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"><%=$sqlrow['kolicina']%></font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"><%=$sqlrow['cena']%> SIT </font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"><%=$sqlrow['DDV']%>%</font></b></td>
<td valign="top" align="right"><b><font face="Arial" size="1"> <%=$sqlrow['skupajcena']%> SIT</font></b></td>
<%
}
print "<tr><td colspan=5><img src=images/blackdot.gif width=100% height=1></td>n";
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Skupaj</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova8 + $osnova20);
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Davek (8,5%%)</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova8 * 0.08 + $osnova20 * 0.20);
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Manipulativni stroški</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $startiklov * $narocilo['shippingperitem']);
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Poštnina</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $narocilo['shippingperorder']);
$narocilo['totalshipping'] = $startiklov * $narocilo['shippingperitem'] + $narocilo['shippingperorder'];
// printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Skupaj</b></font></td>");
// printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $narocilo['totalshipping']);
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>Davek (20%%)</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $narocilo['totalshipping'] * 0.20);
$osnova20 += $narocilo['totalshipping'];
print "<tr><td colspan=2></td><td colspan=3><img src=images/blackdot.gif width=100% height=1></td>n";
printf("<tr><td colspan=4 align=right><font face=Arial size=1><b>ZA PLAČILO</b></font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova8 * 1.08 + $osnova20 * 1.20);
%>
</tr>
</table>
<font size=1>Specifikacija obračunanega davka</font>
<table border=0 cellspacing=0 cellpadding=3>
<tr><td><font face=Arial size=1><b>osnova</b></font></td>
<td><font face=Arial size=1><b>stopnja DDV</b></font></td>
<td><font face=Arial size=1><b>davek</b></font></td>
<tr><td colspan=3><img src=images/blackdot.gif width=100% height=1></td>
<%
if ($osnova8 > 0) {
printf("<tr><td align=right><font face=Arial size=1>%.2f</font></td>", $osnova8);
printf("<td align=right><font face=Arial size=1>8%% </font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova8*0.08);
print "<tr><td colspan=3><img src=images/blackdot.gif width=100% height=1></td>n";
}
if ($osnova20 > 0) {
printf("<tr><td align=right><font face=Arial size=1>%.2f</font></td>", $osnova20);
printf("<td align=right><font face=Arial size=1>20%% </font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova20*0.20);
print "<tr><td colspan=3><img src=images/blackdot.gif width=100% height=1></td>n";
}
if ($osnova8 > 8 && $osnova20 > 0) {
printf("<tr><td colspan=2 align=right><font face=Arial size=1>SKUPAJ</font></td>");
printf("<td align=right><font face=Arial size=1><b>%.2f SIT</b></font></td>n", $osnova8*0.08 + $osnova20*0.20);
}
print "</table>n";
}
/* LOG.LIB */
function log_add($event, $data) {
global $sid;
$logfile = fopen(LOGFILE, 'a');
fputs($logfile, sprintf("[%s] [%s] [%s] [%s] %sn", strftime('%d.%m.%Y %H:%M:%S'),
$sid,
getenv('REMOTE_ADDR'),
$event,
$data));
fclose($logfile);
}
function log_quicksearch($search) {
sql_query("INSERT INTO log_quicksearch VALUES(NULL, '" . $search . "')");
}
function log_search($search_naslov, $search_avtor, $search_ISBN, $search_zalozba, $search_jezik) {
$sqlquery = "INSERT INTO log_search VALUES(NULL, "
. "'" . $search_naslov . "', "
. "'" . $search_avtor . "', "
. "'" . $search_ISBN . "', "
. "'" . $search_zalozba . "', "
. "'" . $search_jezik . "')";
sql_query($sqlquery);
}
function getshipping($total) {
$sqlquery = "SELECT DISTINCT s.perorder, s.peritem FROM main_shipping s "
. "WHERE s.low <= $total AND s.high > $total";
$sqlarray = sql_query($sqlquery);
if (count($sqlarray)) {
$shipping['perorder'] = $sqlarray[0]['perorder'];
$shipping['peritem'] = $sqlarray[0]['peritem'];
} else {
$shipping['perorder'] = 0;
$shipping['peritem'] = 0;
}
return $shipping;
}
%>
Problem je prvi - osemprocentni - davek ker izgleda da ta vrstica v Mysql bazi ne podpira decimalnih števil.
Stolpec je v Mysql bazi definiran kot: "DDV tinyint(4)" DDV lahko definiram vsakemu artiklu posebej, a četudi ročno spremenim 8 v 8,5 (oziroma 8.5) ni razlike, morda tudi zato, ker v PHP skripti še ni definiran kot 8,5% davek.
Mi lahko iz te obširne kolobocije da kdo kakšen praktičen nasvet, kako spremeniti davek, da bo pujs sit in jaz cel...
Pomagalec dobi masten popust v moji knjigarni.
Dobrodošel tudi kaki nasvet kjer bi lahko še dobil nasvet.
- spremenil: darh ()
rasta ::
Najprej popravi svoj post tako, da se bo kaj videlo iz njega ...
iz tega kar je, sem razbral, da naj bi imel težavo z bazo?
Če baza tega ne podpira, jo bo pač treba prepisati oz. popraviti tip polja, ki ti povzroča težave (z sql ukazom ALTER TABLE ime_tabele DROP/ADD ime_atributa [ime tipa (ce dodajamo)]).
Pa preden se boš začel igrati z bazo, arhiviraj obstoječo ...
iz tega kar je, sem razbral, da naj bi imel težavo z bazo?
Če baza tega ne podpira, jo bo pač treba prepisati oz. popraviti tip polja, ki ti povzroča težave (z sql ukazom ALTER TABLE ime_tabele DROP/ADD ime_atributa [ime tipa (ce dodajamo)]).
Pa preden se boš začel igrati z bazo, arhiviraj obstoječo ...
Yohan del Sud ::
A fak. Opravičujem se Primožu in ostalim za ta izpad. A ima kdo idejo kako ga prepričat da ne izvede skripte. Sicer pa link do skripte tu.
darh ::
Yohan del Sud mal sm ti popravu post, ker si razčefuku celotno zadevo ;)
anyway.. zate in za vse ostale:
ker forum ne filtrira HTMLja pazite kaj objavljate, da se bo to pol tudi vidlo...
najbolj simple je, če uporabljate HTML tage, da vse "<" znake zamenjate z naslednjim stringom: <...
kar se tiče decimalk v bazi... spremeni iz TINYINT v DOUBLE oziroma DECIMAL in sicer takole:
ALTER TABLE tbl CHANGE `DDV` `DDV` DOUBLE(4,2) DEFAULT '0' NOT NULL
lp,x
oziroma tko kt ti pase... ;)
anyway.. zate in za vse ostale:
ker forum ne filtrira HTMLja pazite kaj objavljate, da se bo to pol tudi vidlo...
najbolj simple je, če uporabljate HTML tage, da vse "<" znake zamenjate z naslednjim stringom: <...
kar se tiče decimalk v bazi... spremeni iz TINYINT v DOUBLE oziroma DECIMAL in sicer takole:
ALTER TABLE tbl CHANGE `DDV` `DDV` DOUBLE(4,2) DEFAULT '0' NOT NULL
lp,x
oziroma tko kt ti pase... ;)
Excuses are useless! Results are priceless!
Zgodovina sprememb…
- spremenil: darh ()
Yohan del Sud ::
Aha, thanx xbite.
Rasta, v teoriji se lepo sliši ampak v praksi jaz ne vem niti kam ta ukaz vpisat.
Rasta, v teoriji se lepo sliši ampak v praksi jaz ne vem niti kam ta ukaz vpisat.
Loki ::
recimo v Winmysqladmin, ki ga lahko dobis na mysql strani ali pa bilokateri drugi mysql frontend. (lahko tudi SSH in direkt v ukazno vrstico).
Yohan del Sud ::
Evo nekaj napredka. Naložil sem si MySQL Client in se povezal v bazo na pravo tabelo. Ampak kaj zdaj? Če zadevo prav razumem moram xbiteovo vrstico vpisat not in pognati query? Če je temu tako javi error "You have an error in your SQL syntax near '`DDV` `DDV` DOUBLE(4,2) DEFAULT '0' NOT NULL ' at line 1"...
Btw zakaj ne dela edit table ukaz...
Btw zakaj ne dela edit table ukaz...
darh ::
probej namesto DOUBLE uporabt DECIMAL, pa une čudne narekovaje zbriši... aja ime stolpca mora tud bit pravo pa tko naprej..
Excuses are useless! Results are priceless!
Yohan del Sud ::
All right. Spet napredek. Ampak čisto možno da sem v riti.
Sedaj javi error: alter command denied to user: 'knjigarna@' for table 'tbl'
Izgleda, da nimam administratorskih pravic.
Sicer poznam geslo (vsaj mislim), ne pa tudi user name za administratorja...
Poskušal sem vse običajnejše (root, admin) ampak brez uspeha... Kaki nasvet?
Sedaj javi error: alter command denied to user: 'knjigarna@' for table 'tbl'
Izgleda, da nimam administratorskih pravic.
Sicer poznam geslo (vsaj mislim), ne pa tudi user name za administratorja...
Poskušal sem vse običajnejše (root, admin) ampak brez uspeha... Kaki nasvet?
darh ::
verjetno zato, ker v bazi "knjigarna" ni tabele z imenom "tbl", a ?
doh ;)
nimate pojma
doh ;)
nimate pojma
Excuses are useless! Results are priceless!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Nekaj v zvezi z HTML in PHP-jemOddelek: Izdelava spletišč | 1716 (1354) | rokpok |
» | PHP KONTAKTOddelek: Izdelava spletišč | 1504 (1341) | rkasteli |
» | Pomoč pri izdelovanju spletne strani.Oddelek: Izdelava spletišč | 1845 (1408) | strictom |
» | Kako narediti redirect, če uporabnik vpiše napačno ime .htmlOddelek: Izdelava spletišč | 1421 (1322) | darh |
» | checkboxiOddelek: Izdelava spletišč | 1215 (1111) | kopernik |