Sessioita ja mysql-tietokantaa käyttävä ostoskori jossa korin sisältö koko ajan näkyvissä. Tuotteet tulevat "kauppa"-nimisestä tietokannasta, "tuotteet"-taulusta.
Pitkähän tuo on mutta toimii sellaisenaan muiden tietokantojen/taulujen kanssa ainoastaan yhteysfunktiota muuttamalla.
sql-scripti tuotteet-taululle
CREATE TABLE `tuotteet` ( `id` int(50) NOT NULL auto_increment, `nimi` varchar(50) NOT NULL default '', `hinta` double NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ; -- -- INSERT INTO `tuotteet` VALUES (1, 'tuote1', 50); INSERT INTO `tuotteet` VALUES (2, 'tuote2', 75); INSERT INTO `tuotteet` VALUES (3, 'tuote3', 23);
index.php
<? require "functions.php"; conn(); ?> <html> <head> <title>tuotteet</title> </head> <body align="center"> <table width="482" border="1" align="center"> <tr> <td width="152" align="left">Tuote</td> <td width="189" align="left">Hinta</td> <td width="119"></td> </tr> <? result(); ?> </table> <br /> <select name="select"> <? cart(); ?> </select> <? hinta(); ?> <p><a href = "kori.php">Näytä ostoskori</a></p> </body> </html>
kori.php
<? require "functions.php"; ?> <html> <head> <title>Kori</title> </head> <body align = "center"> <table width="482" border="1" align="center"> <tr> <td width="152" align="left">Tuote</td> <td width="94" align="left">kpl</td> <td width="106"></td> <td width="106"></td> </tr> <? tulostus(); ?> <tr> <td colspan="4" align="left" height="50"><? hinta(); ?></td> </tr> </table> <br /> <a href = "kori.php?action=empty">Tyhjennä</a> <a href = "index.php">Jatka ostoksia</a> </body> </html>
functions.php
<? session_start(); //funktio tietokantaan yhdistämiseen---------------------------------- function conn() { $link = mysql_connect("localhost", "root", "") or die ("could not connect"); mysql_select_db("kauppa") or die ("could not select dbase"); } //Tietokannan tuotteiden tulostaminen------------------------------------------ function result() { $result = mysql_query("SELECT * FROM tuotteet"); while ($row = mysql_fetch_array($result)) { $nimi = $row["nimi"]; $hinta = $row["hinta"]; $id = $row["id"]; //linkki jolla tuotteet lisätään koriin $addlink = '<a href = "index.php?action=add&tuote=' .$nimi. '&id='.$id.'&hinta='.$hinta.'"> Koriin </a>'; echo' <tr> <td width="152" align="left">'.$nimi.'</td> <td width="189" align="left">'.$hinta.' €</td> <td width="119" align="left">'.$addlink.'</td> </tr> '; } } //Switch-rakenne johon linkit viittaavat-------------------------------------------------- switch($_GET['action']) { case "add": additem(); break; //------------------------------------ case "remove": removeitem(); break; //------------------------------------------- case "empty": clear(); break; } //Tuotteiden lisääminen koriin------------------------------------------------ function additem() { $nimi = $_GET['tuote']; $hinta = $_GET['hinta']; $id = $_GET['id']; $_SESSION['tuote'][$id] = $nimi; $_SESSION['qty'][$id]++; $_SESSION['id'][$id] = $id; $_SESSION['hinnat'][$id] = $hinta; $_SESSION['hinta'] = $_SESSION['hinta'] + $hinta; header("location: ".$_SERVER['PHP_SELF']." "); } //Tuotteiden vähentäminen korista-------------------------------------------------- function removeitem() { $nimi = $_GET['tuote']; $hinta = $_GET['hinta']; $id = $_GET['id']; if($_SESSION['qty'][$id] > 0) { $_SESSION['tuote'][$id] = $nimi; $_SESSION['qty'][$id]--; $_SESSION['id'][$id] = $id; $_SESSION['hinnat'][$id] = $hinta; $_SESSION['hinta'] = $_SESSION['hinta'] - $hinta; if($_SESSION['qty'][$id] == 0) { unset ($_SESSION['qty'][$id]); unset ($_SESSION['tuote'][$id]); unset ($_SESSION['hinnat'][$id]); unset ($_SESSION['id'][$id]); } if(empty($_SESSION['tuote'])) { clear(); } } header("location: ".$_SERVER['PHP_SELF']." "); } //Korin tyhjentäminen----------------------------------------------------- function clear() { unset($_SESSION['qty']); unset($_SESSION['tuote']); unset($_SESSION['hinta']); unset($_SESSION['id']); unset($_SESSION['hinnat']); header("location: ".$_SERVER['PHP_SELF']." "); } //Korin tulostaminen comboboxiin---------------------------------------------- function cart() { $kpl = array(); $tuote = array(); // Tuotteet haetaan session-muuttujista taulukoihin foreach-loopeilla foreach($_SESSION['tuote'] as $item) { $tuote[$t] = $item; $t++; } //----------------------------------------- foreach($_SESSION['qty'] as $qty) { $yht = $yht + $qty; $kpl[$e] = $qty; $e++; } //------------------------------------------------- //tarkistetaan onko $_SESSION['tuote'] olemassa, jos ei tulostetaan ei tuotteita, //muuten tulostetaan tuotteet ja määrät comboboxiin if(!isset($_SESSION['tuote'])) { echo "<option> ei tuotteita </option>"; } else { echo "<option> Ostoskorissa yhteensä $yht tuotetta</option>"; while ($x < $e) { echo "<option>" .$tuote[$x]. " " .$kpl[$x]. " kpl"."</option>"; $x++; } } //--------------------------------------------- } //Korin tulostaminen yhteenvetosivulle------------------------------------- function tulostus() { $kpl = array(); $tuote = array(); $id = array(); $hinnat = array(); //----------------------------------------------------- if (isset($_SESSION['tuote'])) { foreach($_SESSION['tuote'] as $item) { $tuote[$t] = $item; $t++; } } //----------------------------------------- if (isset($_SESSION['qty'])) { foreach($_SESSION['qty'] as $qty) { $yht = $yht + $qty; $kpl[$e] = $qty; $e++; } } //------------------------------------------------- if (isset($_SESSION['id'])) { foreach($_SESSION['id'] as $ide) { $id[$a] = $ide; $a++; } } //--------------------------------------------------- if (isset($_SESSION['hinnat'])) { foreach($_SESSION['hinnat'] as $hinta) { $hinnat[$h] = $hinta; $h++; } } //--------------------------------------------------- if(!isset($_SESSION['tuote'])) { echo "<font size='4'><b> Ostoskorissa ei ole tuotteita </b></font>"; } else { echo "<b><font size='4'> Ostoskorissa on yhteensä $yht tuotetta </font></b> <br /><br />"; while ($x < $e) { //tulostetaan jokaiselle tuotteelle oma rivi taulukkoon echo' <tr> <td width="152" align="left">'.$tuote[$x].'</td> <td width="94" align="left">'.$kpl[$x].' kpl</td> <td width="106"> <a href = "kori.php?action=add&tuote='.$tuote[$x].'&id='.$id[$x].'&hinta='.$hinnat[$x].'"> Lisää </a> </td> <td width="106"> <a href = "kori.php?action=remove&tuote='.$tuote[$x].'&id='.$id[$x].'&hinta='.$hinnat[$x].'"> Vähennä </a> </td> </tr> '; $x++; } } } //hinnan tulostus function hinta() { if ($_SESSION['hinta'] > 0) { echo'Hinta yhteensä <b> '.$_SESSION["hinta"]. '</b> €'; } } ?>
Hyvä idea ja ok toteutus.
Sisennys on lähes olematonta, kommentteja on niukasti ja ne ovat epäinformatiivisia. Vaikea tästä on mitään oppia ja vielä vaikeampi uskaltaa kopioida.
Aihe on jo aika vanha, joten et voi enää vastata siihen.