navigeren / sorteren

Status
Niet open voor verdere reacties.

shadowbikes

Gebruiker
Lid geworden
1 nov 2006
Berichten
466
hallo wie kan deze beginnende php'er helpen.
Het volgende probleem: Als de pagina geladen wordt, sorteert ie automatisch op nummer en begint bij pagina 1. Als ik nu sorteer op jaar ( en dat gaat ook nog goed) en wil naar pagina 2 vervalt de sortering op jaar en begint dus weer te sorteren op nummer. Hoe kan ik dit oplossen.
Zie script
PHP:
<?PHP
include("english.php");
mysql_connect("localhost", "", "") or die(mysql_error());
mysql_select_db("movie") or die(mysql_error());
if(isset($_GET['sortby']))
    {
    switch($_GET['sortby'])
        {
        case 'NUM': $sorteer = 'num'; break;
        case 'ORIGINALTITLE': $sorteer = 'originaltitle'; break;
        case 'COUNTRY': $sorteer = 'country'; break;
        case 'CATEGORY': $sorteer = 'category';break;
        case 'YEAR': $sorteer = 'year'; break;
        default: $sorteer = $genre; break;
        }
    }
else
    {
    $sorteer = 'num';
    }
$query = "SELECT * FROM movies";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
// max resulaten op 1 pagina
$max_on_page = 30;
// laat hoeveel pagina nummers ervoor en erachter zien
$viewpage = 1;
$num_pages = ceil($num_rows / $max_on_page);
$page = $_GET['page'];
//als de pagina niet is opgegeven page wordt 1, verander pagina.php
if (!isset($_GET["page"])) {
    $page = 1;
    header("location: test.php?page=".$page."&sortby=".$sorteer."");
}
// we willen geen negative pagina's
$begin = $page - $viewpage;
if ($begin < 1) {
    $begin = 1;
}
// ook niet teveel
$end = $page + $viewpage;
if ($end > $num_pages) {
    $end = $num_pages;
}
$vorige = $page - 1;
$volgende = $page + 1;
// pas de resultaten aan de pagina aan
$start = $max_on_page * $page - $max_on_page;

$res = mysql_query("SELECT * FROM movies ORDER BY ".$sorteer." ASC LIMIT ".$start.", ".$max_on_page."");
print "<center><table border='0' cellspacing='0' bordercolordark='black' bordercolorlight='blue' bgcolor='#BBBBBB' width='730' style=' font-family:Arial; font-weight:bold; font-size:11px; border-width:1; border-style:groove;'>\n";
   Print "<tr>";
   Print "<td width='50'><div class=head><a href=test.php?page=".$page."&sortby=NUM> ".$lang[0].":</a></div></td>\n";
   Print "<td width='350'><div class=head><a href=test.php?page=".$page."&sortby=ORIGINALTITLE> ".$lang[8].":</a></div></td>\n";
   Print "<td width='150'><div class=head><a href=test.php?page=".$page."&sortby=COUNTRY> ".$lang[13].":</a></div></td>\n";
   Print "<td width='100'><div class=head><a href=test.php?page=".$page."&sortby=CATEGORY> ".$lang[14].":</a></div></td>\n";
   Print "<td width='100'><div class=head><a href=test.php?page=".$page."&sortby=YEAR> ".$lang[15].":</a></td></div></tr>\n";
while($info = mysql_fetch_assoc($res)) {
      if($info['COUNTRY'] == "") { $info['COUNTRY'] = "N/A"; }
      Print "<tr>\n";
      Print "<td><div class=text>".$info['NUM'] . "</div></td>\n";
      Print "<td><div class=text><a href=index.php?id=".$info['NUM'].">".$info['ORIGINALTITLE'] . "</a></div></td>\n";
      Print "<td><div class=text>".$info['COUNTRY'] . "</div></td>\n";
      Print "<td><div class=text>".$info['CATEGORY'] . "</div></td>\n";
      Print "<td><div class=text>".$info['YEAR'] . "</div></td></tr>\n";
      }
      Print "</table>\n";
      ### vanaf hier wordt de navigatie weergegeven ###
