Ik wilde de onderstaande gegevens opslaan in mijn database:


<input id="618" type="text" name="titelnaam[]" value="" placeholder="Naam" class="form-control" style="width:200px;">
<input type="text" id="618" name="titelfunctie[]" value="" placeholder="Functie" class="form-control" style="width:200px;">

<input id="619" type="text" name="titelnaam[]" value="" placeholder="Naam" class="form-control" style="width:200px;">
<input type="text" id="619" name="titelfunctie[]" value="" placeholder="Functie" class="form-control" style="width:200px;">

<input id="620" type="text" name="titelnaam[]" value="" placeholder="Naam" class="form-control" style="width:200px;">
<input type="text" id="620" name="titelfunctie[]" value="" placeholder="Functie" class="form-control" style="width:200px;">


Mijn database omvat een ID-, naam- en functie-veld.
Omdat de pagina dynamisch is, en er ook nieuwe velden kunnen worden aangemaakt wil ik alles wat op een bepaald moment op de pagina staat saven via een array.
Maar... hoe?

Hoe lees ik dit uit?

Iets als: if (isset($_POST['titelnaam'])) {
Maarja... hoe krijg ik het dan bij het juiste ID gesaved?
Heb je al gekeken naar de $.ajax() functie?
Ja, alleen hoe moet de $.ajax() functie de array gaan verzenden? Dat is het lastige punt....
Want hoe roep ik de data aan?
Via POST is het beste:
De data van je formulier kan je opslaan in een geserialiseerd 'pakketje' met:


var formData = $(this).serialize();


En deze property in je $.ajax() functie:

data:formData,


En controleer in je browser met je requests-tabblad van je Inspector-tool wat er gebeurt.

Voor het gemak kan je altijd even een print_r() in je PHP-script gebruiken om te kijken of de array klopt.
Ik heb nu dit geprobeerd, maar dat werkt niet... Ziet iemand waar de fout zit?
Even ter info: er staan meer tekstvelden op de pagina index.php, hoe maak ik dat alleen titelnaam[] en titelfunctie[] wordt doorgestuurd via een array?


    <script>
$(document).ready(function(){
    $("input").blur(function(){
        var formData = $(this).serialize();

   				 $.ajax({
      				 url: "update.php",
       				 type: "POST",
       				 data:formData,
        			alert( "Data Loaded: " + data );
				 });
		
    });
});
</script>
Het ging toch om ALLES in één keer? Dan zou ik liever een submit functie gebruiken. Een 'blur' zou dan een vreemde handeling zijn.
- Ariën - op 28/02/2018 13:47:14

Ik heb geen idee hoe je op die tabellen uitkomt, en waar je leest dat er ID's handmatig worden aangemaakt :-P
Met die velden die hij bedoelt zal hij hopelijk formuliervelden bedoelen, en geen databasevelden.

Misschien kan Daan wat meer vertellen over zijn opzet?


Ahh ik was net wakker en heb volgensmij gelezen wat ik wilde lezen haha. mijn fout.

Voor TopicStarter:
Heb je daadwerkelijk 600 input velden aangemaakt?
Als er 600 items op één pagina staan, en dus twee formulierelementen per item, dan kom je uit boven de 1.000, en overschrijd je de grens van max_input_vars.

Deze is op te schroeven met ini_set, php.ini of .htaccess, maar ik zou er toch onder blijven. Een paginanavigatie zou een mooie oplossing zijn.
- Ariën - op 28/02/2018 15:39:59

Als er 600 items op één pagina staan, en dus twee formulierelementen per item, dan kom je uit boven de 1.000, en overschrijd je de grens van max_input_vars.

Deze is op te schroeven met ini_set, php.ini of .htaccess, maar ik zou er toch onder blijven. Een paginanavigatie zou een mooie oplossing zijn.


Dat wist ik eigenlijk niet. Maar dat limiet is dan per pagina?
Er kunnen maximaal 20 items per pagina aangemaakt worden (dus maximaal 40 tekstvelden).
Dan is het wel mogelijk te werken met blur toch?

Maar hoe zorg ik dan dat onderstaande code werkt op titelnaam[] en titelfunctie[] ?
Dat die in de array komen en doorgestuurd worden?


 <script>
$(document).ready(function(){
    $("input").blur(function(){
        var formData = $(this).serialize();

                    $.ajax({
                       url: "update.php",
                        type: "POST",
                        data:formData,
                    alert( "Data Loaded: " + data );
                 });
        
    });
});
</script>
Daan Vee op 28/02/2018 15:44:36

Er kunnen maximaal 20 items per pagina aangemaakt worden (dus maximaal 40 tekstvelden).
Dan is het wel mogelijk te werken met blur toch?

Maar hoe zorg ik dan dat onderstaande code werkt op titelnaam[] en titelfunctie[] ?
Dat die in de array komen en doorgestuurd worden?


 <script>
$(document).ready(function(){
    $("input").blur(function(){
        var formData = $(this).serialize();

                    $.ajax({
                       url: "update.php",
                        type: "POST",
                        data:formData,
                    alert( "Data Loaded: " + data );
                 });
        
    });
});
</script>



Ik heb geen verstand van ajax en javascript ofzo maar ik denk dat dit net zoals bij PHP met
$_POST["titelfunctie[]"]; gedaan kan worden.
Deze haal je in jouw geval dan op bij update.php

Reageren