Goedemorgen allen!

We hebben een site (soort toprank site) waarbij men sites kunnen aanmelden, doormiddel van clicks komen ze hoger op de pagina...

Alles werkt ook tot zover alleen willen wij de tabel die we hebben opsplitsen in 3 per pagina en wanneer we naar pagina 2 gaan klopt de telling niet meer.

Op pagina 1 zie je netjes nummer 1, 2, 3 enzovoor enzovoort.. Tot aan 30 toe maar wanneer we naar pagina 2 gaan begint de telling opnieuw, hier zal juist nummer 31 dan moeten komen.

Verder willen wij dus ook in plaats van 1 tabel die we nu hebben 3 tabellen per pagina laten zien met 10 records per tabel zodat we daar tussenin een advertentie ruimte kunnen maken.

Wie is hier eventueel heel handig in en kan dit snel vinden doormiddel van onze code?

Onze code bovenaan de pagina:


$per_pagina_record = 30;

if (isset($_GET["pagina"])) {    

$pagina  = $_GET["pagina"];    
        
}	else {    

$pagina=1;    

}


Dan onze tabel:


<table class="tabel">
  <tr>
    <td class="tabelkop" style="width:5%;text-align: center;">Nummer</td>
    <td class="tabelkop" style="width:85%;text-align: center;">Naam en content</td>
  </tr>
  <?php
	$sql = "SELECT * from websites WHERE `status` = '2' ORDER BY aantalin DESC LIMIT $start_from, $per_pagina_record";
	$return = $conn->query($sql );
						
	while ($row = $return->fetch_object()){
		
	if($i%2 == 0)
    {
        $color = "row1"; // Kleur 1
    }
    else
    {
        $color = "row2"; // Kleur 2
    }
    ++$i;
		
	echo '<tr class="'.$color.'"><td class="rank">'.$i.'</td><td class="col2">  <div style="text-align: center;"> <a href="index.php?uit='.$row->link_id.'" target="_blank"><img src="'.$row->banner.'" class="b468" alt="'.$row->site_naam.'"></a></div>  <a href="index.php?uit='.$row->link_id.'" target="_blank"><strong>'.$row->site_naam.'</strong></a><br>
	'.$row->beschrijving.'  </td>
	</tr>'; } ?>
</table>


En vervolgens onze pagination:


<div class="pagination">
<?php  
	$query = "SELECT COUNT(*) FROM websites WHERE `status` = '2'";
	$rs_result = mysqli_query($conn, $query);
	$row = mysqli_fetch_row($rs_result);
	$total_records = $row[0];
          
	echo "</br>";

	$total_paginas = ceil($total_records / $per_pagina_record);
	$pagLink = "";
      
	if($pagina>=2){
		echo "<a href='index.php?pagina=".($pagina-1)."'><b> Vorige pagina </b></a>";
	}
                   
	for ($i=1; $i<=$total_paginas; $i++) {

	if ($i == $pagina) {
	
		$pagLink .= "<a class = 'active' href='index.php?pagina=".$i."'><b>".$i."</b> </a>";
	
	}	else  {
		
		$pagLink .= "<a href='index.php?pagina=".$i."'><b>".$i."</b> </a>";
		
		}
	};
	
	echo $pagLink;
  
	if($pagina<$total_paginas){
		
		echo "<a href='index.php?pagina=".($pagina+1)."'><b> Volgende pagina </b></a>";
	
	}
?>
</div>


Dit werkt tot zo ver echt goed, althans voor de homepagina, wanneer we naar de 2e pagina gaan begint de telling opnieuw en we zouden graag de tabellen willen verdelen.

Alvast bedankt voor het lezen en helpen!
Zie mijn laatste post hierboven. Al geprobeerd?
Ozzie PHP op 19/08/2022 12:05:57

Zie mijn laatste post hierboven. Al geprobeerd?


Hier had ik ook wat mee geprobeerd maar dan kreeg ik vanaf 0, 2, 4 te zien...

ik ben inmiddels een stap verder:


$per_pagina_record = 30;

if (isset($_GET["pagina"])) {

$pagina  = $_GET["pagina"];
        
}	else {

$pagina=1;

}
    
$start_from = ($pagina-1) * $per_pagina_record;

$i = $start_from;


Hiermee begint hij op pagina 1 op 1 te tellen en op pagina 2 krijg ik nu 30 te zien en op pagina 3 60 enzovoort, dit werkt nu ideaal lijkt me dan zo.

Nu zou ik graag nog willen dat ik dus 3 tabellen per pagina kan krijgen, hoe is dit te realiseren?

Dus als het ware zo:

1-10

ruimte over voor iets

11 - 20

ruimte

21 - 30
Met de modulo-operator.
En is het nog gelukt?
Helaas tot nu nog niet nee...
Waar loop je op vast?

<?php
$get        = (object) $_GET;
$pag_size   = 30;
$group_size = 10;

if ( ! empty($get->pag)) {
    $number_first = ($get->pag - 1) * $pag_size + 1;
    $number_last  = $number_first + $pag_size;
}
?>

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
    <style>
    	body {font: 14px Verdana;}
    </style>
</head>

<body>
<?php
if ( ! empty($number_first)) {
    for ($i = $number_first; $i < $number_last; $i++) {
        printf('<p>This is item nr %d</p>', $i);
        if ($i % $group_size === 0 && ($pag_size * $get->pag) !== $i) {
            printf('<hr>');
        }
    }
}
?>
</body>

</html>
Echt het verdelen van de tabellen krijg ik niet voor elkaar...

Alles werkt, pagination, aantallen per pagina maar ik wil echt zeg maar nu op elke pagina 3 tabellen van 10 per stuk en daar kom ik niet uit jammer genoeg.
Zie regel 29 van mijn voorbeeld :-)
Wat ik begrijp gaat dat om aantal items en dan welke pagina en dan naar de volgende pagina toch?

Die werking is er al volledig..

Wat ik echt wil is dat de 30 items per pagina per tabel nu zijn zal veranderen naar 10 per tabel zeg maar

Reageren