| Name | UnitPrice |
|---|---|
| Show Me How to Live (Live at the Quart Festival) | 0.99 |
| Band Members Discuss Tracks from "Revelations" | 0.99 |
| Intoitus: Adorate Deum | 0.99 |
| Miserere mei, Deus | 0.99 |
| Canon and Gigue in D Major: I. Canon | 0.99 |
| Concerto No. 1 in E Major, RV 269 "Spring": I. Allegro | 0.99 |
| Concerto for 2 Violins in D Minor, BWV 1043: I. Vivace | 0.99 |
| Aria Mit 30 Veränderungen, BWV 988 "Goldberg Variations": Aria | 0.99 |
| Suite for Solo Cello No. 1 in G Major, BWV 1007: I. Prélude | 0.99 |
| The Messiah: Behold, I Tell You a Mystery... The Trumpet Shall Sound | 0.99 |
| Solomon HWV 67: The Arrival of the Queen of Sheba | 0.99 |
| "Eine Kleine Nachtmusik" Serenade In G, K. 525: I. Allegro | 0.99 |
| Concerto for Clarinet in A Major, K. 622: II. Adagio | 0.99 |
| Symphony No. 104 in D Major "London": IV. Finale: Spiritoso | 0.99 |
| Symphony No.5 in C Minor: I. Allegro con brio | 0.99 |
| Ave Maria | 0.99 |
| Nabucco: Chorus, "Va, Pensiero, Sull'ali Dorate" | 0.99 |
| Die Walküre: The Ride of the Valkyries | 0.99 |
| Requiem, Op.48: 4. Pie Jesu | 0.99 |
| The Nutcracker, Op. 71a, Act II: Scene 14: Pas de deux: Dance of the Prince & the Sugar-Plum Fairy | 0.99 |
| Nimrod (Adagio) from Variations On an Original Theme, Op. 36 "Enigma" | 0.99 |
| Madama Butterfly: Un Bel Dì Vedremo | 0.99 |
| Jupiter, the Bringer of Jollity | 0.99 |
| Turandot, Act III, Nessun dorma! | 0.99 |
| Adagio for Strings from the String Quartet, Op. 11 | 0.99 |
| PREVIOUS | NEXT |
<?php
$conn = createConn();
/*
- offset value is how many results we skip before printing....
- check to see if there is an offset in the querystring. If not, set offset to 0.
- set to 0 if we have selected a new genre..
- aka: prev or next was not clicked; dropdown was submitted instead
- $_GET['offset'] will result from PREV or NEXT buttons..
- depending on the button it was sent from, the value will either be contents of $prev or $next..
*/
if (isset($_GET['offset'])){
$offset=$_GET['offset'];}
else{
$offset=0;}
/*
- calculate the offset for the previous link.
- If < 0, set to 0... result is that you cannot go back from first page of any genre...
- this subtraction decrements the $prev contents
- first run on a new genre will always result in $prev=0
*/
$prev = $offset - 25;
if ($prev<0) {
$prev=0;
}
// calculate the offset for the NEXT link
$next = $offset + 25;
// see how many records are in the table
$query = "select count(*) as quantityvar from Track";//count contains number of records
$result=mysqli_query($conn,$query);
$row = mysqli_fetch_assoc($result);
$quantity=$row['quantityvar']; //$quantity now contains total number of records in Track table
// if the next offset is greater than the number of records,
// set it to 0 to loop back to the beginning of the table
if ($next > $quantity) {
$next = 0;
}
// check for user input
// initialize the genre to 0 in case no genre was selected.
$gen = 0;
/*
-first check to see if the form DROPDOWN was submitted.
- If so, get the genre from the form DROPDOWN SELECTION
- data will be sent via POST in this case
*/
if (isset($_POST['genre'])){
$gen= $_POST['genre'];}
elseif
/*
- if the form was not submitted, check the querystring to see if the genre was passed as part of the paging link
- paging link is PREVIOUS or NEXT.. should stay on the same genre in the dropdown
- data will be sent via GET in this case
*/
(isset($_GET['genre'])) {
$gen=$_GET['genre'];}
?>
<form method="post" action="php-pagination.php">
<p><label for="genre">Genre:</label>
<!--FORM LINE 1/////////////////DROP DOWN SELECTION/////////////////////////////----->
<select name="genre" id="genre">
<?php
// create a select option list from the Genre table
$query = "select GenreId, Name from Genre";
$result = mysqli_query($conn,$query);
// check for errors
if (!$result) {
die(mysqli_error($conn));
}
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
echo "<option value='".$row['GenreId']."'";
// if a genre has been selected, show that genre as the preselected option
// NOTE that on first run the first item in genre list will show as preselected by default
if ($gen==$row['GenreId']) {echo " selected";}
echo ">".$row['Name']."</option>";
}
}
?>
</select>
<input type="submit" value="Select Genre">
</p>
</form>
<table id="tableStyles">
<tr><th>Name</th><th>UnitPrice</th></tr>
<?php
// create the query. Use the offset as the starting row and limit the rows to 20.
$query = "Select Name, UnitPrice from Track";
// if a genre is found from the form or querystring, add the where clause for the selected rep
if ($gen>0) {
$query=$query." where GenreId =$gen";
}
// add the limit clause (must be after the where clause)
$query = $query." Limit $offset, 25"; //skip amt of $offset and only produce 25 records max
//if you are not coming from paging link, but have clicked 'select genre' instead...
//your offset is going to be 0 so you'll start from beginning of results
// run the query
$result = mysqli_query($conn,$query);
// check for errors
if (!$result) {
die(mysqli_error($conn));
}
// check for results
if (mysqli_num_rows($result)> 0) {
// loop through results and display
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr><td>".$row['Name']."</td>";
echo "<td>".$row['UnitPrice']."</td></tr>";
}
}
/*
- IF OFFSET EXCEEDS AMOUNT OF RECORDS FOR ANY GIVEN GENRE, THE TABLE OUTPUT WILL BE BLANK
- NEED CLOSING BCKET HERE SO THAT THE PRVS AND NEXT BUTTONS ARE NOT A CONDITION OF QUERY OUTPUT
- BECAUSE THE QUERY WILL PRODUCE NOTHING AFTER 2 OR 3 PAGES IF WE ARE
SKIPPING AMOUNT OF OFFSET 25 PER PAGE BUT THE GENRE HAS LESS RESULTSS THAN THAT..
THIS WILL ALLOW US TO USE THE BACK BUTTON AFTER RESULTS DONT PRINT ANYMORE
- add the Previous and Next links in the last row of the table.
- include the offset and the genre in the querystring
- send data via GET... will show in url
*/
;?>
<tr id="links">
<td><a href='php-pagination.php?offset=<?php echo $prev?>&genre=<?php echo $gen?>'>PREVIOUS</a></td>
<td><a href='php-pagination.php?offset=<?php echo $next?>&genre=<?php echo $gen?>'>NEXT</a></td>
</tr>
</table>