Print "   Pagina ".$page." van de ".$num_pages."";
if ($begin > 1) {
    echo '<a href="?page=1&sortby='.$sorteer.'" title="Eerste pagina">eerste</a>  <a href="?page='.$vorige.'&sortby='.$sorteer.'" title="Vorige Pagina">&lt;</a> ';
}
for ($i = $begin; $i <= $end; $i++) {
    if ($i == $page) {
            echo '<b>['.$page.'] </b>';
    }
    else {
            echo '<a href="?page='.$i.'&sortby='.$sorteer.'">'.$i.' </a> ';
    }
}
if ($end < $num_pages) {
    echo '<a href="?page='.$volgende.'&sortby='.$sorteer.'" title="Volgende Pagina">&gt;</a>  <a href="?page='.$num_pages.'&sortby='.$sorteer.'" title="Laatste Pagina">laatste</a>';
}

?>
 
$lang komt uit de english.php.
PHP:
<?php
//-----------------------------------------------------------------------
         $LANGVER = "1.0"; // english.php (19-07-06) René
/*-----------------------------------------------------------------------
        This file is made by René Janssen.
         Please translate all entrys to your language.
-----------------------------------------------------------------------*/
$langcreatedate = "25-10-06";
$lang[0] = "Num";
$lang[1] = "Checked";
$lang[2] = "Media";
$lang[3] = "Mediatype";
$lang[4] = "Source";
$lang[5] = "Dateadd";
$lang[6] = "Borrower";
$lang[7] = "Rating";
$lang[8] = "Originaltitle";
$lang[9] = "Translatedtitle";
$lang[10] = "Formattedtitle";
$lang[11] = "Director";
$lang[12] = "Producer";
$lang[13] = "Country";
$lang[14] = "Category";
$lang[15] = "Year";
$lang[16] = "Length";
$lang[17] = "Actors";
$lang[18] = "URL";
$lang[19] = "Description";
$lang[20] = "Comments";
$lang[21] = "Videoformat";
$lang[22] = "Videobitrate";
$lang[23] = "Audioformat";
$lang[24] = "Audiobitrate";
$lang[25] = "Resolution";
$lang[26] = "Framerate";
$lang[27] = "Languages";
$lang[28] = "Subtitles";
$lang[29] = "Filesize";
$lang[30] = "Disks";
$lang[31] = "Picturename";
// Other:
$lang[32] = "Search";
$lang[33] = "Back";
$lang[34] = "";
$lang[35] = "";
$lang[36] = "";
$lang[37] = "";
$lang[38] = "";
$lang[39] = "";
$lang[40] = "";

?>
 
Oke, echo eens $sorteer volgens mij ligt daar het probleem. (bij de switch)
 
Sorry maar snap niet wat je hiermee bedoelt. Kun je me dit in code sturen. Ben hier pas mee bezig.
Oh ja, bij de switch staat nog een foutje. bij default moet staan 'num' i.vp. $genre
 
Nou dat je dit eens doet:

PHP:
<?PHP 
include("english.php"); 
mysql_connect("localhost", "", "") or die(mysql_error()); 
mysql_select_db("movie") or die(mysql_error()); 
if(isset($_GET['sortby'])) 
    { 
    switch($_GET['sortby']) 
        { 
        case 'NUM': $sorteer = 'num'; break; 
        case 'ORIGINALTITLE': $sorteer = 'originaltitle'; break; 
        case 'COUNTRY': $sorteer = 'country'; break; 
        case 'CATEGORY': $sorteer = 'category';break; 
        case 'YEAR': $sorteer = 'year'; break; 
        default: $sorteer = 'num'; break; 
        } 
    } 
else 
    { 
    $sorteer = 'num'; 
    } 

echo 'Het moet hierop worden gesorteerd: <b>' . $sorteer . '</b><br>';

$query = "SELECT * FROM movies"; 
$result = mysql_query($query); 
$num_rows = mysql_num_rows($result); 
// max resulaten op 1 pagina 
$max_on_page = 30; 
// laat hoeveel pagina nummers ervoor en erachter zien 
$viewpage = 1; 
$num_pages = ceil($num_rows / $max_on_page); 
$page = $_GET['page']; 
//als de pagina niet is opgegeven page wordt 1, verander pagina.php 
if (!isset($_GET["page"])) { 
    $page = 1; 
    header("location: test.php?page=".$page."&sortby=".$sorteer.""); 
} 
// we willen geen negative pagina's 
$begin = $page - $viewpage; 
if ($begin < 1) { 
    $begin = 1; 
} 
// ook niet teveel 
$end = $page + $viewpage; 
if ($end > $num_pages) { 
    $end = $num_pages; 
} 
$vorige = $page - 1; 
$volgende = $page + 1; 
// pas de resultaten aan de pagina aan 
$start = $max_on_page * $page - $max_on_page; 

