Directe reactie in code bij invullen van input field?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET Developer / Innovatieve software / Virtual Re

Functieomschrijving Als .Net developer werken aan innovatieve software waar onder andere gebruik gemaakt wordt van Virtual Reality? Bijdragen aan een organisatie waar je uitgedaagd wordt om continu verbeteringen en ontwikkelpunten te ontdekken en door te voeren? Werken in de omgeving Putten? Reageer dan nu voor meer informatie! Het pro-actief aandragen van verbeteringen voor de bestaande applicatie; Ontwikkelen van nieuwe functionaliteiten; Doorvoeren van aanpassingen en wijzigingen; Verantwoordelijk voor koppelingen met andere systemen; Op de hoogte blijven van technische ontwikkelingen. Functie-eisen Hbo werk- en denkniveau; Een afgeronde IT gerelateerde opleiding; Minimaal 1 jaar professionele ervaring als developer; Aantoonbare kennis van C#; Initiatiefrijke

Bekijk vacature »

Pagina: 1 2 volgende »

Pascal Schuffelers

Pascal Schuffelers

05/11/2019 09:04:15
Quote Anchor link
Ik zit met een vraagje.
Ik heb een input field in html.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<input type="text" name="test" size="2"  placeholder="?" style="text-align:center;" id="myInput">
<div id="result"></div>


De waarde die ik daarin invul word direct zichtbaar gemaakt met dit.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


Ik heb nu een 4 cellen naast elkaar, zie onderstaande code.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


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?
 
PHP hulp

PHP hulp

19/11/2019 04:23:41
 
Daan B

Daan B

05/11/2019 11:43:55
Quote Anchor link
Met een simpele for lus moet dit kunnen:


<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
 
Pascal Schuffelers

Pascal Schuffelers

05/11/2019 12:42:48
Quote Anchor link
Dat ziet er op zich niet gek uit echter op sommige plaatsen moet ik geen input box hebben namelijk.

Zelf had ik al iets geprobeerd op deze manier.:
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
<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)
PHP script in nieuw venster Selecteer het PHP script
1
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>


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.
 
Thomas van den Heuvel

Thomas van den Heuvel

05/11/2019 16:14:49
Quote Anchor link
Het lijkt mij makkelijker om een soort van "container" (omvattend element) aan te maken waar je deze cellen in plaatst. Op die manier kun je ze makkelijker beheren.

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<!-- de container -->
<div id="searchFields">
    <!-- de velden -->
    <div class="cell"><input type="text" name="searchField[0]"></div>
    <div class="cell"><input type="text" name="searchField[1]"></div>
    <!-- etc -->
</div>
 
Pascal Schuffelers

Pascal Schuffelers

06/11/2019 10:47:52
Quote Anchor link
Oke zal het eens uitzoeken.
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
document.getElementById('showSearchDiv1').setAttribute('style','visibility:visible');  


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)
PHP script in nieuw venster Selecteer het PHP script
1
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');
                    }}}}

Echter hij doet niks.
Wat doe ik fout?
 
- Ariën -
Beheerder

- Ariën -

06/11/2019 10:49:28
Quote Anchor link
Waarom normaal JavaScript mengen met jQuery?
 
Pascal Schuffelers

Pascal Schuffelers

06/11/2019 14:06:43
Quote Anchor link
Omdat ik van alles probeer om het werkend te krijgen, moet toch iets , kan slechts oplossingen vragen aan jullie en zelf niets proberen toch?
 
Thomas van den Heuvel

Thomas van den Heuvel

06/11/2019 17:08:58
Quote Anchor link
Misschien is het makkelijker om de container gewoon leeg te gooien en deze opnieuw te vullen met velden? Of komt het voor dat je waarden invult in deze velden, en dan het aantal zichtbare velden op ening moment verandert, oftewel is het belangrijk dat eventueel ingevulde data op een of andere manier bewaard wordt? Want dan moet je mogelijk wel pielen met visibility maar anders kun je toch alles weggooien en opnieuw opbouwen?

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?
 
Pascal Schuffelers

Pascal Schuffelers

07/11/2019 13:05:56
Quote Anchor link
Even om het geheel iets duidelijker te maken.
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)
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
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');


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)
PHP script in nieuw venster Selecteer het PHP script
1
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> ";}
                            
Gewijzigd op 07/11/2019 13:06:56 door Pascal Schuffelers
 
Frank Nietbelangrijk

Frank Nietbelangrijk

