Revision: 67067
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 6, 2014 19:29 by dmkim
Initial Code
function cde($db) {
if ($db->errno!=0)
throw new Exception ('db error: '.$db->error);
}
session_start();
$db = new mysqli ('','','','');
if (mysqli_connect_errno())
throw new Exception ('connect error: '.mysqli_connect_error());
check_db();
if (isset($_GET['checkout'])) {
checkout();
exit();
}
if (isset($_GET['add_to_basket'])) {
add_to_basket($_GET['add_to_basket']);
}
if (isset($_GET['delete_from_basket'])) {
delete_from_basket($_GET['delete_from_basket']);
show_basket();
exit();
}
if (isset($_GET['show_basket'])) {
show_basket();
exit();
}
show_page();
//---------------------------------
function check_db() {
global $db;
$rez = $db->query('show tables like \'zshop\'');
cde($db);
if ($rez->num_rows==0) {
$db->query('create table zshop( id int(11) not null auto_increment,'.
'product varchar(500), rating int(11),'.
'primary key (`id`))');
cde($db);
$db->query ('insert into zshop(product, rating)
select link, rating from bookm_tmp a left outer join zstat b
on a.id=b.pic_id');
cde($db);
}
}
//---------------------------------
function add_to_basket($id) {
if (!isset($_SESSION['basket']))
$_SESSION['basket'] = array();
$_SESSION['basket'][] = $id;
}
//---------------------------------
function show_page() {
global $db;
$perpage = 10;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$start = ($page-1)*$perpage;
$rez = $db->query('select count(*) from zshop');
cde($db);
$pages = $rez->fetch_row();
$pages = ceil($pages[0]/$perpage);
ob_start();
echo '<br/><br/>';
for ($i=0; $i<$pages; $i++) {
echo str_repeat(' ',3);
if ($i+1==$page) {
echo ($i+1);
} else {
echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.($i+1).'">'.($i+1).'</a>';
}
if (($i+1)%20==0)
echo '<br/>';
}
echo '<br/><br/>';
$nav = ob_get_clean();
echo (isset($_SESSION['basket']) && (count($_SESSION['basket'])>0)) ?
'<a href="'.$_SERVER['PHP_SELF'].'?show_basket">'.
count($_SESSION['basket']). ' items in the basket</a><br/>' : 'basket is empty<br/>';
echo $nav;
$stmt = $db->prepare('select id, product, rating from zshop order by id limit ?,?');
cde($db);
$stmt->bind_param('dd',$start,$perpage);
$stmt->execute();
$stmt->bind_result($id, $product, $rating);
echo '<table>';
$i = 0;
while ($stmt->fetch()) {
if ($i%3==0)
echo '<tr>';
$inf = $_SERVER['REQUEST_URI'];
preg_match ('/(?<=http).*?(https?.*)/', $product, $match);
$link = 'http://freedomplace.ru/diff/php_dbg/loader.php?thumb='.$match[1];
echo '<td><a href="'.$inf.((strpos($inf,'?')!==false)?'&':'?').'add_to_basket='.
$id.'"><img src="'.$link.'" /></a><h2>Rating: '.$rating.'</h2></td>';
if (($i+1)%3==0)
echo '</tr>';
$i++;
}
}
//---------------------------------
function show_basket() {
$catlink = (strpos($_SERVER['HTTP_REFERER'], $_SERVER['PHP_SELF'])!==false)
&& (strpos(strstr($_SERVER['HTTP_REFERER'],'?'),'checkout')===false)?
$_SERVER['HTTP_REFERER']: $_SERVER['PHP_SELF'];
$inf = parse_url($catlink);
$catlink = $inf['scheme'].'://'.$inf['host'].$inf['path'];
if (isset($inf['query'])) {
parse_str($inf['query'], $zq);
$f = create_function('$a','return $a==\'page\';');
$zq = array_flip(array_filter(array_flip($zq), $f));
$catlink .= '?'.http_build_query($zq);
}
$catlink = '<a href="'.$catlink.'">back to catalog</a>';
if ((empty($_SESSION['basket'])) || (count($_SESSION['basket'])==0)) {
echo 'basket empty<br/>';
echo $catlink.'<br/>';
return;
}
echo $catlink.'<br/>';
global $db;
$rez = $db->query('select id,product,rating from zshop where id in ('.
implode(',', $_SESSION['basket']).')');
cde($db);
while ($row = $rez->fetch_assoc()) {
preg_match ('/(?<=http).*?(https?.*)/', $row['product'], $match);
$link = 'http://freedomplace.ru/diff/php_dbg/loader.php?thumb='.$match[1];
echo '<div><img src="'.$link.'" /><h2>Rating: '.$row['rating'].'</h2>';
echo '<a href="'.$_SERVER['PHP_SELF'].'?delete_from_basket='.$row['id'].
'">delete from basket</a></div>';
}
$rez->free();
echo '<h2><a href="'.$_SERVER['PHP_SELF'].'?checkout" />checkout</a></h2>';
}
//---------------------------------
function delete_from_basket($id) {
$key = array_search ( $id, $_SESSION['basket']);
if ($key!==false)
unset($_SESSION['basket'][$key]);
}
//---------------------------------
function checkout() {
global $db;
$rez = $db->query ('select id, product, rating from zshop where
id in ('.implode(',',$_SESSION['basket']).')');
cde($db);
if (!file_exists('./checks') || !is_dir('./checks'))
mkdir('checks');
$fname = './checks/check_'.date('d_m_Y_H_i_s_').rand(1,10000).'.txt';
$cfile = fopen($fname, 'w');
fwrite ($cfile, "items list\n\r");
fwrite ($cfile, str_repeat("\n\r",3));
while ($row = $rez->fetch_object()) {
fwrite($cfile, $row->id.' '.$row->product.' '.$row->rating."\n\r");
}
fclose($cfile);
header('Content-type: text/plain; charset=windows-1251');
include($fname);
}
Initial URL
Initial Description
EShop for interviews
Initial Title
EShop for interviews
Initial Tags
Initial Language
PHP