Pagination/paginanummering werkt niet goed

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen Brouns

Jeroen Brouns

08/06/2013 15:37:22
Quote Anchor link
Hallo iedereen!

Ik ben voor een website van mij bezig met het implementeren van een paginanummeringssysteem. Hiervoor gebruik ik dit script: http://papermashup.com/easy-php-pagination/

De website is een webwinkel met meerdere categorieën en subcategorieën. De bedoeling van deze pagina is om een overzicht te creëren van de producten van een bepaalde categorie en subcategorie. Hiervoor heb ik de sql-query's aangepast in het begin van het originele script (where category=$category etc..):

Quote:
$category_fromurl = $_GET['category'];
$subcategory_fromurl = $_GET['subcategory'];


$tableName="products";
$targetpage = "product_view.php?category=$category_fromurl&subcategory=$subcategory_fromurl";
$limit = 10;

$query = "SELECT COUNT(*) as num FROM $tableName WHERE category='".$category_fromurl."' and subcategory='".$subcategory_fromurl."'";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];

$stages = 3;
$page = mysql_escape_string($_GET['page']);
if($page){
$start = ($page - 1) * $limit;
}else{
$start = 0;
}

// Get page data
$query1 = "SELECT * FROM $tableName WHERE category='".$category_fromurl."' and subcategory='".$subcategory_fromurl."' LIMIT $start, $limit ";
$result = mysql_query($query1);


Helaas krijg ik nu slechts de eerste 10 entries op de eerste pagina te zien, maar wanneer ik doorklik naar de 2e pagina krijg ik geen resultaten.

Ziet iemand wat ik fout doe?

MVG,

Jeroen Brouns


edit: Link naar de pagina: http://www.brouns-design.nl/paardenbenodigdheden2/product_view.php?category=Hoofdstellen&subcategory=Hoofdstellen
Gewijzigd op 08/06/2013 15:38:32 door Jeroen Brouns
 
PHP hulp

PHP hulp

24/12/2024 17:39:38
 
Erwin H

Erwin H

08/06/2013 15:45:27
Quote Anchor link
Opvallend dat je $_GET['category'] en $_GET['subcategory'] niet beveiligd (waar het wel nodig is) en $_GET['page'] wel probeert te beveiligen, waar het in feite niet nodig is. Daarnaast probeer je het want dit klopt niet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$page
= mysql_escape_string($_GET['page']);
?>

Het is dan nog altijd mysql_real_escape_string() (tenzij je zelf een functie hebt gebouwd, dan heb ik deze opmerking niet gemaakt).
En nu zie ik dat de functie wel bestaat (nooit te oud om te leren...). Volgende is echter nog wel steeds geldig.

Maar hier zal het denk ik dus fout gaan. Haal die functie call weg en typecast $page alleen naar een int met:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$page
= (int)$page;
?>

Dat zou genoeg moeten zijn.
Gewijzigd op 08/06/2013 15:46:36 door Erwin H
 
Danny L

Danny L

08/06/2013 20:03:59
Quote Anchor link
Als ik op één van de knoppen druk om naar een andere pagina te gaan, ga ik naar een URL die er ongeveer zo uitziet:

http://website.ext/product_view.php?category=Hoofdstellen&subcategory=Hoofdstellen?page=2

Hier begin je dus een andere GET zeg maar, dit hoort niet. De URL zou er eigenlijk zo uit moeten zien:

http://website.ext/product_view.php?category=Hoofdstellen&subcategory=Hoofdstellen&page=2

Wanneer je dit ook doet op de website dan werkt dit wel gewoon. Pas het stukje even aan in je script.
Gewijzigd op 08/06/2013 20:05:17 door Danny L
 
Jeroen Brouns

Jeroen Brouns

09/06/2013 17:35:39
Quote Anchor link
Hartelijk bedankt Danny L Voor de oplossing! Ik heb inderdaad de '?' over het hoofd gezien :D

Erwin H bedankt voor het overige commentaar!

Altijd snel geholpen op dit forum.

MVG
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.