pagination laat niet de juiste aantal pagina's zien

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

George mendel

george mendel

08/06/2014 13:20:27
Quote Anchor link
Dag allemaal, zoals jullie in mijn vorige post hebben gelezen was ik bezig met het maken van pagination voor mijn applicatie. Ik heb het voor elkaar gekregen om de records in aparte pagina's te krijgen.
nu is het probleem:

Ik heb in mijn script meegegeven dat ik 2 records per pagina wil hebben en dat lukt wel. maar ik krijg extra lege pagina's die met niks gevuld zijn. Weet iemand van jullie wat ik fout heb gedaan in de onderstaande script?
denk zelf dat het in de pagination class zit, maar krijg het niet opgelost.
hieronder kan je de scripts zien.

class: all_training_categorie.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    public function select_count_trainingen() {
        $all_categorie = 'SELECT COUNT(*)
                      FROM training train
                      JOIN training_categorie train_cat ON train_cat.training_id = train.id
                      JOIN categorie cat ON cat.id = train_cat.categorie_id
                      JOIN training_type trainingtype ON trainingtype.training_id = train.id
                      JOIN type_training typetrain ON typetrain.id = trainingtype.type_id
                      ORDER BY train.naam_training
                      ';
        return $resultaat_all_categorie=mysql_query($all_categorie);
    }
    
    public function select_trainingen($start=2, $end=2) {
        $all_categorie = 'SELECT DISTINCT train.id AS id, train.naam_training AS Training, train.beschrijving AS Beschrijving, cat.naam_categorie AS Categorie, typetrain.type_naam AS Type, typetrain.type_plaatje AS Plaatjes
                      FROM training train
                      JOIN training_categorie train_cat ON train_cat.training_id = train.id
                      JOIN categorie cat ON cat.id = train_cat.categorie_id
                      JOIN training_type trainingtype ON trainingtype.training_id = train.id
                      JOIN type_training typetrain ON typetrain.id = trainingtype.type_id
                      ORDER BY train.naam_training ASC LIMIT '. $start. ','. $end .'
                      ';
        return $resultaat_all_categorie=mysql_query($all_categorie);
    }


class: pagination.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    function gen_list($nummer_training) {
        $title = "";
        $total_l = ceil($nummer_training/ 2);

        for($i=0; $i < $total_l; $i++) {
            $n = $i * 2;
            $title .= (empty($title) ? " " : "|");
            $title .='<a href="overzicht-training_soort_all.php?display='. $n. '">'. ($i+1). '</a>';
        }

        return $title;
    }

?>


overzicht-training_soort_all.php(pagina die de trainingen laat zien)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="stylesheet.css" />
<title>Overzicht alle trainingen - soort trainingen</title>
</head>
<body>
<?php
include_once "structuur/header.html";
?>

<div id="container">
<div id="left-container">
<?php
include_once "structuur/sidebar_soort_training_menu.html";
?>
    
</div>
<div id="right-container2">
 
    <h6>Alle trainingen op alfabetische volgorde</h6>
      <?php
      require_once 'class/all_training_categorie.php';
      require_once 'class/pagination.php';
      
      $display = (!empty($_GET['display']) ? abs($_GET['display']) : 0);
      $soort_training = new trainingen();
      $nummer_training = $soort_training->select_count_trainingen();
      $alle_training_soort = $soort_training->select_trainingen($display,2);
      $count_training = 0;
      
      while($a=mysql_fetch_assoc($alle_training_soort))
      {
      
         $count_training++;
         echo "<div id='container'><td>";  
         echo "<div id='left3'>";        
         echo '<td><b>' . $a['Training'] . '</b></td><br>';
         $plaatje =  $a['Plaatjes'];
         echo '<td>' . nl2br(htmlspecialchars($a['Beschrijving'])) . '</td><br>';  
         echo '<br>';
         echo '<td>Categorie: <b>' . $a['Categorie'] . '</b></td><br>';
         echo "</div>";  
         echo "<div id='right5'>";
         echo "<div class='overzicht-plaatje'> <img src='$plaatje'/> </div> <br>" ;
    
        {

        echo "</div>";  
        echo"</tr></div>";  
        }  
      }

      if ($nummer_training <= 2) {
        echo "";
        }
else {
        echo gen_list($nummer_training);
        }

      ?>

</div>
</div>  
</div>
</body>
<?php
include_once "structuur/footer.html";
?>

</html>
Gewijzigd op 08/06/2014 13:23:06 door George mendel
 
PHP hulp

PHP hulp

15/11/2024 03:05:53
 
Erwin H

Erwin H

08/06/2014 14:22:11
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
public function select_count_trainingen() {
  $all_categorie = '...'; //query, even weggehaald
  return $resultaat_all_categorie=mysql_query($all_categorie);
}


$nummer_training = $soort_training->select_count_trainingen();
?>

Dus, je voert een query uit, geeft het result terug (waarom dat overigens in een variabele stoppen die toch niet bestaat?) en dat result gebruik je alsof het een integer is. Dat is het niet, het is een resource! Je moet eerst nog een rij fetchen voor je die kan gebruiken!
 
George mendel

george mendel

08/06/2014 15:14:16
Quote Anchor link
waar moet ik die fetch plaatsen? in de functie select_count_trainingen?

Erwin H op 08/06/2014 14:22:11:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
public function select_count_trainingen() {
  $all_categorie = '...'; //query, even weggehaald
  return $resultaat_all_categorie=mysql_query($all_categorie);
}


$nummer_training = $soort_training->select_count_trainingen();
?>

Dus, je voert een query uit, geeft het result terug (waarom dat overigens in een variabele stoppen die toch niet bestaat?) en dat result gebruik je alsof het een integer is. Dat is het niet, het is een resource! Je moet eerst nog een rij fetchen voor je die kan gebruiken!
 
Erwin H

Erwin H

08/06/2014 16:13:53
Quote Anchor link
Bij voorkeur voordat je de functie gen_list aanroept. Over het algemeen wil je niet een functie daarvan afhankelijk laten zijn. Die functie moet gewoon een getal krijgen en zijn ding doen en moet zich niet bezighouden met waar dat getal vandaan komt.
 



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.