ob_start(); require_once( 'vote/config.php' ); require_once( 'vote/set.php' ); if ($_GET) { // 商品がクリックされたときに、該当商品の投票をアップデートする update_vote($mysqli); } // 現在の投票数を取得する $query = "SELECT product_id, product_name, product_votes FROM products"; $result = $mysqli->query($query); while ( $row = $result->fetch_assoc() ) { ?> a href="?vote=up&id=?php echo $row["product_id"] ?>"> ?php echo $row["product_name"]; ?>: ?php echo $row["product_votes"]; ?> /a> ?php } // End of While ?>
function update_vote($mysqli){ $product_id = $_GET['id']; // クッキーで投票済かどうかを判断する if ( !isset($_COOKIE['voted_'.$product_id]) ) { // GETが実行されたときに下記を実行 if ( isset($_GET['vote'], $_GET['id']) ) { $query = "UPDATE products SET product_votes = product_votes + 1 WHERE product_id = $product_id"; $mysqli->query($query); // クッキーの付与 // 参考:http://php.net/manual/ja/function.setcookie.php#refsect1-function.setcookie-examples setcookie("voted_".$product_id, "voted_".$product_id, time()+3600); // 有効期限は一時間です } } else { //echo "投票済です"; } }
$host = "localhost"; $username = "root"; $password = ""; $dbname = "test"; $mysqli = new mysqli($host, $username, $password, $dbname); $mysqli->set_charset("utf8"); if ($mysqli->connect_error) { error_log($mysqli->connect_error); exit; }