$res = mysql_query("SELECT * FROM movies ORDER BY ".$sorteer." ASC LIMIT ".$start.", ".$max_on_page.""); 
print "<center><table border='0' cellspacing='0' bordercolordark='black' bordercolorlight='blue' bgcolor='#BBBBBB' width='730' style=' font-family:Arial; font-weight:bold; font-size:11px; border-width:1; border-style:groove;'>\n"; 
   Print "<tr>"; 
   Print "<td width='50'><div class=head><a href=test.php?page=".$page."&sortby=NUM> ".$lang[0].":</a></div></td>\n"; 
   Print "<td width='350'><div class=head><a href=test.php?page=".$page."&sortby=ORIGINALTITLE> ".$lang[8].":</a></div></td>\n"; 
   Print "<td width='150'><div class=head><a href=test.php?page=".$page."&sortby=COUNTRY> ".$lang[13].":</a></div></td>\n"; 
   Print "<td width='100'><div class=head><a href=test.php?page=".$page."&sortby=CATEGORY> ".$lang[14].":</a></div></td>\n"; 
   Print "<td width='100'><div class=head><a href=test.php?page=".$page."&sortby=YEAR> ".$lang[15].":</a></td></div></tr>\n"; 
while($info = mysql_fetch_assoc($res)) { 
      if($info['COUNTRY'] == "") { $info['COUNTRY'] = "N/A"; } 
      Print "<tr>\n"; 
      Print "<td><div class=text>".$info['NUM'] . "</div></td>\n"; 
      Print "<td><div class=text><a href=index.php?id=".$info['NUM'].">".$info['ORIGINALTITLE'] . "</a></div></td>\n"; 
      Print "<td><div class=text>".$info['COUNTRY'] . "</div></td>\n"; 
      Print "<td><div class=text>".$info['CATEGORY'] . "</div></td>\n"; 
      Print "<td><div class=text>".$info['YEAR'] . "</div></td></tr>\n"; 
      } 
      Print "</table>\n"; 
      ### vanaf hier wordt de navigatie weergegeven ### 
Print "   Pagina ".$page." van de ".$num_pages.""; 
if ($begin > 1) { 
    echo '<a href="?page=1&sortby='.$sorteer.'" title="Eerste pagina">eerste</a>  <a href="?page='.$vorige.'&sortby='.$sorteer.'" title="Vorige Pagina">&lt;</a> '; 
} 
for ($i = $begin; $i <= $end; $i++) { 
    if ($i == $page) { 
            echo '<b>['.$page.'] </b>'; 
    } 
    else { 
            echo '<a href="?page='.$i.'&sortby='.$sorteer.'">'.$i.' </a> '; 
    } 
} 
if ($end < $num_pages) { 
    echo '<a href="?page='.$volgende.'&sortby='.$sorteer.'" title="Volgende Pagina">&gt;</a>  <a href="?page='.$num_pages.'&sortby='.$sorteer.'" title="Laatste Pagina">laatste</a>'; 
} 

?>
 
Ah, het probleem is de hoofdletters. Je moet alles of met hoofdletters of met kleine letters doen.

PHP:
<?PHP 
include("english.php"); 
mysql_connect("localhost", "", "") or die(mysql_error()); 
mysql_select_db("movie") or die(mysql_error()); 
if(isset($_get['sortby'])) 
    { 
    switch($_get['sortby']) 
        { 
        case 'num': $sorteer = 'num'; break; 
        case 'originaltitle': $sorteer = 'originaltitle'; break; 
        case 'country': $sorteer = 'country'; break; 
        case 'category': $sorteer = 'category';break; 
        case 'year': $sorteer = 'year'; break; 
        default: $sorteer = 'num'; break; 
        } 
    } 
else 
    { 
    $sorteer = 'num'; 
    }

