Progettare un carrello elettronico con PHP e MySql per i nostri acquisti interstellari? SI può fare!

Presto quelli di Venus 6 verranno sulle nostre spiagge doatati da potenti motori a curvatori a propinarci tutta una serie di nuovi oggetti intergalattici che non potremmo fare a meno di acquistare. Quindi la necessità di progettare un carrello elettronico anche se rudimentale che ci faccia fare business é una esigenza quanto mai reale. Presto questi alieni qui verranno da noi per venderci anche arbitri interstellari pronti a dire no var o si var solo in cambio di una carbonara. In sostanza quello che dobbiamo progettare come web developer è un meccanismo base di carrello elettronico da ampliare in futuro per renderlo sito e-commerce istituzionale, non importa se in questa prima fase non abbiamo abilitate le funzioni di checkout e di pagamento effettivo. Quindi sostanzialmente l’alieno ci propina la roba sui nostri dispositivi mobili tramite una breve schermata che presenta un campionario di oggetti con relativo prezzo. Cliccando sugli articoli di nostro interesse alluneremo in una pagina dove avremo un riassunto di quello che stiamo acquistando con una funzione somma che mette insieme il totale delle singole componenti. Quello che dobbiamo fare è creare un file index.php che come sappiamo di default è anche quello che si vede anche senza digitarlo sulla url, poi ci servirà una stringa di connessione da mettere in link nelle nostre pagine perchè dietro naturalmente abbiamo un DB MySql di appoggio, poi ci servirà un file esterno di appoggio che elencherà tutta una serie di variabili responsabili dei calcoli e degli aggiornamenti e infine il carrello rassuntivo da gestire con tutte le opzioni per le modifiche nel caso l’utenti cambi idea o voglia modificare il suo ordine, vediamo quindi il file più semplice, responsabile della connessione al DB, il connect.php:

/*
<?php
$con = mysqli_connect(‘localhost’, ‘root’, ”, ‘shoppingcart’);
?>
*/

ma i dati? Creo un DB di nome shoppingchart e faccio la seguente importazione con il copia e incolla sulla TAB SQL;

/*
— phpMyAdmin SQL Dump
— version 4.1.14
http://www.phpmyadmin.net

— Host: 127.0.0.1
— Generation Time: Apr 30, 2015 at 09:23 PM
— Server version: 5.6.17
— PHP Version: 5.5.12

SET SQL_MODE = “NO_AUTO_VALUE_ON_ZERO”;
SET time_zone = “+00:00”;

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;


— Database: `demo`

— ——————————————————–


— Table structure for table `product`

CREATE TABLE IF NOT EXISTS `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(250) COLLATE utf8_unicode_ci NOT NULL,
`price` decimal(10,0) NOT NULL,
`quantity` int(11) NOT NULL,
`description` text COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;


— Dumping data for table `product`

INSERT INTO `product` (`id`, `name`, `price`, `quantity`, `description`) VALUES
(1, ‘Name 1’, ‘1000’, 2, ‘good’),
(2, ‘Name 2’, ‘2000’, 3, ‘good’),
(3, ‘Name 3’, ‘3000’, 4, ‘good’);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

*/

vediamo poi il contenuto del file item.php che contiene la classe omonima con un elenco di proprietà o variabili secondo la dicitura procedurale:

/*
<?php
class Item{
var $id;
var $name;
var $price;
var $quantity;
}
?>

dopodiche passiamo ad analizzare la pagina index.php che ci mostrerà i prodotti che vogliamo acquistare:

/*
<link rel=”stylesheet” href=”css/table.css”>
<?php
require ‘connect.php’;
$result = mysqli_query($con, ‘select * from product’);
?>
<table cellpadding=”2″ cellspacing=”2″ border=”0″>
<tr>
<th>Id</th>
<th>Name</th>
<th>Price</th>
<th>Buy</th>
</tr>
<?php while($product = mysqli_fetch_object($result)) { ?>
<tr>
<td><?php echo $product->id; ?></td>
<td><?php echo $product->name; ?></td>
<td><?php echo $product->price; ?></td>
<td><a href=”cart.php?id=<?php echo $product->id; ?>”>Order Now</a></td>
</tr>
<?php } ?>
</table>

*/

a questo file abbiamo aggiunto come prima riga un file css di nome table.css per abbellire la nostra tabella che avrà all’ interno della cartella css, il seguente contenuto e che in automatico formatterà tutti i selettori indicati, i tag presenti nell’ html:

/*
table {
border-collapse: collapse;
border-spacing: 0;
width: 100%;
border: 1px solid #ddd;
}

th, td {
text-align: left;
padding: 8px;
}

tr:nth-child(even){background-color: #f2f2f2}
*/

a questo punto manca il file dove io ho il ripeilogo gestione degli oggetti precedentemente selezionati per l’acquisto, il file cart.php, che risulta essere il più complesso di tutta la nostra applicazione se non altro per i suoi contenuti dinamici, anche qui abbiamo lincato il nostro file css per vestire la parte grezza dei contenuti:

/*
<link rel=”stylesheet” href=”css/table.css”>
<?php
session_start ();
require ‘connect.php’;
require ‘item.php’;
if (isset ( $_GET [‘id’] )) {
$result = mysqli_query ( $con, ‘select * from product where id=’ . $_GET [‘id’] );
$product = mysqli_fetch_object ( $result );
$item = new Item ();
$item->id = $product->id;
$item->name = $product->name;
$item->price = $product->price;
$item->quantity = 1;
// Check product is existing in cart
$index = – 1;
if (isset ( $_SESSION [‘cart’] )) {
$cart = unserialize ( serialize ( $_SESSION [‘cart’] ) );
for($i = 0; $i < count ( $cart ); $i ++)
if ($cart [$i]->id == $_GET [‘id’]) {
$index = $i;
break;
}
}
if ($index == – 1)
$_SESSION [‘cart’] [] = $item;
else {
$cart [$index]->quantity ++;
$_SESSION [‘cart’] = $cart;
}
}

// Delete product in cart
if (isset ( $_GET [‘index’] )) {
$cart = unserialize ( serialize ( $_SESSION [‘cart’] ) );
unset ( $cart [$_GET [‘index’]] );
$cart = array_values ( $cart );
$_SESSION [‘cart’] = $cart;
}
?>
<table cellpadding=”2″ cellspacing=”2″ border=”1″>
<tr>
<th>Option</th>
<th>Id</th>
<th>Name</th>
<th>Price</th>
<th>Quantity</th>
<th>Sub Total</th>
</tr>
<?php
$cart = unserialize ( serialize ( $_SESSION [‘cart’] ) );
$s = 0;
$index = 0;
for($i = 0; $i < count ( $cart ); $i ++) {
$s += $cart [$i]->price * $cart [$i]->quantity;
?>
<tr>
<td><a href=”cart.php?index=<?php echo $index; ?>”
onclick=”return confirm(‘Are you sure?’)”>Delete</a></td>
<td><?php echo $cart[$i]->id; ?></td>
<td><?php echo $cart[$i]->name; ?></td>
<td><?php echo $cart[$i]->price; ?></td>
<td><?php echo $cart[$i]->quantity; ?></td>
<td><?php echo $cart[$i]->price * $cart[$i]->quantity; ?></td>
</tr>
<?php
$index ++;
}
?>
<tr>
<td colspan=”5″ align=”right”>Sum</td>
<td align=”left”><?php echo $s; ?></td>
</tr>
</table>
<br>
<a href=”index.php”>Continue Shopping</a>
*/

Chi lo avrebbe mai detto che mettendo insieme questi semplici pezzettini abbiamo giù un dispositivo grezzo ma funzionale che costituirà il nostro punto di partenza per il nostro shopping cart interstellare?

Annunci