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.