$query = "SELECT * FROM movies"; 
$result = mysql_query($query); 
$num_rows = mysql_num_rows($result); 
// max resulaten op 1 pagina 
$max_on_page = 30; 
// laat hoeveel pagina nummers ervoor en erachter zien 
$viewpage = 1; 
$num_pages = ceil($num_rows / $max_on_page); 
$page = $_GET['page']; 
//als de pagina niet is opgegeven page wordt 1, verander pagina.php 
if (!isset($_GET["page"])) { 
    $page = 1; 
    header("location: test.php?page=".$page."&sortby=".$sorteer.""); 
} 
// we willen geen negative pagina's 
$begin = $page - $viewpage; 
if ($begin < 1) { 
    $begin = 1; 
} 
// ook niet teveel 
$end = $page + $viewpage; 
if ($end > $num_pages) { 
    $end = $num_pages; 
} 
$vorige = $page - 1; 
$volgende = $page + 1; 
// pas de resultaten aan de pagina aan 
$start = $max_on_page * $page - $max_on_page; 

$res = mysql_query("SELECT * FROM movies ORDER BY ".$sorteer." ASC LIMIT ".$start.", ".$max_on_page.""); 
print "<center><table border='0' cellspacing='0' bordercolordark='black' bordercolorlight='blue' bgcolor='#BBBBBB' width='730' style=' font-family:Arial; font-weight:bold; font-size:11px; border-width:1; border-style:groove;'>\n"; 
   Print "<tr>"; 
   Print "<td width='50'><div class=head><a href=test.php?page=".$page."&sortby=NUM> ".$lang[0].":</a></div></td>\n"; 
   Print "<td width='350'><div class=head><a href=test.php?page=".$page."&sortby=ORIGINALTITLE> ".$lang[8].":</a></div></td>\n"; 
   Print "<td width='150'><div class=head><a href=test.php?page=".$page."&sortby=COUNTRY> ".$lang[13].":</a></div></td>\n"; 
   Print "<td width='100'><div class=head><a href=test.php?page=".$page."&sortby=CATEGORY> ".$lang[14].":</a></div></td>\n"; 
   Print "<td width='100'><div class=head><a href=test.php?page=".$page."&sortby=YEAR> ".$lang[15].":</a></td></div></tr>\n"; 
while($info = mysql_fetch_assoc($res)) { 
      if($info['COUNTRY'] == "") { $info['COUNTRY'] = "N/A"; } 
      Print "<tr>\n"; 
      Print "<td><div class=text>".$info['NUM'] . "</div></td>\n"; 
      Print "<td><div class=text><a href=index.php?id=".$info['NUM'].">".$info['ORIGINALTITLE'] . "</a></div></td>\n"; 
      Print "<td><div class=text>".$info['COUNTRY'] . "</div></td>\n"; 
      Print "<td><div class=text>".$info['CATEGORY'] . "</div></td>\n"; 
      Print "<td><div class=text>".$info['YEAR'] . "</div></td></tr>\n"; 
      } 
      Print "</table>\n"; 
      ### vanaf hier wordt de navigatie weergegeven ### 
Print "   Pagina ".$page." van de ".$num_pages.""; 
if ($begin > 1) { 
    echo '<a href="?page=1&sortby='.$sorteer.'" title="Eerste pagina">eerste</a>  <a href="?page='.$vorige.'&sortby='.$sorteer.'" title="Vorige Pagina">&lt;</a> '; 
} 
for ($i = $begin; $i <= $end; $i++) { 
    if ($i == $page) { 
            echo '<b>['.$page.'] </b>'; 
    } 
    else { 
            echo '<a href="?page='.$i.'&sortby='.$sorteer.'">'.$i.' </a> '; 
    } 
} 
if ($end < $num_pages) { 
    echo '<a href="?page='.$volgende.'&sortby='.$sorteer.'" title="Volgende Pagina">&gt;</a>  <a href="?page='.$num_pages.'&sortby='.$sorteer.'" title="Laatste Pagina">laatste</a>'; 
} 

?>
 
hoi,
bedankt voor je input, maar ik had 't probleem gisteravond al gevonden. Het zit 'm in de switch, deze is helemaal niet nodig.
PHP:
if(!isset($_GET['sortby']))
    {
        $sorteer = 'num';
    }
else
    {
    $sorteer = $_GET['sortby'];
    }
Dit is 't uiteindelijk geworden en het werkt perfect.
nogmaals bedankt voor de moeite

Rene
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan