Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require_once("connect.php");
- $user_id = 1; // TESTI POISTA JA KORVAA OMALLA $_SESSION['id'] muuttujalla
- // käyttäjä ei ole kirjatunut sisään tai käyttäjä ei ole kirjautuneena sisään
- if(!$_SERVER['REQUEST_METHOD'] == 'GET' || !isset($user_id)) {
- // ohjaa käyttäjä etusivulle (tai näytä virhe, itsestä kiinni)
- header("location:index.php");
- exit;
- } else {
- // alustetaan tulostettava output muuttuja
- $output = '';
- // suoritetaan ensimmäinen kysely, jossa tarkastetaan, kuinka monta riviä tietokannasta löytyy
- // tallennetaan SQL-kysely $query muuttujaan
- $query = "SELECT movie_id FROM favourites WHERE user_id = :user_id";
- // suoritetaan $query muuttujaan tallennettu kysely annetuilla parametreilla
- $stmt = $pdo->prepare($query);
- $stmt->bindParam(':user_id', $user_id);
- $stmt->execute();
- // tarkistetaan palautettujen rivien tulos
- $row_count = $stmt->rowCount();
- // jos käyttäjä ei ole lisännyt yhtään suosikkia (ts. palautettu rivimäärä on 0)
- if($row_count == 0) {
- // tulosta "Ei lisättyjä suosikkeja" tms.
- echo("Ei lisättyjä suosikkeja");
- exit;
- }
- // nollataan PDO-objekti tässä välissä kyselyristiriitojen välttämiseksi
- $stmt = null;
- // määritä sivunumero- ja sivumuuttujat
- $page_count = 0;
- $page = 1;
- // tarkistetaan, syötettiinkö sivunumero GET-parametrin mukana
- // Esimerkki URL: http://localhost/favorites.php?user=3&page=1 <-
- if(!empty($_GET['page'])) {
- // tarkista, että arvo on kokonaisluku
- $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
- // jos GET-parametrina annettu sivunumero ei ollut kokonaisluku, pakota sivunumeroksi "1"
- if(false === $page) {
- $page = 1;
- }
- }
- // kuinka monta suosikkia sivulla näytetään
- $items_per_page = 3;
- // tietokannalta kysyttävä offset-arvo
- $offset = ($page - 1) * $items_per_page;
- // määritä sivunumero ja ylikirjoita aiempi $page_count muuttuja
- $page_count = (int)ceil($row_count / $items_per_page);
- // tarkista, onko kyseinen sivu suurempi kuin yhteisten sivunumerojen määrä
- if($page > $page_count) {
- // jos on, pakota sivunumeroksi "1",
- // koska vierailtava sivu ei voi olla arvoltaan suurempi kuin sivujen kokonaismäärä
- $page = 1;
- }
- // suoritetaan toinen kysely, jossa haetaan itse elokuva-data suosikkien perusteella
- // tallennetaan kysely $query muuttujaan
- $query = "SELECT m.id as movie_id, m.title, m.year,
- m.genre, m.imdb, m.poster, m.duration, m.synopsis
- FROM favourites f
- INNER JOIN movies m ON m.id = f.movie_id
- WHERE f.user_id = :user_id
- ORDER BY m.id DESC LIMIT :offset, :items_per_page";
- // suoritetaan $query muuttujaan tallennettu kysely annetuilla parametreilla
- $stmt = $pdo->prepare($query);
- $stmt->bindParam(':user_id', $user_id);
- $stmt->bindValue(':offset', (int) $offset, PDO::PARAM_INT);
- $stmt->bindValue(':items_per_page', (int) $items_per_page , PDO::PARAM_INT);
- $stmt->execute();
- // kasataan elementti elokuvalle
- $output .= '<div class="row">';
- while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
- // output movie data for all the movies
- $output .=
- '<div class="col-xs-12 col-sm-12 col-md-4">'.
- '<div id="search_results">';
- // tarkistetaan, onko tietokantaan määritetty kuva elokuvalle
- $output .= '<div class="poster">';
- if($row['poster'] !== null) {
- // jos on, tulostetaan elokuvan kuva
- $output .=
- '<img src="public/images/movies/' .$row['poster'] .'" alt="'.$row['poster'].'">';
- } else {
- // jos ei, näytetään teksti
- $output .=
- '<p class="no-image">Ei saatavilla olevaa kuvaa</p>';
- }
- $output .= '</div>'; // end of poster
- $output .='<div class="title">'.
- '<p class="movietxt">'.$row['title'].'</p>';
- // "poista suosikeista" -lomake.
- // (turha tehdä ehtolausetta, kun tiedetään että nämä on käyttäjän suosikkeja)
- $output .=
- '<form id="favourite" method="POST" action="del_favourite.php">'.
- '<input type="hidden" name="movie_id" value="'.$row['movie_id'].'" />'.
- '<input type="submit" value="Poista suosikeista" class="btn btn-block btn-danger favourite_star_1" />'.
- '</form>';
- $output .= '</div>'.
- '<div class="description">'.
- '<p class="movietxt">'.$row['synopsis'].'</p>'.
- '</div>'.
- '<div class="info">'.
- '<p class=" movietxt infotxt"><b>IMDb:</b> '.$row['imdb'].'</p>'.
- '<p class=" movietxt infotxt"><b>Valmistumisvuosi:</b> '.$row['year'].'</p>'.
- '<p class=" movietxt infotxt"><b>Kesto:</b> '.$row['duration'].'</p>'.
- '<p class=" movietxt infotxt"><b>Genre:</b> '.$row['genre'].'</p>'.
- '</div>'.
- '</div>'.
- '</div>';
- }
- $output .= '</div>'; // end of row
- // jos sivuja on enemmän kuin yksi, tulosta sivunumeroiden navigaatio
- if($page_count > 1) {
- $output .= '<div class="row">';
- $output .=
- '<nav aria-label="Page navigation">'.
- '<ul class="pagination">';
- if($page > 1) {
- // jos sivunumero on suurempi kuin 1, näytä "Edellinen" nappi
- $output .=
- '<li>'.
- '<a href="favourites.php?user=' .$user_id . '&page=' .( $page - 1 ). '" aria-label="Previous">'.
- '<span aria-hidden="true">«</a></span>'.
- '</a>'.
- '</li>'; // end of "previous" button
- }
- for ($i = 1; $i <= $page_count; $i++) {
- // Sivunumerot
- $output .=
- '<li>'.
- '<a href="favourites.php?user=' .$user_id . '&page=' . $i . '">'.$i.'</a>'.
- '</li>'; // end of page numbers
- }
- if($page < $page_count) {
- // "Seuraava" nappi
- $output .=
- '<li>'.
- '<a href="favourites.php?user=' .$user_id . '&page=' .( $page + 1 ). '" aria-label="Next">'.
- '<span aria-hidden="true">»</span>'.
- '</a>'.
- '</li>'; // end of "next" button
- }
- $output .=
- '</ul>'. // end of unordered list for page navigation
- '</nav>'. // end of pages navigation
- '</div>'; // end of row
- }
- }
- ?>
- <!-- POISTA HTML JA KORVAA OMALLA -->
- <!DOCTYPE html>
- <html>
- <head>
- <style type="text/css">
- img {
- width: 350px;
- height: 200px;
- }
- .no-image {
- width: 350px;
- /**height: 200px;*/
- line-height: 200px;
- vertical-align: middle;
- background-color: #ddd;
- color: #aaa;
- text-transform: uppercase;
- text-align: center;
- vertical-align: middle;
- font-size: 20px;
- }
- </style>
- <title></title>
- <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
- </head>
- <body>
- <div class="row favorites">
- <div class="container">
- <?php if($output):?>
- <?php echo $output; ?>
- <?php endif; ?>
- </div>
- </div>
- <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement