javascript binnen while loop
Op enig moment krijgt de ooi een echo om te zien of ze drachtig is. Dit moment wordt gescand met een reader. De reader wordt uitgelezen in mijn programma en de drachtdatum en oornummer van het ooi wordt getoond per regel (record) op de internetpagina. Deze drachtlijst wordt gecontroleerd en daarna ingelezen in mijn programma. Tijdens de controle kan per regel de ooi nog worden gewijzigd m.b.v. een keuzelijst. Als een andere ooi is gekozen wil ik m.b.v. javascript automatisch de ram tonen die bij die nieuw gekozen ooi hoort.
Ik ben aan het testen met 3 (dracht)records. Als ik de ooi wijzig in het eerste record (uit de while loop) werkt de javascript prima. Bij het 2e en 3e record werkt de javascript niet. Bij die records/regels wijzigt er niets.
Hieronder staat mijn code. Wat doe ik fout?
Code (php)
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
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
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<title>Registratie</title>
</head>
<body>
<?php
Include "connect_db.php";
// Array tbv javascript om vader automatisch te tonen
$zoek_laatste_dekkingen = mysqli_query($db,"
SELECT v.mdrId, right(vdr.levensnummer,5) lev
FROM tblVolwas v
join (
SELECT v.mdrId, max(v.volwId) volwId
FROM tblVolwas v
left join tblHistorie hv on (hv.hisId = v.hisId)
left join tblDracht d on (v.volwId = d.volwId)
left join tblHistorie hd on (hd.hisId = d.hisId)
left join tblSchaap k on (k.volwId = v.volwId)
left join (
SELECT s.schaapId
FROM tblSchaap s
join tblStal st on (s.schaapId = st.schaapId)
join tblHistorie h on (st.stalId = h.stalId)
WHERE h.actId = 3
) ha on (k.schaapId = ha.schaapId)
WHERE (isnull(hv.hisId) or hv.skip = 0) and (isnull(hd.hisId) or hd.skip = 0) and isnull(ha.schaapId)
GROUP BY v.mdrId
) lv on (v.volwId = lv.volwId)
join tblSchaap vdr on (vdr.schaapId = v.vdrId)
") or die (mysqli_error($db));
while ( $zld = mysqli_fetch_assoc($zoek_laatste_dekkingen)) { $array_vader_uit_koppel[$zld['mdrId']] = $zld['lev']; }
// Einde Array tbv javascript om vader automatisch te tonen
?>
<script>
function toon_dracht() {
var moeder = document.getElementById("moeder"); var mr = moeder.value;
if(mr.length > 0) toon_vader_uit_koppel(mr);
}
var jArray_vdr = <?php echo json_encode($array_vader_uit_koppel); ?>;
function toon_vader_uit_koppel(m) {
if(jArray_vdr[m] != null)
{
document.getElementById('vader').style.display = "none";
document.getElementById('vader').value = null; // veld leegmaken indien gevuld
document.getElementById('result_vader').innerHTML = jArray_vdr[m];
}
else
{
document.getElementById('vader').style.display = "inline-block";
document.getElementById('result_vader').innerHTML = "";
}
}
</script>
<form action="phpHulp.php" method = "post">
<table border = 0>
<tr valign = bottom style = "font-size : 12px;">
<th>Moeder<hr></th>
<th>Vader<hr></th>
<th><hr></th>
</tr>
<?php
// Declaratie MOEDERDIEREN
$zoek_moederdieren = mysqli_query($db,"
SELECT st.schaapId, s.levensnummer, right(s.levensnummer,5) werknr
FROM tblSchaap s
join tblStal st on (st.schaapId = s.schaapId)
join tblVolwas v on (s.schaapId = v.mdrId)
WHERE st.lidId = 13 and v.vdrId is not null
ORDER BY right(s.levensnummer,5)
") or die (mysqli_error($db));
$index = 0;
while ($mdr = mysqli_fetch_assoc($zoek_moederdieren))
{
$mdrkey[$index] = $mdr['schaapId'];
$wnrOoi[$index] = $mdr['werknr'];
$index++;
}
unset($index);
// EINDE Declaratie MOEDERDIEREN
$velden = mysqli_query($db,"
SELECT rd.Id
FROM impAgrident rd
WHERE rd.lidId = 13 and rd.actId = 19 and isnull(verwerkt)
ORDER BY str_to_date(rd.datum,'%d/%m/%Y'), rd.Id
") or die (mysqli_error($db));
while ($vldn = mysqli_fetch_assoc($velden)) {
?>
<tr style = "font-size:14px;">
<td style = "font-size : 11px;">
<select id="moeder" onchange = "toon_dracht()" style= "width:65; font-size:12px;" name = <?php echo "kzlOoi_$Id"; ?> >
<option></option>
<?php $count = count($wnrOoi);
for ($i = 0; $i < $count; $i++){
$opties = array($mdrkey[$i]=>$wnrOoi[$i]);
foreach($opties as $key => $waarde)
{
if ((!isset($_POST['knpVervers_']) && $mdrId_rd == $key) || (isset($_POST["kzlOoi_$Id"]) && $_POST["kzlOoi_$Id"] == $key)){
echo '<option value="' . $key . '" selected>' . $waarde . '</option>';
} else {
echo '<option value="' . $key . '" >' . $waarde . '</option>';
}
}
}
?> </select>
</td>
<td>
<select style= "width:125; font-size:12px;" id="vader" name = <?php echo "kzlRam_$Id"; ?> >
<option></option>
<?php $count = count($lvnrRam);
for ($i = 0; $i < $count; $i++){
$opties= array($vdrkey[$i]=>$lvnrRam[$i]);
foreach ($opties as $key => $waarde)
{
if ((!isset($_POST['knpVervers_']) && $ram_db == $vdrRaak[$i]) || (isset($_POST["kzlRam_$Id"]) && $_POST["kzlRam_$Id"] == $key)){
echo '<option value="' . $key . '" selected>' . $waarde . '</option>';
} else {
echo '<option value="' . $key . '" >' . $waarde . '</option>';
}
}
} ?>
</select><p id="result_vader"></p>
</td>
</tr>
<?php } ?>
</table>
</form>
</body>
</html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<title>Registratie</title>
</head>
<body>
<?php
Include "connect_db.php";
// Array tbv javascript om vader automatisch te tonen
$zoek_laatste_dekkingen = mysqli_query($db,"
SELECT v.mdrId, right(vdr.levensnummer,5) lev
FROM tblVolwas v
join (
SELECT v.mdrId, max(v.volwId) volwId
FROM tblVolwas v
left join tblHistorie hv on (hv.hisId = v.hisId)
left join tblDracht d on (v.volwId = d.volwId)
left join tblHistorie hd on (hd.hisId = d.hisId)
left join tblSchaap k on (k.volwId = v.volwId)
left join (
SELECT s.schaapId
FROM tblSchaap s
join tblStal st on (s.schaapId = st.schaapId)
join tblHistorie h on (st.stalId = h.stalId)
WHERE h.actId = 3
) ha on (k.schaapId = ha.schaapId)
WHERE (isnull(hv.hisId) or hv.skip = 0) and (isnull(hd.hisId) or hd.skip = 0) and isnull(ha.schaapId)
GROUP BY v.mdrId
) lv on (v.volwId = lv.volwId)
join tblSchaap vdr on (vdr.schaapId = v.vdrId)
") or die (mysqli_error($db));
while ( $zld = mysqli_fetch_assoc($zoek_laatste_dekkingen)) { $array_vader_uit_koppel[$zld['mdrId']] = $zld['lev']; }
// Einde Array tbv javascript om vader automatisch te tonen
?>
<script>
function toon_dracht() {
var moeder = document.getElementById("moeder"); var mr = moeder.value;
if(mr.length > 0) toon_vader_uit_koppel(mr);
}
var jArray_vdr = <?php echo json_encode($array_vader_uit_koppel); ?>;
function toon_vader_uit_koppel(m) {
if(jArray_vdr[m] != null)
{
document.getElementById('vader').style.display = "none";
document.getElementById('vader').value = null; // veld leegmaken indien gevuld
document.getElementById('result_vader').innerHTML = jArray_vdr[m];
}
else
{
document.getElementById('vader').style.display = "inline-block";
document.getElementById('result_vader').innerHTML = "";
}
}
</script>
<form action="phpHulp.php" method = "post">
<table border = 0>
<tr valign = bottom style = "font-size : 12px;">
<th>Moeder<hr></th>
<th>Vader<hr></th>
<th><hr></th>
</tr>
<?php
// Declaratie MOEDERDIEREN
$zoek_moederdieren = mysqli_query($db,"
SELECT st.schaapId, s.levensnummer, right(s.levensnummer,5) werknr
FROM tblSchaap s
join tblStal st on (st.schaapId = s.schaapId)
join tblVolwas v on (s.schaapId = v.mdrId)
WHERE st.lidId = 13 and v.vdrId is not null
ORDER BY right(s.levensnummer,5)
") or die (mysqli_error($db));
$index = 0;
while ($mdr = mysqli_fetch_assoc($zoek_moederdieren))
{
$mdrkey[$index] = $mdr['schaapId'];
$wnrOoi[$index] = $mdr['werknr'];
$index++;
}
unset($index);
// EINDE Declaratie MOEDERDIEREN
$velden = mysqli_query($db,"
SELECT rd.Id
FROM impAgrident rd
WHERE rd.lidId = 13 and rd.actId = 19 and isnull(verwerkt)
ORDER BY str_to_date(rd.datum,'%d/%m/%Y'), rd.Id
") or die (mysqli_error($db));
while ($vldn = mysqli_fetch_assoc($velden)) {
?>
<tr style = "font-size:14px;">
<td style = "font-size : 11px;">
<select id="moeder" onchange = "toon_dracht()" style= "width:65; font-size:12px;" name = <?php echo "kzlOoi_$Id"; ?> >
<option></option>
<?php $count = count($wnrOoi);
for ($i = 0; $i < $count; $i++){
$opties = array($mdrkey[$i]=>$wnrOoi[$i]);
foreach($opties as $key => $waarde)
{
if ((!isset($_POST['knpVervers_']) && $mdrId_rd == $key) || (isset($_POST["kzlOoi_$Id"]) && $_POST["kzlOoi_$Id"] == $key)){
echo '<option value="' . $key . '" selected>' . $waarde . '</option>';
} else {
echo '<option value="' . $key . '" >' . $waarde . '</option>';
}
}
}
?> </select>
</td>
<td>
<select style= "width:125; font-size:12px;" id="vader" name = <?php echo "kzlRam_$Id"; ?> >
<option></option>
<?php $count = count($lvnrRam);
for ($i = 0; $i < $count; $i++){
$opties= array($vdrkey[$i]=>$lvnrRam[$i]);
foreach ($opties as $key => $waarde)
{
if ((!isset($_POST['knpVervers_']) && $ram_db == $vdrRaak[$i]) || (isset($_POST["kzlRam_$Id"]) && $_POST["kzlRam_$Id"] == $key)){
echo '<option value="' . $key . '" selected>' . $waarde . '</option>';
} else {
echo '<option value="' . $key . '" >' . $waarde . '</option>';
}
}
} ?>
</select><p id="result_vader"></p>
</td>
</tr>
<?php } ?>
</table>
</form>
</body>
</html>
Gewijzigd op 19/01/2022 21:20:53 door Bas van de Ven
Don't
Repeat
Yourself
Waarom zou je de hele JavaScript constant opnieuw uitvoeren in je while-loop?
Ik denk eerder dat je jouw data (uit jArray_vdr ) die je aan je Javascript voert juist enkel in een while wilt vullen.
Als we het toch over D.R.Y hebben, dan kan je die twee foreaches ook meteen netjes verpakken in een eigen gemaakte PHP-functie. Nog een verbeterpuntje is dat je ook het ID nummer mee kan geven als extra array-element: $_POST['ram'][$id]
Dan kan je meteen mooie filters maken als je wilt.
Gewijzigd op 19/01/2022 22:11:52 door - Ariën -
De while loop ( $zld = mysqli_fetch_assoc($zoek_laatste_dekkingen)) op regel 36 wordt in dezelfde regel gesloten. Dus ik begrijp niet op welke loop je doelt.
Ik wil een lijst met koppels (ooi-ram) samenstellen die wordt gebruikt in de while loop while ($vldn = mysqli_fetch_assoc($velden)).
Op elke regel (als output van de while loop) kan de ooi worden gewijzigd. Zodra een ooi wijzigt wil ik op betreffende regel automatisch bijbehorende ram tonen. Dit o.b.v. de samengestelde lijst met koppels.
Een functie voor de foreaches is een goeie tip.
Ik denk dat als je mijn andere adviezen opvolgt, dat het script wat makkelijker te volgen is.
Code (php)
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
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
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<title>Registratie</title>
</head>
<body>
<?php
Include "connect_db.php";
function kzl_loop($ArrayKey, $ArrayName, $dbKey, $btnRefresh, $fldKey) {
$count = count($ArrayName);
for ($i = 0; $i < $count; $i++){
$opties = array($ArrayKey[$i]=>$ArrayName[$i]);
foreach($opties as $key => $waarde)
{
if ((!isset($btnRefresh) && $dbKey == $key) || (isset($fldKey) && $fldKey == $key)){
echo '<option value="' . $key . '" selected>' . $waarde . '</option>';
} else {
echo '<option value="' . $key . '" >' . $waarde . '</option>';
}
}
}
}
// Array tbv javascript om vader automatisch te tonen
$zoek_laatste_dekkingen = mysqli_query($db,"
SELECT v.mdrId, right(vdr.levensnummer,5) lev
FROM tblVolwas v
join (
SELECT v.mdrId, max(v.volwId) volwId
FROM tblVolwas v
left join tblHistorie hv on (hv.hisId = v.hisId)
left join tblDracht d on (v.volwId = d.volwId)
left join tblHistorie hd on (hd.hisId = d.hisId)
left join tblSchaap k on (k.volwId = v.volwId)
left join (
SELECT s.schaapId
FROM tblSchaap s
join tblStal st on (s.schaapId = st.schaapId)
join tblHistorie h on (st.stalId = h.stalId)
WHERE h.actId = 3
) ha on (k.schaapId = ha.schaapId)
WHERE (isnull(hv.hisId) or hv.skip = 0) and (isnull(hd.hisId) or hd.skip = 0) and isnull(ha.schaapId)
GROUP BY v.mdrId
) lv on (v.volwId = lv.volwId)
join tblSchaap vdr on (vdr.schaapId = v.vdrId)
") or die (mysqli_error($db));
while ( $zld = mysqli_fetch_assoc($zoek_laatste_dekkingen)) {
$array_vader_uit_koppel[$zld['mdrId']] = $zld['lev'];
}
// Einde Array tbv javascript om vader automatisch te tonen
?>
<script>
function toon_dracht() {
var moeder = document.getElementById("moeder"); var mr = moeder.value;
if(mr.length > 0) toon_vader_uit_koppel(mr);
}
var jArray_vdr = <?php echo json_encode($array_vader_uit_koppel); ?>;
function toon_vader_uit_koppel(m) {
//document.getElementById('result_vader').innerHTML = jArray_vdr[m];
if(jArray_vdr[m] != null)
{
document.getElementById('vader').style.display = "none";
document.getElementById('vader').value = null; // veld leegmaken indien gevuld
document.getElementById('result_vader').innerHTML = jArray_vdr[m];
}
else
{
//document.getElementById('vader').style.display = "block";
document.getElementById('vader').style.display = "inline-block";
document.getElementById('result_vader').innerHTML = "";
}
}
</script>
<form action="phpHulp.php" method = "post">
<table border = 0>
<tr valign = bottom style = "font-size : 12px;">
<th>Moeder<hr></th>
<th>Vader<hr></th>
<th><hr></th>
</tr>
<?php
// Declaratie MOEDERDIEREN
$zoek_moederdieren = mysqli_query($db,"
SELECT st.schaapId, s.levensnummer, right(s.levensnummer,5) werknr
FROM tblSchaap s
join tblStal st on (st.schaapId = s.schaapId)
join tblVolwas v on (s.schaapId = v.mdrId)
WHERE st.lidId = 13 and v.vdrId is not null
ORDER BY right(s.levensnummer,5)
") or die (mysqli_error($db));
$index = 0;
while ($mdr = mysqli_fetch_assoc($zoek_moederdieren))
{
$mdrkey[$index] = $mdr['schaapId'];
$wnrOoi[$index] = $mdr['werknr'];
$index++;
}
unset($index);
// EINDE Declaratie MOEDERDIEREN
$velden = mysqli_query($db,"
SELECT rd.Id
FROM impAgrident rd
WHERE rd.lidId = 13 and rd.actId = 19 and isnull(verwerkt)
ORDER BY str_to_date(rd.datum,'%d/%m/%Y'), rd.Id
") or die (mysqli_error($db));
while ($vldn = mysqli_fetch_assoc($velden)) {
$Id = $vldn['Id']; ?>
<tr style = "font-size:14px;">
<td style = "font-size : 11px;">
<select id="moeder" onchange = "toon_dracht()" style= "width:65; font-size:12px;" name = 'kzlOoi' >
<option></option>
<?php
kzl_loop($mdrkey, $wnrOoi, $mdrId_rd, $_POST['knpVervers'], $_POST['kzlOoi'][$Id]); ?>
</select>
</td>
<td>
<select style= "width:125; font-size:12px;" id="vader" name = 'kzlRam' >
<option></option>
<?php
kzl_loop($vdrkey, $lvnrRam, $ram_db, $_POST['knpVervers'], $_POST['kzlRam'][$Id]); ?>
</select><p id="result_vader"></p>
</td>
</tr>
<?php } ?>
</table>
</form>
</body>
</html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<title>Registratie</title>
</head>
<body>
<?php
Include "connect_db.php";
function kzl_loop($ArrayKey, $ArrayName, $dbKey, $btnRefresh, $fldKey) {
$count = count($ArrayName);
for ($i = 0; $i < $count; $i++){
$opties = array($ArrayKey[$i]=>$ArrayName[$i]);
foreach($opties as $key => $waarde)
{
if ((!isset($btnRefresh) && $dbKey == $key) || (isset($fldKey) && $fldKey == $key)){
echo '<option value="' . $key . '" selected>' . $waarde . '</option>';
} else {
echo '<option value="' . $key . '" >' . $waarde . '</option>';
}
}
}
}
// Array tbv javascript om vader automatisch te tonen
$zoek_laatste_dekkingen = mysqli_query($db,"
SELECT v.mdrId, right(vdr.levensnummer,5) lev
FROM tblVolwas v
join (
SELECT v.mdrId, max(v.volwId) volwId
FROM tblVolwas v
left join tblHistorie hv on (hv.hisId = v.hisId)
left join tblDracht d on (v.volwId = d.volwId)
left join tblHistorie hd on (hd.hisId = d.hisId)
left join tblSchaap k on (k.volwId = v.volwId)
left join (
SELECT s.schaapId
FROM tblSchaap s
join tblStal st on (s.schaapId = st.schaapId)
join tblHistorie h on (st.stalId = h.stalId)
WHERE h.actId = 3
) ha on (k.schaapId = ha.schaapId)
WHERE (isnull(hv.hisId) or hv.skip = 0) and (isnull(hd.hisId) or hd.skip = 0) and isnull(ha.schaapId)
GROUP BY v.mdrId
) lv on (v.volwId = lv.volwId)
join tblSchaap vdr on (vdr.schaapId = v.vdrId)
") or die (mysqli_error($db));
while ( $zld = mysqli_fetch_assoc($zoek_laatste_dekkingen)) {
$array_vader_uit_koppel[$zld['mdrId']] = $zld['lev'];
}
// Einde Array tbv javascript om vader automatisch te tonen
?>
<script>
function toon_dracht() {
var moeder = document.getElementById("moeder"); var mr = moeder.value;
if(mr.length > 0) toon_vader_uit_koppel(mr);
}
var jArray_vdr = <?php echo json_encode($array_vader_uit_koppel); ?>;
function toon_vader_uit_koppel(m) {
//document.getElementById('result_vader').innerHTML = jArray_vdr[m];
if(jArray_vdr[m] != null)
{
document.getElementById('vader').style.display = "none";
document.getElementById('vader').value = null; // veld leegmaken indien gevuld
document.getElementById('result_vader').innerHTML = jArray_vdr[m];
}
else
{
//document.getElementById('vader').style.display = "block";
document.getElementById('vader').style.display = "inline-block";
document.getElementById('result_vader').innerHTML = "";
}
}
</script>
<form action="phpHulp.php" method = "post">
<table border = 0>
<tr valign = bottom style = "font-size : 12px;">
<th>Moeder<hr></th>
<th>Vader<hr></th>
<th><hr></th>
</tr>
<?php
// Declaratie MOEDERDIEREN
$zoek_moederdieren = mysqli_query($db,"
SELECT st.schaapId, s.levensnummer, right(s.levensnummer,5) werknr
FROM tblSchaap s
join tblStal st on (st.schaapId = s.schaapId)
join tblVolwas v on (s.schaapId = v.mdrId)
WHERE st.lidId = 13 and v.vdrId is not null
ORDER BY right(s.levensnummer,5)
") or die (mysqli_error($db));
$index = 0;
while ($mdr = mysqli_fetch_assoc($zoek_moederdieren))
{
$mdrkey[$index] = $mdr['schaapId'];
$wnrOoi[$index] = $mdr['werknr'];
$index++;
}
unset($index);
// EINDE Declaratie MOEDERDIEREN
$velden = mysqli_query($db,"
SELECT rd.Id
FROM impAgrident rd
WHERE rd.lidId = 13 and rd.actId = 19 and isnull(verwerkt)
ORDER BY str_to_date(rd.datum,'%d/%m/%Y'), rd.Id
") or die (mysqli_error($db));
while ($vldn = mysqli_fetch_assoc($velden)) {
$Id = $vldn['Id']; ?>
<tr style = "font-size:14px;">
<td style = "font-size : 11px;">
<select id="moeder" onchange = "toon_dracht()" style= "width:65; font-size:12px;" name = 'kzlOoi' >
<option></option>
<?php
kzl_loop($mdrkey, $wnrOoi, $mdrId_rd, $_POST['knpVervers'], $_POST['kzlOoi'][$Id]); ?>
</select>
</td>
<td>
<select style= "width:125; font-size:12px;" id="vader" name = 'kzlRam' >
<option></option>
<?php
kzl_loop($vdrkey, $lvnrRam, $ram_db, $_POST['knpVervers'], $_POST['kzlRam'][$Id]); ?>
</select><p id="result_vader"></p>
</td>
</tr>
<?php } ?>
</table>
</form>
</body>
</html>
Toevoeging op 22/01/2022 12:33:14:
Nu hoop ik nog dat er iemand is die antwoord kan geven op mijn vraag of kan vertellen waar ik een oplossing kan vinden. :)
Deze heb ik nl. nog niet gevonden.
Toevoeging op 22/01/2022 19:41:53:
Ik heb zelf een oplossing gevonden.
Code (php)
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
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
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<title>Registratie</title>
</head>
<body>
<?php
Include "connect_db.php";
function kzl_loop($ArrayKey, $ArrayName, $dbKey, $btnRefresh, $fldKey) {
$count = count($ArrayName);
for ($i = 0; $i < $count; $i++){
$opties = array($ArrayKey[$i]=>$ArrayName[$i]);
foreach($opties as $key => $waarde)
{
if ((!isset($btnRefresh) && $dbKey == $key) || (isset($fldKey) && $fldKey == $key)){
echo '<option value="' . $key . '" selected>' . $waarde . '</option>';
} else {
echo '<option value="' . $key . '" >' . $waarde . '</option>';
}
}
}
}
// Array tbv javascript om vader automatisch te tonen
$zoek_laatste_dekkingen = mysqli_query($db,"
SELECT v.mdrId, right(vdr.levensnummer,5) lev
FROM tblVolwas v
join (
SELECT v.mdrId, max(v.volwId) volwId
FROM tblVolwas v
left join tblHistorie hv on (hv.hisId = v.hisId)
left join tblDracht d on (v.volwId = d.volwId)
left join tblHistorie hd on (hd.hisId = d.hisId)
left join tblSchaap k on (k.volwId = v.volwId)
left join (
SELECT s.schaapId
FROM tblSchaap s
join tblStal st on (s.schaapId = st.schaapId)
join tblHistorie h on (st.stalId = h.stalId)
WHERE h.actId = 3
) ha on (k.schaapId = ha.schaapId)
WHERE (isnull(hv.hisId) or hv.skip = 0) and (isnull(hd.hisId) or hd.skip = 0) and isnull(ha.schaapId)
GROUP BY v.mdrId
) lv on (v.volwId = lv.volwId)
join tblSchaap vdr on (vdr.schaapId = v.vdrId)
") or die (mysqli_error($db));
while ( $zld = mysqli_fetch_assoc($zoek_laatste_dekkingen)) {
$array_vader_uit_koppel[$zld['mdrId']] = $zld['lev'];
}
// Einde Array tbv javascript om vader automatisch te tonen
?>
<script>
function toon_dracht(id) {
var ooi = 'moeder_' + id;
var moeder = document.getElementById(ooi); var mr = moeder.value;
if(mr.length > 0) toon_vader_uit_koppel(mr, id);
}
var jArray_vdr = <?php echo json_encode($array_vader_uit_koppel); ?>;
function toon_vader_uit_koppel(m, i) {
//document.getElementById('result_vader').innerHTML = jArray_vdr[m];
var ram = 'vader_' + i;
var resultVdr = 'result_vader_' + i;
if(jArray_vdr[m] != null)
{
document.getElementById(ram).style.display = "none";
document.getElementById(ram).value = null; // veld leegmaken indien gevuld
document.getElementById(resultVdr).innerHTML = jArray_vdr[m];
}
else
{
//document.getElementById(ram).style.display = "block";
document.getElementById(ram).style.display = "inline-block";
document.getElementById(resultVdr).innerHTML = "";
}
}
</script>
<form action="phpHulp.php" method = "post">
<table border = 0>
<tr valign = bottom style = "font-size : 12px;">
<th>Moeder<hr></th>
<th>Vader<hr></th>
<th><hr></th>
</tr>
<?php
// Declaratie MOEDERDIEREN
$zoek_moederdieren = mysqli_query($db,"
SELECT st.schaapId, s.levensnummer, right(s.levensnummer,5) werknr
FROM tblSchaap s
join tblStal st on (st.schaapId = s.schaapId)
join tblVolwas v on (s.schaapId = v.mdrId)
WHERE st.lidId = 13 and v.vdrId is not null
ORDER BY right(s.levensnummer,5)
") or die (mysqli_error($db));
$index = 0;
while ($mdr = mysqli_fetch_assoc($zoek_moederdieren))
{
$mdrkey[$index] = $mdr['schaapId'];
$wnrOoi[$index] = $mdr['werknr'];
$index++;
}
unset($index);
// EINDE Declaratie MOEDERDIEREN
?>
<tr><td>
<input type = "submit" name = "knpVervers" value = "Verversen">
</td></tr>
<?php
$velden = mysqli_query($db,"
SELECT rd.Id, moeder
FROM impAgrident rd
WHERE rd.lidId = 13 and rd.actId = 19 and isnull(verwerkt)
ORDER BY str_to_date(rd.datum,'%d/%m/%Y'), rd.Id
") or die (mysqli_error($db));
while ($vldn = mysqli_fetch_assoc($velden)) {
$Id = $vldn['Id']; ?>
<tr style = "font-size:14px;">
<td style = "font-size : 11px;">
<?php echo $Id; ?>
<select id= <?php echo "moeder_$Id"; ?> onchange = <?php echo "toon_dracht(".$Id.")"; ?> style= "width:65; font-size:12px;" name = 'kzlOoi' >
<option></option>
<?php
kzl_loop($mdrkey, $wnrOoi, $mdrId_rd, $_POST['knpVervers'], $_POST['kzlOoi'][$Id]); ?>
</select>
</td>
<td>
<select style= "width:125; font-size:12px;" id= <?php echo "vader_$Id"; ?> name = 'kzlRam' >
<option></option>
<?php
kzl_loop($vdrkey, $lvnrRam, $ram_db, $_POST['knpVervers'], $_POST['kzlRam'][$Id]); ?>
</select><p id= <?php echo "result_vader_$Id"; ?> ></p>
</td>
</tr>
<?php } ?>
</table>
</form>
</body>
</html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<title>Registratie</title>
</head>
<body>
<?php
Include "connect_db.php";
function kzl_loop($ArrayKey, $ArrayName, $dbKey, $btnRefresh, $fldKey) {
$count = count($ArrayName);
for ($i = 0; $i < $count; $i++){
$opties = array($ArrayKey[$i]=>$ArrayName[$i]);
foreach($opties as $key => $waarde)
{
if ((!isset($btnRefresh) && $dbKey == $key) || (isset($fldKey) && $fldKey == $key)){
echo '<option value="' . $key . '" selected>' . $waarde . '</option>';
} else {
echo '<option value="' . $key . '" >' . $waarde . '</option>';
}
}
}
}
// Array tbv javascript om vader automatisch te tonen
$zoek_laatste_dekkingen = mysqli_query($db,"
SELECT v.mdrId, right(vdr.levensnummer,5) lev
FROM tblVolwas v
join (
SELECT v.mdrId, max(v.volwId) volwId
FROM tblVolwas v
left join tblHistorie hv on (hv.hisId = v.hisId)
left join tblDracht d on (v.volwId = d.volwId)
left join tblHistorie hd on (hd.hisId = d.hisId)
left join tblSchaap k on (k.volwId = v.volwId)
left join (
SELECT s.schaapId
FROM tblSchaap s
join tblStal st on (s.schaapId = st.schaapId)
join tblHistorie h on (st.stalId = h.stalId)
WHERE h.actId = 3
) ha on (k.schaapId = ha.schaapId)
WHERE (isnull(hv.hisId) or hv.skip = 0) and (isnull(hd.hisId) or hd.skip = 0) and isnull(ha.schaapId)
GROUP BY v.mdrId
) lv on (v.volwId = lv.volwId)
join tblSchaap vdr on (vdr.schaapId = v.vdrId)
") or die (mysqli_error($db));
while ( $zld = mysqli_fetch_assoc($zoek_laatste_dekkingen)) {
$array_vader_uit_koppel[$zld['mdrId']] = $zld['lev'];
}
// Einde Array tbv javascript om vader automatisch te tonen
?>
<script>
function toon_dracht(id) {
var ooi = 'moeder_' + id;
var moeder = document.getElementById(ooi); var mr = moeder.value;
if(mr.length > 0) toon_vader_uit_koppel(mr, id);
}
var jArray_vdr = <?php echo json_encode($array_vader_uit_koppel); ?>;
function toon_vader_uit_koppel(m, i) {
//document.getElementById('result_vader').innerHTML = jArray_vdr[m];
var ram = 'vader_' + i;
var resultVdr = 'result_vader_' + i;
if(jArray_vdr[m] != null)
{
document.getElementById(ram).style.display = "none";
document.getElementById(ram).value = null; // veld leegmaken indien gevuld
document.getElementById(resultVdr).innerHTML = jArray_vdr[m];
}
else
{
//document.getElementById(ram).style.display = "block";
document.getElementById(ram).style.display = "inline-block";
document.getElementById(resultVdr).innerHTML = "";
}
}
</script>
<form action="phpHulp.php" method = "post">
<table border = 0>
<tr valign = bottom style = "font-size : 12px;">
<th>Moeder<hr></th>
<th>Vader<hr></th>
<th><hr></th>
</tr>
<?php
// Declaratie MOEDERDIEREN
$zoek_moederdieren = mysqli_query($db,"
SELECT st.schaapId, s.levensnummer, right(s.levensnummer,5) werknr
FROM tblSchaap s
join tblStal st on (st.schaapId = s.schaapId)
join tblVolwas v on (s.schaapId = v.mdrId)
WHERE st.lidId = 13 and v.vdrId is not null
ORDER BY right(s.levensnummer,5)
") or die (mysqli_error($db));
$index = 0;
while ($mdr = mysqli_fetch_assoc($zoek_moederdieren))
{
$mdrkey[$index] = $mdr['schaapId'];
$wnrOoi[$index] = $mdr['werknr'];
$index++;
}
unset($index);
// EINDE Declaratie MOEDERDIEREN
?>
<tr><td>
<input type = "submit" name = "knpVervers" value = "Verversen">
</td></tr>
<?php
$velden = mysqli_query($db,"
SELECT rd.Id, moeder
FROM impAgrident rd
WHERE rd.lidId = 13 and rd.actId = 19 and isnull(verwerkt)
ORDER BY str_to_date(rd.datum,'%d/%m/%Y'), rd.Id
") or die (mysqli_error($db));
while ($vldn = mysqli_fetch_assoc($velden)) {
$Id = $vldn['Id']; ?>
<tr style = "font-size:14px;">
<td style = "font-size : 11px;">
<?php echo $Id; ?>
<select id= <?php echo "moeder_$Id"; ?> onchange = <?php echo "toon_dracht(".$Id.")"; ?> style= "width:65; font-size:12px;" name = 'kzlOoi' >
<option></option>
<?php
kzl_loop($mdrkey, $wnrOoi, $mdrId_rd, $_POST['knpVervers'], $_POST['kzlOoi'][$Id]); ?>
</select>
</td>
<td>
<select style= "width:125; font-size:12px;" id= <?php echo "vader_$Id"; ?> name = 'kzlRam' >
<option></option>
<?php
kzl_loop($vdrkey, $lvnrRam, $ram_db, $_POST['knpVervers'], $_POST['kzlRam'][$Id]); ?>
</select><p id= <?php echo "result_vader_$Id"; ?> ></p>
</td>
</tr>
<?php } ?>
</table>
</form>
</body>
</html>
Nu weet ik alleen niet hoe ik de waarde in $Id uit $_POST['kzlOoi'][$Id] kan halen. Maar ik kan weer vooruit met $_POST["kzlOoi_$Id"].
Gewijzigd op 22/01/2022 16:48:50 door Bas van de Ven
$_POST['kzlOoi'][$Id]
Geen idee wat kzl is, maar 'Ooi' dat ken ik wel.
Persoonlijk zou ik kzl dan ook verduidelijken. Of is het een waarde uit een reeks?
Kan je dit geheel niet verder verfijnen?
$_POST[$type][$sexe][$Id]
Dus als invoer:
$_POST['kzl']['Ooi'][42]
Dus je arrayboom zou met dit alle Ooien aan moeten geven met het type kzl:
$_POST['kzl']['Ooi']
kzl staat voor keuzelijst (HTML element) kzlOoi is dus de naam van een keuzelijst met ooien.
txtAanvdm bijv. staat voor textveld aanvoerdatum.
chbKies bijv. is een checkbox. Is deze checkbox aangevinkt dan wil men het desbetreffende record op de pagina (na controle, zie 1e post in deze topic) inlezen in de database.
knpVervers bijv. staat voor knop (type submit) verversen van de pagina. Na het aanbrengen van wijzigingen klikt men op knpVervers en wordt elke regel op de pagina gevalideerd. Is een regel juist ingevuld dan is chbKies van die regel automatisch aangevinkt anders krijgt chbKies de status disabled.
$Id bevat het record_id van een record uit de database tabel. Elke regel op de pagina is een record en heeft zijn eigen unieke Id.
Na opslaan van de pagina worden diverse regels met steeds een ooi-nummer als waarde opgestuurd. Door $Id mee te geven weet ik welk ooi-nummer uit welke tabel-record komt.
Ik heb (dus) ook een knop 'opslaan' nl. knpSave. De php-code achter deze knop ziet er zo uit.
Code (php)
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
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
<?php
function getNameFromKey($key) {
$array = explode('_', $key);
return $array[0];
}
function getIdFromKey($key) {
$array = explode('_', $key);
return $array[1];
}
$array = array();
foreach($_POST as $key => $value) {
$array[getIdFromKey($key)][getNameFromKey($key)] = $value;
}
foreach($array as $recId => $id) { //$recId is het record_id uit de database tabel opgehaald uit de veldnaam
unset($fldRam);
unset($fldGrootte);
foreach($id as $key => $value) {
if ($key == 'chbKies') { $fldKies = $value; } //
if ($key == 'chbDel') { $fldDel = $value; } // elke regel op de pagina kan 'individueel' worden verwijderd. Is deze checkbox aangevinkt dan wil men de regel op de pagina verwijderen.
if ($key == 'txtDatum' && !empty($value)) { $dag = date_create($value); $valuedag = date_format($dag, 'Y-m-d');
$fldDag = $valuedag; }
if ($key == 'kzlOoi' && !empty($value)) { $fldOoi = $value; }
if ($key == 'kzlRam' && !empty($value)) { $fldRam = $value; }
if ($key == 'txtGrootte' && !empty($value)) { $fldGrootte = $value; }
}
// HIER DE CODE OM DE DATABASE BIJ TE WERKEN
}
?>
function getNameFromKey($key) {
$array = explode('_', $key);
return $array[0];
}
function getIdFromKey($key) {
$array = explode('_', $key);
return $array[1];
}
$array = array();
foreach($_POST as $key => $value) {
$array[getIdFromKey($key)][getNameFromKey($key)] = $value;
}
foreach($array as $recId => $id) { //$recId is het record_id uit de database tabel opgehaald uit de veldnaam
unset($fldRam);
unset($fldGrootte);
foreach($id as $key => $value) {
if ($key == 'chbKies') { $fldKies = $value; } //
if ($key == 'chbDel') { $fldDel = $value; } // elke regel op de pagina kan 'individueel' worden verwijderd. Is deze checkbox aangevinkt dan wil men de regel op de pagina verwijderen.
if ($key == 'txtDatum' && !empty($value)) { $dag = date_create($value); $valuedag = date_format($dag, 'Y-m-d');
$fldDag = $valuedag; }
if ($key == 'kzlOoi' && !empty($value)) { $fldOoi = $value; }
if ($key == 'kzlRam' && !empty($value)) { $fldRam = $value; }
if ($key == 'txtGrootte' && !empty($value)) { $fldGrootte = $value; }
}
// HIER DE CODE OM DE DATABASE BIJ TE WERKEN
}
?>
Met jouw voorstel $_POST['kzlOoi'][$Id] weet ik niet de waarde in $Id op te halen bij het versturen van de pagina. Deze waarde heb ik nodig binnen de code om de database bij te werken.
hhhhiiiiiiiiihttps://www.phphulp.nl/php/forum/algemene-php-scripting-en-meer/3/