Array opslaan
Wat wil je nu eigenlijk? Alles met één knop opslaan? Of per item een save-knop aanbieden?
Als dat niet mogelijk is dan het liefst een save-knop.
Dit klinkt trouwens als een dubbel topic. Je bent daar praktisch hetzelfde aan het bespreken.
Orden je gedachten en je topics eens :p.
Daan Vee op 28/02/2018 16:16:05:
Geen save-knop, maar met de onderstaande blur, die ik eerder liet zien alle velden versturen in een array.
Als dat niet mogelijk is dan het liefst een save-knop.
Als dat niet mogelijk is dan het liefst een save-knop.
Probeer dit eens:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
$(document).ready(function(){
$("input").blur(function(){
type: "POST",
url: "script.php",
alert("This input field has lost its focus.");
});
});
$("input").blur(function(){
type: "POST",
url: "script.php",
alert("This input field has lost its focus.");
});
});
Als ik mij niet vergis stuurt hij hem dan door naar script.php en daar kan je hem ophalen met $_POST
Gewijzigd op 28/02/2018 16:21:03 door Jasper Schellekens
@Jasper: Kijk toch eens goed naar je code. Hoe wil jij met een blur() (!!!) meteen een AJAX-request uitvoeren? Dit klopt niet!
Gewijzigd op 28/02/2018 16:24:15 door - Ariën -
titelnaam[ID]
titelfunctie[ID]
$_POST[titelnaam] werkt dan toch niet?
Kijk eerst maar naar je $_POST global met print_r().
$titel = implode(',', $_POST['titelnaam']);
Dat geeft alle ingevulde titels gescheiden door een comma.
Hoe krijg ik ook het ID erbij te zien in een array?
Wat zegt je print_r nu precies in je PHP-script?
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
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
<!DOCTYPE html>
<html>
<head>
<title>PHPHulp</title>
<style type="text/css">
body { font: 12px Monaco; color: #999; }
input { font-family: inherit; }
</style>
</head>
<body>
<div class="feedback"></div>
<form class="my-form" method="post" accept-charset="UTF-8">
<input id="618" type="text" name="titelnaam[618]" value="" placeholder="Naam" class="form-control" style="width:200px;">
<input type="text" id="618" name="titelfunctie[618]" value="" placeholder="Functie" class="form-control" style="width:200px;">
<br>
<input id="619" type="text" name="titelnaam[619]" value="" placeholder="Naam" class="form-control" style="width:200px;">
<input type="text" id="619" name="titelfunctie[619]" value="" placeholder="Functie" class="form-control" style="width:200px;">
<br>
<input id="620" type="text" name="titelnaam[620]" value="" placeholder="Naam" class="form-control" style="width:200px;">
<input type="text" id="620" name="titelfunctie[620]" value="" placeholder="Functie" class="form-control" style="width:200px;">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
'use strict';
var $form = $('.my-form');
var $feedback = $('.feedback');
$(function(){
$(document).on('blur', 'input', function(){
var data = $form.serialize();
$.ajax({
data: data,
url: 'ajax.php'
});
});
});
</script>
</body>
</html>
<html>
<head>
<title>PHPHulp</title>
<style type="text/css">
body { font: 12px Monaco; color: #999; }
input { font-family: inherit; }
</style>
</head>
<body>
<div class="feedback"></div>
<form class="my-form" method="post" accept-charset="UTF-8">
<input id="618" type="text" name="titelnaam[618]" value="" placeholder="Naam" class="form-control" style="width:200px;">
<input type="text" id="618" name="titelfunctie[618]" value="" placeholder="Functie" class="form-control" style="width:200px;">
<br>
<input id="619" type="text" name="titelnaam[619]" value="" placeholder="Naam" class="form-control" style="width:200px;">
<input type="text" id="619" name="titelfunctie[619]" value="" placeholder="Functie" class="form-control" style="width:200px;">
<br>
<input id="620" type="text" name="titelnaam[620]" value="" placeholder="Naam" class="form-control" style="width:200px;">
<input type="text" id="620" name="titelfunctie[620]" value="" placeholder="Functie" class="form-control" style="width:200px;">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
'use strict';
var $form = $('.my-form');
var $feedback = $('.feedback');
$(function(){
$(document).on('blur', 'input', function(){
var data = $form.serialize();
$.ajax({
data: data,
url: 'ajax.php'
});
});
});
</script>
</body>
</html>
ajax.php:
dan zie je na een JavaScript "blur" event deze output in (bijvoorbeeld) Chrome developer:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<pre>Array
(
[titelnaam] => Array
(
[618] => Jan
[619] =>
[620] =>
)
[titelfunctie] => Array
(
[618] => Webdeveloper
[619] =>
[620] =>
)
)
</pre>
(
[titelnaam] => Array
(
[618] => Jan
[619] =>
[620] =>
)
[titelfunctie] => Array
(
[618] => Webdeveloper
[619] =>
[620] =>
)
)
</pre>
Door dus de id's binnen de brackets te plaatsen (zoals eerder gesuggereerd) krijg je in ajax.php een keurige array met het id als key, zodat je hem vervolgens kunt verwerken.
Dan zou ik eerder zoiets gebruiken:
Code (php)
1
2
2
<input id="618" type="text" name="titel[618]['naam']" value="" placeholder="Naam" class="form-control" style="width:200px;">
<input type="text" id="618" name="titel[618]['functie']" value="" placeholder="Functie" class="form-control" style="width:200px;">
<input type="text" id="618" name="titel[618]['functie']" value="" placeholder="Functie" class="form-control" style="width:200px;">
Dan kan je nog makkelijker je array uitlezen en je data ophalen.
Als ik deze code gebruik Arien:
Code (php)
1
2
2
<input id="618" type="text" name="titel[618]['naam']" value="" placeholder="Naam" class="form-control" style="width:200px;">
<input type="text" id="618" name="titel[618]['functie']" value="" placeholder="Functie" class="form-control" style="width:200px;">
<input type="text" id="618" name="titel[618]['functie']" value="" placeholder="Functie" class="form-control" style="width:200px;">
Hoe lees de array dan uit?
Met andere woorden: ik moet geloof ik zoiets maken, maar hoe?
Met print_r() kan je deze ter debugging bekijken.
Gewijzigd op 01/03/2018 09:45:33 door - Ariën -
Gewijzigd op 01/03/2018 11:29:28 door - Ariën -
Beide strategieën zijn vrij makkelijk te implementeren met behulp van jQuery, maar wen er vast aan dat er veel kan met jQuery, maar dat je dan wel even (zelf) moet (uit)zoeken hoe je dit voor elkaar krijgt.
Maar eerst moet je weten wat je wilt. Welke informatie wil je doorgeven op welk moment? De naam en functie apart als hier iets in verandert, of allebei, of alles, of wat?
Ook zou ik het wat anders aanpakken dan met een blur, zoals ik al in de andere thread heb beschreven.
Gewijzigd op 01/03/2018 15:48:02 door Thomas van den Heuvel
Thanks werkt.
Misschien wil je de kijkers thuis ook even uitleggen hoe je het uiteindelijk opgelost hebt, zodat zij hier ook iets van kunnen leren. Het idee van een forum/community is dat je (op den duur) ook iets teruggeeft in plaats van alleen maar de informatie afhaalt en zelf vrolijk verder gaat.