Waarde in keuzelijst wordt niet goed gezet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas van de Ven

Bas van de Ven

29/01/2021 09:18:36
Quote Anchor link
Goedendag,

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.
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
63
64
65
66
67
68
69
70
71
72
<?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.

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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<?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 .= '&amp;'.$key.'='.$value;
            }
        }

        return $query_string;
    }


     /********
    *    paginanummer string opmaken
    ********/

    function get_pagina_string($pagina_string="")
    {

        foreach($_GET as $key => $value)
        {

            if($key == 'page')
            {

                $pagina_string .= '&amp;'.$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('&amp;', '&', $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).'&amp;rpp='.$this->rpp.$this->query_string.'" title="Vorige Pagina">&laquo;&laquo;</a>' : '<span style="color:#aaa">&laquo;&laquo;</span>';
        $str .= '&nbsp;&nbsp;&nbsp;';
        $str .= ($this->page < $this->total_pages) ? '<a href="paginas.php?page='.($this->page+1).'&amp;rpp='.$this->rpp.$this->query_string.'" title="Volgende Pagina">&raquo;&raquo;</a>' : '<span style="color:#aaa">&raquo;&raquo;</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&amp;rpp='.$this->rpp.$this->query_string.'" title="First Page (1)">...</a>&nbsp; '; }
                
                for($i=$start; $i<=$end; $i++)
                {

                    $pagenumbers .= ($i == $this->page) ? '<strong style="text-decoration:underline;">'.$i.'</strong>&nbsp; '."\r\n" : '<a href="'.THIS_PAGE.'?page='.$i.'&amp;rpp='.$this->rpp.$this->query_string.'" title="Go to Page '.$i.'">'.$i.'</a>&nbsp; '."\r\n";
                }

                
                if($this->page < $this->total_pages - $cutoff) { $pagenumbers .= '<a href="'.THIS_PAGE.'?page='.$this->total_pages.'&amp;rpp='.$this->rpp.$this->query_string.'" title="Last Page ('.$this->total_pages.')">...</a>&nbsp; '; }
                
            }

            else
            {
                for($i=1; $i<=$this->total_pages; $i++)
                {

                    $pagenumbers .= ($i == $this->page) ? '<strong style="text-decoration:underline;">'.$i.'</strong>&nbsp; '."\r\n" : '<a href="'.THIS_PAGE.'?page='.$i.'&amp;rpp='.$this->rpp.$this->query_string.'" title="Go to Page '.$i.'">'.$i.'</a>&nbsp; '."\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    ********************/

?>
Gewijzigd op 29/01/2021 10:04:11 door Bas van de Ven
 
PHP hulp

PHP hulp

11/04/2021 03:53:13
 
Bas van de Ven

Bas van de Ven

31/01/2021 10:50:18
Quote Anchor link
Het euvel heb ik gevonden.
Het opslaan van gekozen regels op de pagina heb ik in een apart script staan. Hier had ik recentelijk een variabele $mdrId aangemaakt. Op de pagina inlezen insGeboortes.php bestaat een array variabele $mdrId[$i] t.b.v. keuzelijst moeders (kzlOoi_)
Na opslaan overschreef $mdrId de variabele $mdrId[$]. Door $mdrId te hernoemen is het probleem opgelost.
 
- Ariën -
Beheerder

- Ariën -

31/01/2021 11:00:46
Quote Anchor link
Ben je niet bang dat je snel de fout in gaat met jouw benamingen?

kzlOoi_ en $mdrId zegt erg weinig.
Uit ervaring weet ik dat een typfout voor een tunnelvisie kan zorgen ;-)

Noem het beestje liever bij de naam. Ook toekomstige programmeurs houden daarvan.

Verder kan je variabele namen in een POST ook uitbreiden naar een multidimensionale array: $_POST["kzlOoi"][$ID]

Zo heb je tevens een mooier overzicht, en kan je makkelijker je ID's doorlopen.
Gewijzigd op 31/01/2021 11:05:04 door - Ariën -
 



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.