Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Määrän lisääminen ostoskoriin

Tuulia [25.01.2006 11:46:19]

#

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 " &euro;";
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 " &euro;";
}
else {
echo $rivi1[5];
echo " &euro;</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 &euro;";
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>

Lebe80 [25.01.2006 14:04:59]

#

"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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta