Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 7.35 KB | None | 0 0
  1. <?php
  2. require_once("connect.php");
  3.  
  4. $user_id = 1; // TESTI POISTA JA KORVAA OMALLA $_SESSION['id'] muuttujalla
  5.  
  6. // käyttäjä ei ole kirjatunut sisään tai käyttäjä ei ole kirjautuneena sisään
  7. if(!$_SERVER['REQUEST_METHOD'] == 'GET' || !isset($user_id)) {
  8.   // ohjaa käyttäjä etusivulle (tai näytä virhe, itsestä kiinni)
  9.   header("location:index.php");
  10.   exit;
  11. } else {
  12.  
  13.   // alustetaan tulostettava output muuttuja
  14.   $output = '';
  15.  
  16.   // suoritetaan ensimmäinen kysely, jossa tarkastetaan, kuinka monta riviä tietokannasta löytyy
  17.  
  18.   // tallennetaan SQL-kysely $query muuttujaan
  19.   $query = "SELECT movie_id FROM favourites WHERE user_id = :user_id";
  20.  
  21.   // suoritetaan $query muuttujaan tallennettu kysely annetuilla parametreilla
  22.   $stmt = $pdo->prepare($query);
  23.   $stmt->bindParam(':user_id', $user_id);
  24.   $stmt->execute();
  25.  
  26.   // tarkistetaan palautettujen rivien tulos
  27.   $row_count = $stmt->rowCount();
  28.  
  29.   // jos käyttäjä ei ole lisännyt yhtään suosikkia (ts. palautettu rivimäärä on 0)
  30.   if($row_count == 0) {
  31.     // tulosta "Ei lisättyjä suosikkeja" tms.
  32.     echo("Ei lisättyjä suosikkeja");
  33.     exit;
  34.   }
  35.  
  36.   // nollataan PDO-objekti tässä välissä kyselyristiriitojen välttämiseksi
  37.   $stmt = null;
  38.  
  39.   // määritä sivunumero- ja sivumuuttujat
  40.   $page_count = 0;
  41.   $page = 1;
  42.  
  43.   // tarkistetaan, syötettiinkö sivunumero GET-parametrin mukana
  44.   // Esimerkki URL: http://localhost/favorites.php?user=3&page=1 <-
  45.   if(!empty($_GET['page'])) {
  46.     // tarkista, että arvo on kokonaisluku
  47.     $page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);
  48.  
  49.     // jos GET-parametrina annettu sivunumero ei ollut kokonaisluku, pakota sivunumeroksi "1"
  50.     if(false === $page) {
  51.       $page = 1;
  52.     }
  53.   }
  54.  
  55.   // kuinka monta suosikkia sivulla näytetään
  56.   $items_per_page = 3;
  57.  
  58.   // tietokannalta kysyttävä offset-arvo
  59.   $offset = ($page - 1) * $items_per_page;
  60.  
  61.   // määritä sivunumero ja ylikirjoita aiempi $page_count muuttuja
  62.   $page_count = (int)ceil($row_count / $items_per_page);
  63.  
  64.   // tarkista, onko kyseinen sivu suurempi kuin yhteisten sivunumerojen määrä
  65.   if($page > $page_count) {
  66.     // jos on, pakota sivunumeroksi "1",
  67.     // koska vierailtava sivu ei voi olla arvoltaan suurempi kuin sivujen kokonaismäärä
  68.     $page = 1;
  69.   }
  70.  
  71.   // suoritetaan toinen kysely, jossa haetaan itse elokuva-data suosikkien perusteella
  72.  
  73.   // tallennetaan kysely $query muuttujaan
  74.   $query = "SELECT m.id as movie_id, m.title, m.year,
  75.            m.genre, m.imdb, m.poster, m.duration, m.synopsis
  76.            FROM favourites f
  77.            INNER JOIN movies m ON m.id = f.movie_id
  78.            WHERE f.user_id = :user_id
  79.            ORDER BY m.id DESC LIMIT :offset, :items_per_page";
  80.  
  81.   // suoritetaan $query muuttujaan tallennettu kysely annetuilla parametreilla
  82.   $stmt = $pdo->prepare($query);
  83.   $stmt->bindParam(':user_id', $user_id);
  84.   $stmt->bindValue(':offset', (int) $offset, PDO::PARAM_INT);
  85.   $stmt->bindValue(':items_per_page', (int) $items_per_page , PDO::PARAM_INT);
  86.   $stmt->execute();
  87.  
  88.   // kasataan elementti elokuvalle
  89.   $output .= '<div class="row">';
  90.  
  91.       while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  92.         // output movie data for all the movies
  93.         $output .=
  94.         '<div class="col-xs-12 col-sm-12 col-md-4">'.
  95.         '<div id="search_results">';
  96.        
  97.         // tarkistetaan, onko tietokantaan määritetty kuva elokuvalle
  98.         $output .= '<div class="poster">';
  99.         if($row['poster'] !== null) {
  100.           // jos on, tulostetaan elokuvan kuva
  101.           $output .=
  102.           '<img src="public/images/movies/' .$row['poster'] .'" alt="'.$row['poster'].'">';
  103.         } else {
  104.           // jos ei, näytetään teksti
  105.           $output .=
  106.           '<p class="no-image">Ei saatavilla olevaa kuvaa</p>';
  107.         }
  108.         $output .= '</div>'; // end of poster
  109.        
  110.         $output .='<div class="title">'.
  111.         '<p class="movietxt">'.$row['title'].'</p>';
  112.  
  113.         // "poista suosikeista" -lomake.
  114.         // (turha tehdä ehtolausetta, kun tiedetään että nämä on käyttäjän suosikkeja)
  115.         $output .=
  116.         '<form id="favourite" method="POST" action="del_favourite.php">'.
  117.         '<input type="hidden" name="movie_id" value="'.$row['movie_id'].'" />'.
  118.         '<input type="submit" value="Poista suosikeista" class="btn btn-block btn-danger favourite_star_1" />'.
  119.         '</form>';
  120.  
  121.  
  122.         $output .= '</div>'.
  123.         '<div class="description">'.
  124.         '<p class="movietxt">'.$row['synopsis'].'</p>'.
  125.         '</div>'.
  126.         '<div class="info">'.
  127.         '<p class=" movietxt infotxt"><b>IMDb:</b> '.$row['imdb'].'</p>'.
  128.         '<p class=" movietxt infotxt"><b>Valmistumisvuosi:</b> '.$row['year'].'</p>'.
  129.         '<p class=" movietxt infotxt"><b>Kesto:</b> '.$row['duration'].'</p>'.
  130.         '<p class=" movietxt infotxt"><b>Genre:</b> '.$row['genre'].'</p>'.
  131.         '</div>'.
  132.         '</div>'.
  133.         '</div>';
  134.       }
  135.  
  136.       $output .= '</div>'; // end of row
  137.  
  138.         // jos sivuja on enemmän kuin yksi, tulosta sivunumeroiden navigaatio
  139.         if($page_count > 1) {
  140.           $output .= '<div class="row">';
  141.          
  142.           $output .=
  143.           '<nav aria-label="Page navigation">'.
  144.           '<ul class="pagination">';
  145.  
  146.         if($page > 1) {
  147.           // jos sivunumero on suurempi kuin 1, näytä "Edellinen" nappi
  148.           $output .=
  149.           '<li>'.
  150.             '<a href="favourites.php?user=' .$user_id . '&page=' .( $page - 1 ). '" aria-label="Previous">'.
  151.               '<span aria-hidden="true">&laquo;</a></span>'.
  152.             '</a>'.
  153.           '</li>'; // end of "previous" button
  154.         }
  155.  
  156.         for ($i = 1; $i <= $page_count; $i++) {
  157.           // Sivunumerot
  158.           $output .=
  159.           '<li>'.
  160.             '<a href="favourites.php?user=' .$user_id . '&page=' . $i . '">'.$i.'</a>'.
  161.           '</li>'; // end of page numbers
  162.         }
  163.        
  164.         if($page < $page_count) {
  165.           // "Seuraava" nappi
  166.           $output .=
  167.           '<li>'.
  168.             '<a href="favourites.php?user=' .$user_id . '&page=' .( $page + 1 ). '" aria-label="Next">'.
  169.               '<span aria-hidden="true">&raquo;</span>'.
  170.             '</a>'.
  171.           '</li>'; // end of "next" button
  172.         }
  173.        
  174.         $output .=
  175.         '</ul>'. // end of unordered list for page navigation
  176.         '</nav>'. // end of pages navigation
  177.         '</div>'; // end of row
  178.       }
  179.   }
  180. ?>
  181.  
  182. <!-- POISTA HTML JA KORVAA OMALLA -->
  183. <!DOCTYPE html>
  184. <html>
  185. <head>
  186.   <style type="text/css">
  187.     img {
  188.       width: 350px;
  189.       height: 200px;
  190.     }
  191.     .no-image {
  192.       width: 350px;
  193.       /**height: 200px;*/
  194.       line-height: 200px;
  195.       vertical-align: middle;
  196.       background-color: #ddd;
  197.       color: #aaa;
  198.       text-transform: uppercase;
  199.       text-align: center;
  200.       vertical-align: middle;
  201.       font-size: 20px;
  202.     }
  203.   </style>
  204.   <title></title>
  205.   <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  206. </head>
  207. <body>
  208.  
  209. <div class="row favorites">
  210.   <div class="container">
  211.     <?php if($output):?>
  212.         <?php echo $output; ?>
  213.     <?php endif; ?>    
  214.   </div>
  215. </div>
  216.  
  217.     <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
  218. </body>
  219. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement