» »

problem kje v strežniku ali v SQL-u ali PHP kodi?

problem kje v strežniku ali v SQL-u ali PHP kodi?

Yohan del Sud ::

Soočam se z enim sicer redkim a zelo neprijetnim hroščem v svoji spletni prodajalni. Kot nekateri veste deluje v navezi PHP in MySQL. Od časa do časa (ene 10 primerov v treh letih), pa dobivam fantomska naročila, ki jih administracijski del zabeleži, ko grem potem gledat v SQL tabelo s sejami (in ne grem vedno za vsak drek tja gledat), jih pa sploh ni. Ker je stranke težko zasliševat, kaj zavraga so se afnale v štacuni, je treba diagnozo postavit s te strani. Vse sporne stranke so se vpisale v bazo kupcev, nekatere so kaj že prej kupile, nekatere ne. Je težava morda v kakšnem eksotičnem brskalniku? Ga zmede kaki firewall?
  • premaknil: Predator ()

darh ::

mogoče malo čudno napisana koda...
a pošlješ info o naročilu neglede na to kaj se zgodi z zapisom v bazi ?
Excuses are useless! Results are priceless!

Yohan del Sud ::

Ko bi zadevo skupaj dal sam ne bi bilo problema, ampak je nisem, bom preštudiral zadevo (je pa cela skripta v enem kosu 90k dolga) in če se mi bo kaj sumljivo zdelo... Kaka ideja na kaj bi moral biti pozoren?

darh ::

na del, kjer se pošilja sporočilo k tebi..

kolk obvladaš PHP drugač?
ker če nimaš pojma pol boš težko kej najdu :D

torej.. poglej kje se shranjujejo podatki o nakupu in kje se pošiljajo.. pa magari rukni sem na forum oni del, pa bomo že debugal...
Excuses are useless! Results are priceless!

Yohan del Sud ::

Hehe, koliko obvladam? Tu in tam kaj zblefirm skupaj, kot vidiš. Sicer pa ne kaj dosti.

Koda za račune (account) je v posebni datoteki, vsa ostala trgovina je posebej.

Tu je celotna koda po kosih, html, ki je bil vmes sem vrgel ven, da se ne izvede:

<%


function account_cartfull() {
global $sid;

$sqlquery = "SELECT count(*) AS artiklov "
. "FROM knjige_vkosarici c "
. "WHERE c.sid='" . $sid ."' AND c.kolicina>0";

$sqlarray = sql_query($sqlquery);

if ($sqlarray[0]['artiklov']) return true;
else return false;
}


function account_userdataform($email) {
global $sid;

$sqlquery = "SELECT * FROM main_uporabniki WHERE email='" . $email . "'";
$sqlarray = sql_query($sqlquery);

if (count($sqlarray) == 0) {
print "NAPAKA. Ta uporabnik ($email) ne obstaja!\n";
exit;
}

$user = $sqlarray[0];

%>

Yohan del Sud ::

<%
}


function account_userdataupdate() {
global $sid, $session, $user;

$sqlquery = "UPDATE main_uporabniki SET "
. "ime='" . $user[ime] . "',"
. "podjetje='" . $user[podjetje] . "',"
. "naslov='" . $user[naslov] . "',"
. "zip='" . $user[zip] . "',"
. "kraj='" . $user[kraj] . "',"
. "tel='" . $user[tel] . "',"
. "faks='" . $user[faks] . "',"
// . "davcna=" . (($user[ddv]=='on') ? ("'" . $user[davcna] . "'") : "NULL")
. "davcna='" . $user[davcna] . "'"
. " WHERE email='" . $user[email] . "'";
sql_query($sqlquery);

<%
}


function account_passform($whatwrong) {
global $sid, $session;

%>

%>

Zgodovina sprememb…

  • spremenil: darh ()

Yohan del Sud ::

<%
}

function account_passupdate() {
global $sid, $session, $user;

$sqlquery = "SELECT * FROM main_uporabniki "
. "WHERE email='" . $user['email'] . "' "
. "AND pass='" . $user['pass'] . "'";
$sqlarray = sql_query($sqlquery);

if (count($sqlarray) == 0) {
account_passform('NAPAKA: vnesli ste napačno geslo.');
return;
}
if ($user['newpass1'] != $user['newpass2']) {
account_passform('NAPAKA: novi gesli se ne ujemata.');
return;
}

$sqlquery = "UPDATE main_uporabniki "
. "SET pass='" . $user['newpass1'] . "' "
. "WHERE email='" . $user['email'] . "'";
sql_query($sqlquery);

%>

Zgodovina sprememb…

  • spremenil: darh ()

Yohan del Sud ::

<%
}

