Directe reactie in code bij invullen van input field?
Ik heb een input field in html.:
Code (php)
1
2
2
<input type="text" name="test" size="2" placeholder="?" style="text-align:center;" id="myInput">
<div id="result"></div>
<div id="result"></div>
De waarde die ik daarin invul word direct zichtbaar gemaakt met dit.:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<script>
$(document).ready(function(){
$("#myInput").on("input", function(){
// Print entered value in a div box
$("#result").text($(this).val());
});
});
</script>
$(document).ready(function(){
$("#myInput").on("input", function(){
// Print entered value in a div box
$("#result").text($(this).val());
});
});
</script>
Ik heb nu een 4 cellen naast elkaar, zie onderstaande code.:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<div class="row">
<div class="cell"><input type="text" name="hallo1" size="10" style="text-align:center;"></div>
<div class="cell"><input type="text" name="hallo2" size="10" style="text-align:center;"></div>
<div class="cell"><input type="text" name="hallo3" size="10" style="text-align:center;"></div>
<div class="cell"><input type="text" name="hallo4" size="10" style="text-align:center;"></div>
</div>
<div class="cell"><input type="text" name="hallo1" size="10" style="text-align:center;"></div>
<div class="cell"><input type="text" name="hallo2" size="10" style="text-align:center;"></div>
<div class="cell"><input type="text" name="hallo3" size="10" style="text-align:center;"></div>
<div class="cell"><input type="text" name="hallo4" size="10" style="text-align:center;"></div>
</div>
Nu vraag ik jullie hulp hierbij omdat ik het niet weet en krijg.
Tis de bedoeling dat ik die 4 regels terug breng naar 1 regel, maar dat hij zich aanpast op het geen dat ingevuld word in de input box.
Dus type ik 1 in moet direct 1 cell getoond worden, type ik 3 moet direct 3 cellen getoond worden, uiteraard zonder refresh page of submit button.
Is dit mogelijk? Zou mij iemand kunnen helpen hiermee?
<script>
$(document).ready(function(){
$("#myInput").on("input", function(){
//Fetch input value
const numberOfCells = $(this).val();
//Clear all cells
$('.row').empty();
//Add new cells based on input value.
for (let i = 0; i < numberOfCells; i++) {
$('.row').append(`<div class="cell"><input type="text" name="hallo${i}" size="10" style="text-align:center;"></div>`);
}
});
});
</script>
Gewijzigd op 05/11/2019 11:47:04 door Daan B
Zelf had ik al iets geprobeerd op deze manier.:
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
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
<script>
$(document).ready(function() {
$("#myInput").keyup(function() {
var a = document.getElementById('showSearchDiv1');
var b = document.getElementById('showSearchDiv2');
var c = document.getElementById('showSearchDiv3');
var d = document.getElementById('showSearchDiv4');
if($(this).val() == "1") {
a.style.display = 'block';
b.style.display = 'none';
c.style.display = 'none';
d.style.display = 'none';
}
if($(this).val() == "2") {
a.style.display = 'block';
b.style.display = 'block';
c.style.display = 'none';
d.style.display = 'none';
}
if($(this).val() == "3") {
a.style.display = 'block';
b.style.display = 'block';
c.style.display = 'block';
d.style.display = 'none';
}
if($(this).val() == "4") {
a.style.display = 'block';
b.style.display = 'block';
c.style.display = 'block';
d.style.display = 'block';
}
});
});
</script>
$(document).ready(function() {
$("#myInput").keyup(function() {
var a = document.getElementById('showSearchDiv1');
var b = document.getElementById('showSearchDiv2');
var c = document.getElementById('showSearchDiv3');
var d = document.getElementById('showSearchDiv4');
if($(this).val() == "1") {
a.style.display = 'block';
b.style.display = 'none';
c.style.display = 'none';
d.style.display = 'none';
}
if($(this).val() == "2") {
a.style.display = 'block';
b.style.display = 'block';
c.style.display = 'none';
d.style.display = 'none';
}
if($(this).val() == "3") {
a.style.display = 'block';
b.style.display = 'block';
c.style.display = 'block';
d.style.display = 'none';
}
if($(this).val() == "4") {
a.style.display = 'block';
b.style.display = 'block';
c.style.display = 'block';
d.style.display = 'block';
}
});
});
</script>
en dan in de div op zo een manier.:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<div class="row">
<div class="cell"><B>Batch Nr.</B></div>
<div class="cell"><input type="text" name="MaterialCode" size="8" style="text-align:center;"></div>
<div class="cell" id="showSearchDiv1">PP Uitgebreid</div>
<div class="cell" id="showSearchDiv2">PP Uitgebreid</div>
<div class="cell" id="showSearchDiv3">PP Uitgebreid</div>
<div class="cell" id="showSearchDiv4">PP Uitgebreid</div>
</div>
<div class="cell"><B>Batch Nr.</B></div>
<div class="cell"><input type="text" name="MaterialCode" size="8" style="text-align:center;"></div>
<div class="cell" id="showSearchDiv1">PP Uitgebreid</div>
<div class="cell" id="showSearchDiv2">PP Uitgebreid</div>
<div class="cell" id="showSearchDiv3">PP Uitgebreid</div>
<div class="cell" id="showSearchDiv4">PP Uitgebreid</div>
</div>
Dit werkt maar hier gaan helaas de div's opeens onder elkaar ipv naast elkaar weer zoals het hoort.
terwijl ik toch eigenlijk zeg van laat zien wel of nee, dus vind het vreemd dat ze onder elkaar komen.
Aangezien je waarschijnlijk maar een gelimiteerd aantal velden wilt tonen (maximaal 4?) zou je ook kunnen overwegen om hier een soort van "knoppen" voor te maken? Dat is minder (klik)acties voor de gebruiker lijkt mij? En je zou in een hidden veld bij kunnen houden welke hoeveelheid je hebt geselecteerd als dat voor de verdere verwerking relevant is.
Het is trouwens niet vreemd dat de divs onder elkaar verschijnen, want je maakt hier zelf block level elementen van.
Gezien de dynamische aard van deze velden is het misschien ook handiger om hier namen aan te hangen, in plaats van id's. Je kunt hier toch al makkelijk aan refereren via het containerelement. Op die manier heb je maar één id nodig. En dan zou je deze in arrayvorm kunnen opslaan, de structuur wordt dan dus zoiets:
Even een vraag nog.
Ik heb gelezen ergens dat je via javascript je document kunt doorlopen op het zelfde element.
Ik gebruik nu als test op diverse plaatsen dezelfde getElementById.
Dus over het gehele document 4 maal
Als ik het dan goed zou begrijpen kan ik via een lus dit over het gehele document kunnen doorlopen met de volgende code.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<script>
$(document).ready(function() {
$("#myInput").keyup(function() {
if($(this).val() == "1") {
for(var i = 0; i++) {
document.getElementById('showSearchDiv1').setAttribute('style','visibility:hidden');
}}}}
$(document).ready(function() {
$("#myInput").keyup(function() {
if($(this).val() == "1") {
for(var i = 0; i++) {
document.getElementById('showSearchDiv1').setAttribute('style','visibility:hidden');
}}}}
Echter hij doet niks.
Wat doe ik fout?
Waarom normaal JavaScript mengen met jQuery?
Omdat ik van alles probeer om het werkend te krijgen, moet toch iets , kan slechts oplossingen vragen aan jullie en zelf niets proberen toch?
Daar het een zoekformulier betreft was ik eigenlijk in de veronderstelling dat al die data die je daar invult maar van tijdelijke aard is?
Aan de andere kant, als je dan eenmaal op de zoek-knop drukt is het ook zaak dat op de resultaatpagina je zoekopdracht weer terug ingevuld wordt misschien? Heb je daar al over nagedacht?
Afdeling krijgt een pagina voor zich waar data word ingevuld.
Ze kunnen kiezen hoeveel kolommen ze willen gebruiken , kan 1 t/m 25 zijn.
De data wat ze invullen word gedropt in een sql database, dat is ook geen probleem.
Momenteel ben ik sinds vanmorgen zover gekomen dat alles zeer verkort is gemaakt i.c.m. for lussen, werkt ook super.
Het enigste wat ik nu nog zoek , is iets wat de gehele pagina doorzoekt en de kolommen visible of hide maakt.
In onderstaand stukje , als 1 kolom kies.:
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
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
if($(this).val() == "1") {
document.getElementById('showSearchDiv1').setAttribute('style','visibility:visible');
document.getElementById('showSearchDiv2').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv3').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv4').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv5').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv6').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv7').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv8').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv9').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv10').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv11').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv12').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv13').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv14').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv15').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv16').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv17').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv18').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv19').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv20').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv21').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv22').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv23').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv24').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv25').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv1').setAttribute('style','visibility:visible');
document.getElementById('showSearchDiv2').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv3').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv4').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv5').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv6').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv7').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv8').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv9').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv10').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv11').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv12').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv13').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv14').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv15').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv16').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv17').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv18').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv19').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv20').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv21').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv22').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv23').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv24').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv25').setAttribute('style','visibility:hidden');
Dat houd in dat op kolom 1 de andere 24 kolommen hidden zijn.
Echter omdat 1 kolom 97 rijen bevat, kun je indenken dat de code op deze manier super lang word.
Hoe maak ik die lus zo , dat ik 2 t/m 25 in korte lus hidden krijg?
in php heb ik dit door het formulier heen op deze manier gedaan.:
Code (php)
1
2
3
4
2
3
4
for ($x = 1; $x <= 25; $x++) {
//echo "The number is: $x <br>";
echo "<div class='cell' id='showSearchDiv$x'>PP Uitgebreid</div> ";}
//echo "The number is: $x <br>";
echo "<div class='cell' id='showSearchDiv$x'>PP Uitgebreid</div> ";}
Gewijzigd op 07/11/2019 13:06:56 door Pascal Schuffelers
Vervolgens kun je als eerste alle div's hidden maken.
en vervolgens zet je één div weer als visible
Dit gaat vervolgens zo snel achter elkaar dat je niet ziet dat showSearchDiv1 heel even onzichtbaar was.
Toevoeging op 07/11/2019 15:12:40:
Met dit soort kunstjes kunnen data attributen ook vaak uitkomst bieden. data attributen mogen namelijk wel een numerieke waarde hebben maar het "id" attribuut niet.
Gewijzigd op 07/11/2019 15:17:09 door Frank Nietbelangrijk
Op het moment dat je dit ziet:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
document.getElementById('showSearchDiv1').setAttribute('style','visibility:visible');
document.getElementById('showSearchDiv2').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv3').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv4').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv5').setAttribute('style','visibility:hidden');
// etc
document.getElementById('showSearchDiv2').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv3').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv4').setAttribute('style','visibility:hidden');
document.getElementById('showSearchDiv5').setAttribute('style','visibility:hidden');
// etc
Wordt het tijd om je strategie te herzien.
Je maakt al gebruik van jQuery, dus waarom maak je hier geen gebruik van?
Weg met die aantal knop, laat mensen gewoon typen! Als je op enter drukt: voeg een veld toe. Als je een veld leegveegt met de backspace: verwijder deze weer. Minder klikacties = beter.
> werkend voorbeeld.
Code:
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
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
<?php
function escape($in) {
return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}
function dump($in) {
if (is_array($in)) {
$in = print_r($in, true);
}
echo '<pre>'.escape($in).'</pre>';
}
header('Content-Type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>just keep typing...</title>
<style type="text/css">
.search { display: inline; }
</style>
<script
src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
</head>
<body>
<form action="<?php echo escape($_SERVER['SCRIPT_NAME']); ?>" method="post">
<div id="searchBoxContainer">
<div class="search"><input type="text" name="search[]" autocomplete="off" data-dontremove="1"></div>
</div>
<button type="submit">go</button>
</form>
<script type="text/javascript">
//<![CDATA[
$().ready(function() {
$('#searchBoxContainer').on('keypress', 'input', function(e) {
if (e.which === 13) { // enter
e.preventDefault(); // prevent submit
// do not allow more than 25 boxes
if ($('#searchBoxContainer').children().length < 25) {
$currentDiv = $(e.target).parent();
var html =
'<div class="search">\
<input type="text" name="search[]" autocomplete="off">\
<\/div>';
$currentDiv.after(html);
$currentDiv.next().find('input').focus();
}
}
});
// use keyup instead of keypress for backspace
// @see https://stackoverflow.com/questions/4690330/jquery-keypress-backspace-wont-fire
$('#searchBoxContainer').on('keyup', 'input', function(e) {
if (e.which === 8) { // backspace
$currentInput = $(e.target);
$currentDiv = $currentInput.parent();
if ($currentInput.val() === '') {
// do not remove the first search box
if ($currentInput.data('dontremove') !== 1) {
$previous = $currentDiv.prev().find('input');
$currentDiv.remove();
$previous.focus();
}
}
}
});
$('#searchBoxContainer input').focus(); // initially there is only one search box
});
//]]>
</script>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
dump($_POST);
}
?>
</body>
</html>
function escape($in) {
return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}
function dump($in) {
if (is_array($in)) {
$in = print_r($in, true);
}
echo '<pre>'.escape($in).'</pre>';
}
header('Content-Type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>just keep typing...</title>
<style type="text/css">
.search { display: inline; }
</style>
<script
src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
</head>
<body>
<form action="<?php echo escape($_SERVER['SCRIPT_NAME']); ?>" method="post">
<div id="searchBoxContainer">
<div class="search"><input type="text" name="search[]" autocomplete="off" data-dontremove="1"></div>
</div>
<button type="submit">go</button>
</form>
<script type="text/javascript">
//<![CDATA[
$().ready(function() {
$('#searchBoxContainer').on('keypress', 'input', function(e) {
if (e.which === 13) { // enter
e.preventDefault(); // prevent submit
// do not allow more than 25 boxes
if ($('#searchBoxContainer').children().length < 25) {
$currentDiv = $(e.target).parent();
var html =
'<div class="search">\
<input type="text" name="search[]" autocomplete="off">\
<\/div>';
$currentDiv.after(html);
$currentDiv.next().find('input').focus();
}
}
});
// use keyup instead of keypress for backspace
// @see https://stackoverflow.com/questions/4690330/jquery-keypress-backspace-wont-fire
$('#searchBoxContainer').on('keyup', 'input', function(e) {
if (e.which === 8) { // backspace
$currentInput = $(e.target);
$currentDiv = $currentInput.parent();
if ($currentInput.val() === '') {
// do not remove the first search box
if ($currentInput.data('dontremove') !== 1) {
$previous = $currentDiv.prev().find('input');
$currentDiv.remove();
$previous.focus();
}
}
}
});
$('#searchBoxContainer input').focus(); // initially there is only one search box
});
//]]>
</script>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
dump($_POST);
}
?>
</body>
</html>
Gewijzigd op 08/11/2019 13:40:21 door Thomas van den Heuvel
@Thomas, zal het eens onder de loep nemen, thx.
Bovenstaand codefragment uitgebreid met een check op maximaal 25 zoekvelden.
- Ariën - op 06/11/2019 10:49:28:
Waarom normaal JavaScript mengen met jQuery?
De reden is dat je dan geen verdere overhead nodig hebt in je scripts, het wordt een onnodig groot verhaal qua bandbreedte van je inet-verbinding. In sommige gevallen zoals in een confirmbox zul je weer een plugin toe moeten voegen wat in principe niet nodig is want jquery heeft native-js standaard ingebouwd.
Waar Ariën volgens mij op doelt is dat er in het code fragment op de ene plek wel gebruik gemaakt wordt van JQuery en op de andere plek niet. Je laadt dan dus JQuery in en maakt er vervolgens geen optimaal gebruik van. Ik zou dan zeggen doe of het één of het ander.
Ik ben een voorstander van alles zo simpel mogelijk houden, maar niet simpeler. Het inladen van een minimale set aan hulpstukken is dan de prijs die je betaalt. In het bovenstaande gebruik ik alleen de (minified!) jQuery library, verder niets.
NB vergeet ook niet dat jQuery cross browser compatibility hoog in het vaandel heeft. Als je iets in jQuery schrijft heb je dus ook enige garantie dat dit in verschillende browsers werkt. Dit mogelijk in tegenstelling tot "native" JavaScript.
Gewijzigd op 10/11/2019 17:49:57 door Thomas van den Heuvel
Nu zit ik met de volgende, wellicht stomme, vraag.
Ik heb dit in PHP.:
Ik krijg de fout bij $MaterialCode$x maar doe ik $MaterialCode[$x] is het wel goed, echter die [] wil ik niet.
Is dit op te lossen?
Het is namelijk zo $MaterialCode$x komt 98 keer helaas , dus dacht een lusje te maken maar dat gaat dan niet zo?
Groet
Pascal.
Dat kan en met hulp van het internet moet dat lukken.
Dit ff in elkaar geknutseld.
Code (php)
https://www.php.net/manual/en/language.variables.variable.php
Gewijzigd op 12/11/2019 16:08:35 door Adoptive Solution
Pascal Schuffelers op 12/11/2019 15:15:40:
echter die [] wil ik niet.
Het is namelijk zo $MaterialCode$x komt 98 keer helaas , dus dacht een lusje te maken maar dat gaat dan niet zo?
Het is namelijk zo $MaterialCode$x komt 98 keer helaas , dus dacht een lusje te maken maar dat gaat dan niet zo?
Zoals ik al eerder aangaf, op het moment dat je zulke naamgeving hebt wordt het hoog tijd om je aanpak te herzien. Dit is ook afleidbare informatie. Blijkbaar is de volgorde relevant, dat kan, maar dan hoef je nog steeds niet zo alles apart te nummeren. Je kunt specifieke velden indexeren als dit er echt toe doet:
Of gewoon open laten als dit een aaneengesloten rij moet zijn (en blijven) als het volgnummer niet belangrijk is, maar de volgorde wel:
Ik vermoed dat je dit graag zo wilt houden omdat je vervolgcode ook zo in elkaar steekt, maar dit zou ik echt aanpassen. Dat kost dan misschien wat extra werk, maar dit levert een veel schonere oplossing op dan het introduceren van 98+ verschillende variabelen en wie weet wat voor andere kunstgrepen hiervoor nodig zijn.
Ik zou haast willen zeggen dat wat jij doet (zeer) ongebruikelijk is. Ik vind het dan ook altijd opmerkelijk dat iemand op grond van reacties gemotiveerd wordt om deze aanpak voort te zetten. Dit is voortborduren op een "slecht" ontwerp.
Sure, het zal wel werken. Maar het leest moeilijk(er), het is ingewikkelder om te debuggen en dit alles maakt het gewoon moeilijker in het gebruik met onnodig tijdsverlies als gevolg. Maak alles zo simpel mogelijk. Op het moment dat je met databases en formulieren bezig bent zouden arrays toch ook wel moeten lukken?
Op het moment dat een veldnaam meer dan één keer gebruikt wordt dan zou je eigenlijk al meteen aan arrays moeten denken. Ook vanwege schaalbaarheid, flexibiliteit, foutgevoeligheid et cetera.
NB: je gebruikt in de verwerking in je for-loop het "magische getal" 25. Maar dit zou niet nodig hoeven zijn, en waarom zou dit vast moeten liggen? Ik dacht juist dat dit flexibel diende te zijn? Je oorspronkelijke bericht gaf in ieder geval die indruk, dit zou slechts een bovengrens moeten zijn? De enige plek waar die begrenzing dus eigenlijk hoeft te zitten is in het formulier zelf? Het nadeel van deze aanpak is ook dat je mogelijk op meerdere plaatsen dit "magische getal" aan moet passen. Hard coding is nooit een goede zaak...
Gewijzigd op 12/11/2019 16:47:43 door Thomas van den Heuvel
Wat adviseren jullie het beste.
1 extreem grote database of allemaal kleintjes?
Ik denk zelf allemaal kleintjes maar zou graag jullie advies horen.
Mijn vermoeden is met die grote dat het dan allemaal on overzichtelijk word en lang nodig zal hebben met laden.
Als deze database goed is opgebouwd (lees: genormaliseerd) kan deze prima grote volumes aan data aan. Computers zijn geen oude abacussen meer, maar snelle machines die berekening in no-time kunnen doen. Dus waarom denk je dat het met grote hoeveelheden data traag zou zijn?
Ik heb wel eens een database van enkele gigabytes gehad, en daar kon ik prima queries op uitvoeren, en binnen de juiste vlotte tijd resultaten mee binnenhalen. Natuurlijk waren wat indexes juist een must, en goed afgestemde queries voor met name bij het gebruik van relationele koppelingen.
Gewijzigd op 15/11/2019 13:26:32 door - Ariën -