Moi
Saisko apuja viisammilta?
Olen turannut tehdä ostoskorisovellusta, jossa tuotteet tulostetaan selaimelle suoraan tietokannasta ja nyt tuli minulle ylitsepääsemätön ongelma.
Eli ostoskorissa asiakas voi muuttaa tuotteen määrää lisäämällä määrä-kenttään lukumäärän ja painamalla "päivitä hinta"-painiketta.
Tässä kohdassa tulee kuitenkin ongelmia; hintaa muuttuu oikeaksi, mutta oletusmäärä palaa ennalleen.
Jos ostoskorissa on useita tuotteita niin silloin yhden tuotteen määrän muuttaminen muuttaa kaikkien tuotteiden hintoja...
Myös "kaikki tuotteet yhteensä"-kenttä laskee hinnat väärin. Mikä on koodissa vikana?
Koodi on seuraavanlainen:
<HTML>
<script type="text/javascript"
language="JavaScript"><!--
function tarkistus() {
var maara,ahinta,yhinta;
var maara=document.hinta.maara.value;
var ahinta=document.hinta.ahinta.value;
var yhinta=document.hinta.yhinta.value;
maara=parseInt(document.hinta.maara.value);
yhinta=maara*ahinta;
document.hinta.yhinta.value=yhinta;
if(isNaN(maara)==true) {
alert("Määrä -kenttään voit syöttää vain numeroita.");
document.hinta.maara.value="1";
document.hinta.maara.focus();
return false; }
}
//--></script>
<?php
session_start();
$keksi=session_id();
$tuotteet=$_GET['tuotenro'];
$yhteys=mysql_connect("localhost", "kayttis", "salasana");
mysql_select_db("relaatio",$yhteys);
$sql="SELECT * FROM tilaukset WHERE tilaajaid='$keksi' and tilauspvm IS NULL";
$result=mysql_query($sql);
?>
<?php
echo "<table align='center' width='90%' cellpadding='1' cellspacing='0'>";
echo "<tr><td bgcolor='#CCCCCC' align='left' width='45%'><b>Tuote</b></td><td bgcolor='#CCCCCC' width='13%'><b>Määrä</b><td bgcolor='#CCCCCC' width='13%'><b>Hinta</b></td><td bgcolor='#CCCCCC' width='13%'><b>Yhteensä</b></td><td bgcolor='#CCCCCC' width='8%'><b>Poista</b></td></tr>";
while ($rivi=mysql_fetch_array($result))
{
$apu=$rivi['tuotenro'];
$sql1="SELECT * FROM tuote WHERE tuotenro=$apu";
$result1=mysql_query($sql1);
$rivi1=mysql_fetch_array($result1);
$yht=$yht+$rivi1[5]*$maara;
//tulostetaan tuotteen tiedot (nimi)
echo "<tr><td align='left' width='45%' class='style3'>";
echo $rivi1[2];
echo " ";
echo $rivi1[3];
//montako tuotetta tilataan
echo "<td class='style3'>";
echo "<FORM method='POST' action='kori.php' name='hinta'>";
echo "<input type=\"text\" name=\"maara\" size=\"2\" maxlength=\"2\" value=\"1\">";
echo "</td>";
//tuotteen á-hinta
echo "<td align='rigth' width='13%' class='style3'>";
echo "<input type=\"hidden\" name=\"ahinta\" size=\"1\" value=";
echo $rivi1[5];
echo ">";
echo $rivi1[5];
echo " €";
echo "</td>";
//tuotteen á-hinta yhteensä
echo "<td class='style3'>";
$paivitys=$_POST['paivitys'];
if (isset($paivitys)){
echo "<input type=\"hidden\" name=\"yhinta\" size=\"1\">";
echo $yhinta;
echo " €";
}
else {
echo $rivi1[5];
echo " €</td>";
}
//poistetaan yksittäinen tuote
echo "</td><td align='left' width='8%' class='style5'>";
echo "<a href=\"poisto.php?Id=";
echo $rivi["Id"];
echo "\">";
echo "poista";
echo "</a>";
echo "</td></tr>";
}
echo "</table>";
echo "<br><br>";
//kaikki tuotteet yhteensä
echo "<table align='center' width='90%' cellpadding='3' cellspacing='0'>";
echo "<tr><td bgcolor='#CCCCCC' width='50%'></td><td bgcolor='#CCCCCC' align='rigth' width='13%'></td><td bgcolor='#CCCCCC' align='rigth' width='13%'>";
echo "Yhteensä:</td>";
echo "<td bgcolor='#CCCCCC' align='rigth' width='13%'>";
echo "$yht €";
echo "</td><td bgcolor='#CCCCCC' align='rigth' width='10%'></td></tr>";
echo "</table>";
//tyhjennetään ostoskori
echo "<table align='center' width='90%' cellpadding='3' cellspacing='0'>";
echo "<tr><td align='left' width='18%' class='style5'>";
echo "<a href=\"kaikkipois.php?$keksi=";
echo $rivi["$keksi"];
echo "\"> ";
echo "Tyhjennä ostoskorisi";
echo "</a>";
echo "</td></tr>";
echo "</table>";
mysql_close();
?>
<table align="center" width="90%" cellpadding="3" cellspacing="0">
<tr>
<td width="50%" bgcolor='#CCCCCC'>
<div align="left">
<input type="submit" name="paivitys" value="Päivitä hinta" onClick="return tarkistus()">
</div></td>
</form></HTML>"Virhe" löytynee tällaiselta riviltä:
echo "<input type=\"text\" name=\"maara\" size=\"2\" maxlength=\"2\" value=\"1\">";
ja eritoten kohdasta *!* value="1" *!*, tähän sinun pitää tietenkin asettaa kyseisen tuotteiden lukumäärä! Lisäksi name="maara" pitäisi jotenkin yksilöllistää (esim. name="maara_1"), samoin hinnat.
Jottei "kaikkien tuotteiden" lukumäärät vaihtuisi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.