07/11/2019 15:09:13
Quote Anchor link
Voorzie alle divs ook van een class. Bijvoorbeeld <div id="showSearchDiv1" class="showSearchDiv">...</div>

Vervolgens kun je als eerste alle div's hidden maken.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$(".showSearchDiv").hide();


en vervolgens zet je één div weer als visible
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$("#showSearchDiv1").show();


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
 
Thomas van den Heuvel

Thomas van den Heuvel

07/11/2019 20:15:15
Quote Anchor link
Oef.

Op het moment dat je dit ziet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

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)
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
<?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>
Gewijzigd op 08/11/2019 13:40:21 door Thomas van den Heuvel
 
Pascal Schuffelers

Pascal Schuffelers

08/11/2019 08:41:21
Quote Anchor link
@Thomas, zal het eens onder de loep nemen, thx.
 
Thomas van den Heuvel

Thomas van den Heuvel

08/11/2019 13:41:01
Quote Anchor link
Bovenstaand codefragment uitgebreid met een check op maximaal 25 zoekvelden.
 
Yoop Overmaat

Yoop Overmaat

10/11/2019 03:45:14
Quote Anchor link
- 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.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/11/2019 13:03:25
Quote Anchor link
JQuery heeft helemaal niets ingebouwd maar is een bibliotheek met handige javascript functies die je het leven makkelijk maken. En oh ja er moet een bestandje extra worden ingeladen. Dat klopt en ja je kunt zonder JQuery. Maar dat bestandje wordt door de browsers gecached dus dat scheelt weer enorm. En in een aantal gevallen zorgt JQuery er wel voor dat de functies via wat zijsprongen wel in een breed scala aan browsers goed werkt wat op zich dus ook wel weer een voordeel is.

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.
 
Thomas van den Heuvel

Thomas van den Heuvel

10/11/2019 17:47:05
Quote Anchor link
Ben er zelf geen fan van, maar als je van CDN's gebruik maakt voor jQuery, dan heb je potentieel al alles ingeladen van andere sites. En na het inladen wordt alles gecached, dus dit is vaak eenmalig. Daarnaast, bandbreedte, geheugen en CPU-snelheid zijn tegenwoordig minder een probleem. Is geen excuus om minder optimaal te programmeren, maar een kleine knieval doen om vervolgens te beschikken over een uitgebreide library lijkt mij de uitwisseling waard. Maar dan moet je er dus vervolgens wel (optimaal) gebruiken van maken inderdaad.

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
 
Pascal Schuffelers

Pascal Schuffelers

12/11/2019 15:15:40
Quote Anchor link
Oke ben een beetje aan het stoeien met de info van jullie en het zooitje van mij.

Nu zit ik met de volgende, wellicht stomme, vraag.
Ik heb dit in PHP.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
for ($x = 1; $x <= 25; $x++) {
                            $MaterialCode$x    = $_POST['MaterialCode$x'];

enz.,enz.


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.
 
Adoptive Solution

Adoptive Solution

12/11/2019 16:05:52
Quote Anchor link
Je wilt dus met de waarde in een variable een variablenaam maken.

Dat kan en met hulp van het internet moet dat lukken.

Dit ff in elkaar geknutseld.

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
<?php

$MaterialCode5
= 'een waarde';
$x=5;
echo ${'MaterialCode' . $x};

$_POST[${'MaterialCode' . $x}] = 'POST MaterialCode';
echo '<br /><br />';

${'MaterialCode' . $x} = $_POST[${'MaterialCode' . $x}];

echo '<p>MaterialCode' . $x . ' is ' . ${'MaterialCode' . $x};

?>


https://www.php.net/manual/en/language.variables.variable.php
Gewijzigd op 12/11/2019 16:08:35 door Adoptive Solution
 
Thomas van den Heuvel

Thomas van den Heuvel

12/11/2019 16:43:33
Quote Anchor link
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?

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" name="searchBox[88]">

Of gewoon open laten als dit een aaneengesloten rij moet zijn (en blijven) als het volgnummer niet belangrijk is, maar de volgorde wel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" name="searchBox[]">

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
 
Pascal Schuffelers

Pascal Schuffelers

15/11/2019 13:02:39
Quote Anchor link
1 vraagje nog.
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.
 
- Ariën -
Beheerder

- Ariën -

15/11/2019 13:20:15
Quote Anchor link
Eén database prima. Ik neem hierbij aan dat het niet gaat om een SaaS-product.

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 -
 

Pagina: 1 2 volgende »



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.