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