function account_printorders($uporabnik, $status) {
global $sid

%>

<% if ($status == '') { %><b>vsa naročila</b><% } else { %><a href='account.phtml?sid=<%= $sid

%>&action=printorders'>vsa naročila</a><% } %> |
<% if ($status == 'new') { %><b>nova</b><% } else { %><a href='account.phtml?sid=<%= $sid

%>&action=printorders&status=new'>nova</a><% } %> |
<% if ($status == 'process') { %><b>v obdelavi</b><% } else { %><a href='account.phtml?sid=<%= $sid

%>&action=printorders&status=process'>v obdelavi</a><% } %> |
<% if ($status == 'partiallyshipped') { %><b>delno dobavljena</b><% } else { %><a href='account.phtml?sid=<%= $sid

%>&action=printorders&status=partiallyshipped'>delno dobavljena</a><% } %> |
<% if ($status == 'shipped') { %><b>dobavljena</b><% } else { %><a href='account.phtml?sid=<%= $sid

%>&action=printorders&status=shipped'>dobavljena</a><% } %> |
<% if ($status == 'canceled') { %><b>preklicana</b><% } else { %><a href='account.phtml?sid=<%= $sid

%>&action=printorders&status=canceled'>preklicana</a><% } %>

</font>


<%

$status_slo = Array (
'new' => 'novo',
'process' => 'v obdelavi',
'partiallyshipped' => 'delno dob.',
'shipped' => 'dobavljeno',
'canceled' => 'preklicano');


$sqlquery = "SELECT id AS idnarocila, datum, uporabnik, tipplacila, status, aftertaxtotal FROM narocila_narocila "
. "WHERE uporabnik='" . $uporabnik . "'";
if ($status) $sqlquery .= " AND status='" . $status . "'";
print "\n\n<!-- " . $sqlquery . " -->\n\n";
$sqlarray = sql_query($sqlquery);

if (count($sqlarray) == 0) print "Ni naročil";
else {
%>

Zgodovina sprememb…

  • spremenil: darh ()

Yohan del Sud ::

<%
}


}


function account_cancelorder($orderid) {
global $session;

$sqlquery = "SELECT id FROM narocila_narocila "
. "WHERE uporabnik='" . $session['userdata']['email'] . "' "
. "AND (status='new' OR status='process') "
. "AND id='" . $orderid . "'";
$sqlarray = sql_query($sqlquery);

if (count($sqlarray)) {

$sqlquery = "UPDATE narocila_narocila SET status='canceled' "
. "WHERE uporabnik='" . $session['userdata']['email'] . "' "
. "AND (status='new' OR status='process') "
. "AND id='" . $orderid . "'";
sql_query($sqlquery);

print "Naročilo št. $orderid je bilo preklicano.";
} else print "Napaka: naročilo ni bilo preklicano.";

}

%>

Zgodovina sprememb…

  • spremenil: darh ()

Tr0n ::

Yohan del Sud: avtor knjige PHP, seveda obvlada :)

darh ::

aha... zmerej zamenjam tele Yohane....

samo "LoL" bom napisal, pa high five dal TrOn-u...

neč več... upam da to vse pove... aja.. Yohan.. pa pojdi si "Preberi me" temo v tem oddelku PREBRAT... mogoče boš izvedel, kako se escapa HTML...
Excuses are useless! Results are priceless!

Yohan del Sud ::

Prosim. Brez nizkih. Nimam se za programerja. To prepuščam vam profijem. Sem teoretik in pisatelj. :\ Se pravi sem toliko programerja, kot je Lev Kreft politika...>:D

Evo celo kodo, če kaj pomaga... Rahlo dvomim...

<%


function account_cartfull() {
	global $sid;
	
	$sqlquery = "SELECT count(*) AS artiklov "
		  . "FROM knjige_vkosarici c "
		  . "WHERE c.sid='" . $sid ."' AND c.kolicina>0";

	$sqlarray = sql_query($sqlquery);
	
	if ($sqlarray[0]['artiklov']) return true;
	else return false;
}


function account_userdataform($email) {
	global $sid;

	$sqlquery = "SELECT * FROM main_uporabniki WHERE email='" . $email . "'";
	$sqlarray = sql_query($sqlquery);

	if (count($sqlarray) == 0) {
		print "NAPAKA. Ta uporabnik ($email) ne obstaja!\n";
		exit;
	}

	$user = $sqlarray[0];

	%>
	<img border="0" src="images/bz1.gif" width="59" height="15"><font color="#ED9B00" face="Arial" size="3"><b> Spreminjanje podatkov</b>
	

	<form method="post" action="account.phtml?sid=<%=$sid%>">
	<input type=hidden name=action value=userdataupdate>
	<input type=hidden name=user[email] value='<%=$email%>'>
	<table border="0" width="424" cellspacing="0" cellpadding="8" bgcolor=#e9e9e9>

	<tr><td colspan=2><font face="Arial" color="#ED9B00" size="3"><b>
		<font size=2><b>E-pošta: <%=$user['email']%></b></font>
		<font face="Arial" size=1 color=black>Prosimo, popravite nepravilne podatke</font></td>
	<tr><td><font face=Arial size=2>
		<b>Ime in priimek</b>
		<input type=text name=user[ime] value='<%=$user[ime]%>' size=20>
		<font size=1>Prosimo vpišite vaše ime in priimek</font>
		</font></td>
	    <td><font face=Arial size=2>
		<b>Podjetje</b>
		<input type=text name=user[podjetje] value='<%=$user[podjetje]%>' size=20>
		<font size=1>vnesite naziv podjetja</font>
		</font></td>
	<tr><td><font face=Arial size=2>
		<b>Naslov</b>
		<input type=text name=user[naslov] value='<%=$user[naslov]%>' size=20>
		<font size=1>Prosimo vpišite vaš naslov(ulica in hišna številka)</font>
		</font></td>
	    <td><font face=Arial size=2>
		<b>Poštna številka in kraj</b>
		<input type=text name=user[zip] value='<%=$user[zip]%>' size=4> <input type=text name=user[kraj] value='<%=$user[kraj]%>' size=15>
		<font size=1>vnesite poštno številko v levo okno,kraj pa v desno</font>
		</font></td>
	<tr><td><font face=Arial size=2>
		<b>Telefon</b>
		<input type=text name=user[tel] value='<%=$user[tel]%>' size=20>
		<font size=1>vnesite vašo telefonsko številko</font>
		</font></td>
	    <td><font face=Arial size=2>
		<b>Faks</b>
		<input type=text name=user[faks] value='<%=$user[faks]%>' size=20>
		<font size=1>vnesite vašo faks številko</font>
		</font></td>
	<tr><td colspan=2><font face=Arial size=2>
		<b>Davčni zavezanci</b>
		<table border=0 cellspacing=0 cellpadding=2>
		<tr><td valign=top><font face=Arial size=1><input type=checkbox name=user[ddv] <% if ($user[ddv]=='on') print "checked";%>></font></td>
		<td valign=top><font face=Arial size=2>
		<font size=1> Če ste davčni zavezanec, označite levi kvadratek
			      in vpišite vašo davčno številko v polje spodaj.
		<font size=2>Davčna številka: <input type=text name=user[davcna] value='<%=$user[davcna]%>' size=20></font></td>
		</table>

		</font></td>
	</table>

	<img border="0" src="images/bz4.gif" width="393" height="15"><input border="0" src="images/poslji.gif" name="I1" type="image" width="31" height="15">
	
	</form>
	<%
}


function account_userdataupdate() {
	global $sid, $session, $user;

	$sqlquery = "UPDATE main_uporabniki SET "
		  . "ime='"    . $user[ime]    . "',"
		  . "podjetje='" . $user[podjetje] . "',"
		  . "naslov='" . $user[naslov] . "',"
		  . "zip='"    . $user[zip]    . "',"
		  . "kraj='"   . $user[kraj]   . "',"
		  . "tel='"    . $user[tel]    . "',"
		  . "faks='"   . $user[faks]   . "',"
	//	  . "davcna=" . (($user[ddv]=='on') ? ("'" . $user[davcna] . "'") : "NULL")
		  . "davcna='" . $user[davcna] . "'"
		  . " WHERE email='" . $user[email] . "'";
	sql_query($sqlquery);

	%>
	<img border="0" src="images/bz1.gif" width="59" height="15"><font color="#ED9B00" face="Arial" size="3"><b> Spreminjanje podatkov</b></font>
	
	
	<font size=2>Vaši podatki so bili ustrezno spremenjeni.</font>
	
	<%
}


function account_passform($whatwrong) {
	global $sid, $session;

	%>
	<img border="0" src="images/bz1.gif" width="59" height="15"><font color="#ED9B00" face="Arial" size="3"><b> Sprememba gesla</b>
	

	<form method="post" action="account.phtml?sid=<%=$sid%>">
	<input type=hidden name=action value=passupdate>
	<input type=hidden name=user[email] value='<%=$session['userdata']['email']%>'>
	<table border="0" width="424" cellspacing="0" cellpadding="8" bgcolor=#e9e9e9>

	<tr><td colspan=2><font face="Arial" color="#ED9B00" size="3"><b>
		<font size=2><b><%=$whatwrong%></b></font>
		<font face="Arial" size=1 color=black>Prosimo, vpišite vaše sedanje geslo v prvo okence, nato pa v drugi dve vpišite svoje novo geslo.</font></td>
	<tr><td><font face=Arial size=2>
		<b>Sedanje geslo</b>
		<input type=password name=user[pass] size=20>
		<font size=1>Prosimo vpišite vaše sedanje geslo</font>
		</font></td>
	    <td><font face=Arial size=2>
		&nbsp;</font></td>
	<tr><td><font face=Arial size=2>
		<b>Novo geslo</b>
		<input type=password name=user[newpass1] size=20>
		<font size=1>Vpišite novo geslo</font>
		</font></td>
	    <td><font face=Arial size=2>
		<b>Novo geslo (preverjanje)</b>
		<input type=password name=user[newpass2] size=20>
		<font size=1>Ponovno vpišite novo geslo</font>
		</font></td>
	</table>

	<img border="0" src="images/bz4.gif" width="393" height="15"><input border="0" src="images/poslji.gif" name="I1" type="image" width="31" height="15">
	
	</form>
	<%
}

function account_passupdate() {
	global $sid, $session, $user;

	$sqlquery = "SELECT * FROM main_uporabniki "
		  . "WHERE email='" . $user['email'] . "' "
		  . "AND pass='" . $user['pass'] . "'";
	$sqlarray = sql_query($sqlquery);
	
	if (count($sqlarray) == 0) {
		account_passform('NAPAKA: vnesli ste napačno geslo.');
		return;
	}
	if ($user['newpass1'] != $user['newpass2']) {
		account_passform('NAPAKA: novi gesli se ne ujemata.');
		return;
	}

	$sqlquery = "UPDATE main_uporabniki "
		  . "SET pass='" . $user['newpass1'] . "' "
		  . "WHERE email='" . $user['email'] . "'";
	sql_query($sqlquery);

	%>
	<img border="0" src="images/bz1.gif" width="59" height="15"><font color="#ED9B00" face="Arial" size="3"><b> Sprememba gesla</b></font>
	
	
	<font size=2>Vaše geslo je bilo spremenjeno.</font>
	<%
}

function account_printorders($uporabnik, $status) {
	global $sid

	%>	
	<font size=1>
	
	Prikaži: 
	<% if ($status == '') { %><b>vsa naročila</b><% } else { %><a href='account.phtml?sid=<%= $sid %>&action=printorders'>vsa naročila</a><% } %> |
	<% if ($status == 'new') { %><b>nova</b><% } else { %><a href='account.phtml?sid=<%= $sid %>&action=printorders&status=new'>nova</a><% } %> |
	<% if ($status == 'process') { %><b>v obdelavi</b><% } else { %><a href='account.phtml?sid=<%= $sid %>&action=printorders&status=process'>v obdelavi</a><% } %> |
	<% if ($status == 'partiallyshipped') { %><b>delno dobavljena</b><% } else { %><a href='account.phtml?sid=<%= $sid %>&action=printorders&status=partiallyshipped'>delno dobavljena</a><% } %> |
	<% if ($status == 'shipped') { %><b>dobavljena</b><% } else { %><a href='account.phtml?sid=<%= $sid %>&action=printorders&status=shipped'>dobavljena</a><% } %> |
	<% if ($status == 'canceled') { %><b>preklicana</b><% } else { %><a href='account.phtml?sid=<%= $sid %>&action=printorders&status=canceled'>preklicana</a><% } %>
	
	</font>
	
	
	<%

	$status_slo = Array (
		'new' => 'novo',
		'process' => 'v obdelavi',
		'partiallyshipped' => 'delno dob.',
		'shipped' => 'dobavljeno',
		'canceled' => 'preklicano');


	$sqlquery = "SELECT id AS idnarocila, datum, uporabnik, tipplacila, status, aftertaxtotal FROM narocila_narocila "
		. "WHERE uporabnik='" . $uporabnik . "'";
	if ($status) $sqlquery .= " AND status='" . $status . "'";
print "\n\n<!-- " . $sqlquery . " -->\n\n";
	$sqlarray = sql_query($sqlquery);

	if (count($sqlarray) == 0) print "Ni naročil";
	else {
	%>
		<table border="0" width="455" cellspacing="0" cellpadding="0">
		       <tr><td valign="top" align="left" bgcolor="#E9E9E9"><font size="1" face="Arial, Helvetica, sans-serif"><b><img border="0" src="images/1px.gif" width="8" height="8"></b></font>
		            <font size="1" face="Arial, Helvetica, sans-serif"><b><img border="0" src="images/1px.gif" width="8" height="8"></b></font><b><font face="Arial" color="#ED9B00" size="3">Vaša naročila</font></b><font size="1" face="Arial, Helvetica, sans-serif"><b>
		            <img border="0" src="images/1px.gif" width="8" height="8"></b></font></td>
		        </tr>
		        <tr><td valign="top" align="left" bgcolor="#E9E9E9">
		
		        <table border="0" width="100%" cellpadding="2">
		        <tr><td bgcolor="#C0C0C0"><font size="2" face="Arial"><b>ID naročila</b></font></td>
			<td bgcolor="#C0C0C0"><font size="2" face="Arial"><b>Datum</b></font></td>
			<td bgcolor="#C0C0C0"><font size="2" face="Arial"><b>Tip plačila</b></font></td>
			<td bgcolor="#C0C0C0"><font size="2" face="Arial"><b>Status</b></font></td>
			<td bgcolor="#C0C0C0" align=right><font size="2" face="Arial"><b>Znesek</b></font></td>
			<td bgcolor="#C0C0C0">&nbsp;</td>
			<tr><td colspan=6><img src=images/blackdot.gif width=100% height=1></td>
			<%
		
			for ($i=0; $i<count($sqlarray); $i++) {
				$r = $sqlarray[$i];
				
				%>
				<tr>
				<td valign="top" align="left"><font face="Arial" size="1"><b><%= $r['idnarocila']%></b></font></td>
				<td valign="top" align="left"><font face="Arial" size="1"><a href='order.phtml?sid=<%= $sid %>&orderid=<%= $r['idnarocila'] %>' target=_blank><%= $r['datum'] %></a></font></td>
				<td valign="top" align="left"><font face="Arial" size="1"><%= $r['tipplacila'] %></font></td>
				<td valign="top" align="left"><font face="Arial" size="1"><%= $status_slo[$r['status']] %></font></td>
				<td valign="top" align="right"><font face="Arial" size="1"><%= $r['aftertaxtotal'] %></font></td>
				<td valign="top" align="left"><font face="Arial" size="1"><% if ($r['status'] == 'new' || $r['status'] == 'process') { %><a href='account.phtml?sid=<%= $sid %>&action=cancelorder&orderid=<%= $r['idnarocila'] %>'><b>preklic</b></a><% } else { %>&nbsp;<% } %></font></td>
				<tr><td colspan=6><img src=images/blackdot.gif width=100% height=1></td>
				<%
				
			}
		
		
			%>
		        <tr><td valign="top" align="left" bgcolor="#C0C0C0" colspan="6"><font size="1" face="Arial, Helvetica, sans-serif"><b><img border="0" src="images/1px.gif" width="8" height="8"></b></font></td>
		        </tr>
		        </table>
		
		        </td>
		        </tr>
		        </table>

		        

		        <font size=1>
		        
		        V znesku niso vključeni manipulativni stroški in poštnina. Oboje pa je vidno na naročilnici, ki jo prikličete s klikom na datum posameznega naročila.
		        
		        </font>
		<%
	}


}


function account_cancelorder($orderid) {
	global $session;
	
	$sqlquery = "SELECT id FROM narocila_narocila "
		. "WHERE uporabnik='" . $session['userdata']['email'] . "' "
		. "AND (status='new' OR status='process') "
		. "AND id='" . $orderid . "'";
	$sqlarray = sql_query($sqlquery);
	
	if (count($sqlarray)) {
	
		$sqlquery = "UPDATE narocila_narocila SET status='canceled' "
			. "WHERE uporabnik='" . $session['userdata']['email'] . "' "
			. "AND (status='new' OR status='process') "
			. "AND id='" . $orderid . "'";
		sql_query($sqlquery);
		
		print "Naročilo št. $orderid je bilo preklicano.";
	} else print "Napaka: naročilo ni bilo preklicano.";

}

%>

Zgodovina sprememb…

  • spremenil: Primoz ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

problem z phpjem

Oddelek: Izdelava spletišč
303082 (2495) snow
»

PHPbb in mambo?

Oddelek: Izdelava spletišč
151010 (835) WinsuckeR

Zanka

Oddelek: Izdelava spletišč
51210 (1056) darh
»

Težava s spremembo davka v MySQL PHP skripti (skripta inside)

Oddelek: Programiranje
12882 (684) darh
»

PHP in MySql

Oddelek: Programiranje
15718 (539) lordgreg

Več podobnih tem