Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Ostoskori

eMZii [24.04.2008 14:44:37]

#

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>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<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> €';
}
}


?>

Short Php [05.05.2008 20:26:06]

#

Hyvä idea ja ok toteutus.

Metabolix [29.05.2008 20:54:18]

#

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.

Vastaus

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

Tietoa sivustosta