Op de pagina InsGeboortes.php kunnen dieren worden ingelezen. Per pagina worden een x aantal regels getoond. Men kan kiezen voor 10, 20, 30, 40, 50, 60, 70, 80, 90 of 100 regels per pagina. Standaard worden 30 regels getoond
Mijn probleem speelt vanaf de tweede pagina. Of dit er steeds 10 zijn of bijv. 30 maakt niet uit. Ik ga hier uit van 30 regels per pagina.
Elke regel heeft 2 tekst velden en 6 keuzelijsten.
De keuze lijsten zijn zo opgebouwd.
<?php
// Declaratie MOEDERDIER
$qryMoeder = ("(".$vw_kzlOoien.") ");
$moederdier = mysqli_query($db,$qryMoeder) or die (mysqli_error($db));
$index = 0;
while ($mdr = mysqli_fetch_assoc($moederdier))
{
$mdrId[$index] = $mdr['schaapId'];
$wnrOoi[$index] = $mdr['werknr'];
$mdrRaak[$index] = $mdr['schaapId'];
$index++;
}
unset($index);
// EINDE Declaratie MOEDERDIER
// Declaratie HOKNUMMER // lower(if(isnull(scan),'6karakters',scan)) zorgt ervoor dat $raak nooit leeg is. Anders worden legen velden gevonden in legen velden binnen impReader.
$qryHoknummer = mysqli_query($db,"SELECT hokId, scan, hoknr FROM tblHok WHERE lidId = '".mysqli_real_escape_string($db,$lidId)."' and actief = 1 ORDER BY hoknr ") or die (mysqli_error($db));
$index = 0;
while ($hnr = mysqli_fetch_assoc($qryHoknummer))
{
$hoknId[$index] = $hnr['hokId'];
$hoknum[$index] = $hnr['hoknr'];
$hokRaak[$index] = $hnr['scan']; if($reader == 'Agrident') { $hokRaak[$index] = $hnr['hokId']; }
$index++;
}
unset($index);
// EINDE Declaratie HOKNUMMER
?>
<td style = "font-size : 11px;">
<!-- KZLMOEDER -->
<?php echo $ooi_db; /* Als test om te kijken of de waarde uit de database steeds bestaat */ ?>
<select style="width:68;" <?php echo " name=\"kzlOoi_$Id\" "; ?> value = "" style = "font-size:12px;">
<option></option>
<?php $count = count($wnrOoi);
for ($i = 0; $i < $count; $i++){
$opties = array($mdrId[$i]=>$wnrOoi[$i]);
foreach($opties as $key => $waarde)
{
if ((!isset($_POST['knpVervers_']) && $ooi_db == $mdrRaak[$i]) || (isset($_POST["kzlOoi_$Id"]) && $_POST["kzlOoi_$Id"] == $key)){
echo '<option value="' . $key . '" selected>' . $waarde . '</option>';
} else {
echo '<option value="' . $key . '" >' . $waarde . '</option>';
}
}
}
?> </select>
<!-- EINDE KZLMOEDER --> </td>
<td style = "font-size : 9px;">
<!-- KZLHOKNR -->
<select style="width:68;" <?php echo " name=\"kzlHok_$Id\" "; ?> value = "" style = "font-size:12px;">
<option></option>
<?php $count = count($hoknum);
for ($i = 0; $i < $count; $i++){
$opties = array($hoknId[$i]=>$hoknum[$i]);
foreach($opties as $key => $waarde)
{
if ((!isset($_POST['knpVervers_']) && $hok_rd == $hokRaak[$i]) || (isset($_POST["kzlHok_$Id"]) && $_POST["kzlHok_$Id"] == $key)){
echo '<option value="' . $key . '" selected>' . $waarde . '</option>';
} else {
echo '<option value="' . $key . '" >' . $waarde . '</option>';
}
}
}
?> </select>
</td> <!-- EINDE KZLHOKNR -->
Zijn de eerste 30 regels ingelezen dan verdwijnen deze en worden de volgende 30 getoond. Alle keuzelijsten zijn dan netjes gevuld. Lees ik deze weer in of ververs ik de pagina met de knop knpVervers_ dan blijkt slechts alleen keuzelijst moeder (kzlOoi_) leeg te zijn. Bij inlezen door een gebruiker is het hier fout gegaan !!
Vanaf pagina 2 wordt de pagina dus wel goed opgebouwd maar alleen keuzelijst klzOoi_ lijkt niet goed te worden gezet of zo.
Als ik pagina InsGeboortes.php verlaat en vervolgens de pagina InsGeboortes.php weer opvraag gaat het steeds alleen goed op de eerste pagina. Dus als er reeds 30 regels zijn ingelezen is de 2e pagina nu de 1e pagina als InsGeboortes.php wordt verlaten en opnieuw opgevraagd.
Vreemd dat het allen bij kzlOoi_ fout gaat.
Heeft iemand een idee waar ik dit in moet zoeken?
Het script dat de regels verdeeld over een x aantal pagina's ziet er zo uit.
<?php
/******************** MEERDERE PAGINA'S ********************/
/********
* Define Some vars
********/
define("MIN_PER_PAGE", 10);
define("MAX_PER_PAGE", 100);
define("DEF_PER_PAGE", $RPP); //Standaard aantal per pagina in eerste instantie bepaald in de inlogpagina
define("OFF_PER_PAGE", 30); //
define("THIS_PAGE", $_SERVER['PHP_SELF']); // Geeft de pagina naam terug bijv. /Schapendb/InsGeboortes.php bron : https://www.w3schools.com/php/php_form_validation.asp
/********
* CLASS PAGE NUMBERS
********/
class Page_numbers
{
var $table;
var $condition;
var $link_id;
var $total_records;
var $rpp; // records per pagina
var $total_pages; // totaal aantal pagina's
var $page; // Getoonde pagina nummer
var $offset; // record waar vanaf getoond moet worden vb : 60 betekend tonen x records (per pagina) vanaf 61 (paginanr - 1 * records per pagina)
var $query_string;
/********
* Constructor, setting some vars
********/
function Page_numbers($table, $condition="", $link_id=NULL, $paginasessie)
{
$this->table = $table;
$this->condition = $condition;
$this->link_id = $link_id;
$this->total_records = $this->count_records();
$this->rpp = isset($_GET['rpp']) && is_numeric($_GET['rpp']) && $_GET['rpp'] >= MIN_PER_PAGE && $_GET['rpp'] <= MAX_PER_PAGE ? $_GET['rpp'] : DEF_PER_PAGE;
$this->total_pages = ceil($this->total_records / $this->rpp);
$this->page = isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page'] > 0 && $_GET['page'] <= $this->total_pages ? $_GET['page'] : $paginasessie;
$this->offset = ($this->page - 1) * $this->rpp;
//$this->query_string = $this->get_query_string();
// $this->pagina_string = $this->get_pagina_string();
}
/********
* Records tellen voor het uitrekenen van de pagenumbers
********/
function count_records()
{
$res = @mysqli_query($this->link_id,"SELECT count(*) tot FROM ".$this->table." ".$this->condition);
while($row = mysqli_fetch_assoc($res))
{
$k = $row['tot'];
}
return $k;
}
/********
* Data uit de database trekken van het pagenummer waar we op zitten
********/
function fetch_data($fields="*", $order="")
{
$res = @mysqli_query($this->link_id,"SELECT ".$fields." FROM ".$this->table." ".$this->condition." ".$order." LIMIT ".$this->offset.",".$this->rpp);
while($row = mysqli_fetch_assoc($res))
{
$data[] = $row;
}
if(isset($data)) { return $data; } // als alle records zijn ingelezen (inlezen reader) bestaat $data niet meer !!
}
/********
* query string opmaken
********/
function get_query_string($query_string="")
{
foreach($_GET as $key => $value)
{
if($key != 'page' && $key != 'rpp')
{
$query_string .= '&'.$key.'='.$value;
}
}
return $query_string;
}
/********
* paginanummer string opmaken
********/
function get_pagina_string($pagina_string="")
{
foreach($_GET as $key => $value)
{
if($key == 'page')
{
$pagina_string .= '&'.$key.'='.$value;
}
}
return $pagina_string;
}
/********
* Message Per Page opmaken en terug geven. Keuzelijst aantal records per pagina
********/
function show_rpp()
{
$str = '<script type="text/javascript" language="javascript1.5">
function openUrl()
{
var control = document.getElementById(\'rpp\');
window.location = "'.THIS_PAGE.'?page=1&rpp="+control.options[control.selectedIndex].value+"'.str_replace('&', '&', $this->query_string).'";
}
</script>
<select id="rpp" onchange="openUrl();">';
for($i=MIN_PER_PAGE; $i<=MAX_PER_PAGE; $i+=10)
{
$str .= '<option value="'.$i.'"'.($i == $this->rpp ? ' selected="selected"': '').'>'.$i.'</option>'."\r\n";
}
return $str.'</select>';
}
/********
* Previous & Next links
********/
function prev_next()
{
$str = ($this->page > 1) ? '<a href="paginas.php?page='.($this->page-1).'&rpp='.$this->rpp.$this->query_string.'" title="Vorige Pagina">««</a>' : '<span style="color:#aaa">««</span>';
$str .= ' ';
$str .= ($this->page < $this->total_pages) ? '<a href="paginas.php?page='.($this->page+1).'&rpp='.$this->rpp.$this->query_string.'" title="Volgende Pagina">»»</a>' : '<span style="color:#aaa">»»</span>';
return $str;
}
/********
* Pagenumbers opmaken en uitspugen
********/
function show_page_numbers($num_page_links=7)
{
if($this->total_pages > 1)
{
$num_page_links = $num_page_links % 2 ? $num_page_links : $num_page_links + 1;
$pagenumbers = 'Pagina: <strong>'.$this->page.'</strong> van '.$this->total_pages.'<br />';
if($this->total_pages > $num_page_links)
{
$cutoff = floor($num_page_links / 2);
$start = $this->page - $cutoff;
$end = $this->page + $cutoff;
/********
* No Pagenumbers Less then 1 && Greater then total_pages
********/
while($start < 1) { $start++; $end++; }
while($end > $this->total_pages) { $start--; $end--; }
/********
* Pagina nummers opmaken en uitspugen
********/
if($this->page > $cutoff + 1) { $pagenumbers .= '<a href="'.THIS_PAGE.'?page=1&rpp='.$this->rpp.$this->query_string.'" title="First Page (1)">...</a> '; }
for($i=$start; $i<=$end; $i++)
{
$pagenumbers .= ($i == $this->page) ? '<strong style="text-decoration:underline;">'.$i.'</strong> '."\r\n" : '<a href="'.THIS_PAGE.'?page='.$i.'&rpp='.$this->rpp.$this->query_string.'" title="Go to Page '.$i.'">'.$i.'</a> '."\r\n";
}
if($this->page < $this->total_pages - $cutoff) { $pagenumbers .= '<a href="'.THIS_PAGE.'?page='.$this->total_pages.'&rpp='.$this->rpp.$this->query_string.'" title="Last Page ('.$this->total_pages.')">...</a> '; }
}
else
{
for($i=1; $i<=$this->total_pages; $i++)
{
$pagenumbers .= ($i == $this->page) ? '<strong style="text-decoration:underline;">'.$i.'</strong> '."\r\n" : '<a href="'.THIS_PAGE.'?page='.$i.'&rpp='.$this->rpp.$this->query_string.'" title="Go to Page '.$i.'">'.$i.'</a> '."\r\n";
}
}
return rtrim($pagenumbers);
}
else
{
return NULL;
}
}
/********
* Regelnumbers opmaken en uitspugen
********/
} // Einde class Page_numbers
$page_nums = new Page_numbers($tabel, $WHERE, $db, $pag);
$_SESSION["RPP"] = $page_nums->rpp; $RPP = $_SESSION["RPP"]; // zorgt dat regels per pagina wordt onthouden bij het opnieuw laden van de pagina
$page_numbers = $page_nums->show_page_numbers(7); $_SESSION["PA"] = $page_nums->page; $pag = $_SESSION["PA"]; // zorgt dat paginanummer wordt onthouden bij het opnieuw laden van de pagina
$kzlRpp = $page_nums->show_rpp();
/******************** EINDE MEERDERE PAGINA'S EINDE ********************/
?>