Array opslaan

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

- Ariën  -
Beheerder

- Ariën -

28/02/2018 15:51:54
Quote Anchor link
Wat wil je nu eigenlijk? Alles met één knop opslaan? Of per item een save-knop aanbieden?
 
PHP hulp

PHP hulp

10/01/2025 20:57:14
 
Daan Vee

Daan Vee

28/02/2018 16:16:05
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
   <script>
$(document).ready(function(){
    $("input").blur(function(){
        alert("This input field has lost its focus.");
    });
});
</script>
 
Thomas van den Heuvel

Thomas van den Heuvel

28/02/2018 16:17:22
Quote Anchor link
Dus als je één entry wijzigt POST je alles naar je verwerkscript? :/

Dit klinkt trouwens als een dubbel topic. Je bent daar praktisch hetzelfde aan het bespreken.

Orden je gedachten en je topics eens :p.
 
Jasper Schellekens

Jasper Schellekens

28/02/2018 16:20:37
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
   <script>
$(document).ready(function(){
    $("input").blur(function(){
        alert("This input field has lost its focus.");
    });
});
</script>


Probeer dit eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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.");
    });
});

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
 
- Ariën  -
Beheerder

- Ariën -

28/02/2018 16:21:16
Quote Anchor link
Dan zou je elk item eerst een eigen form-blok in HTML moeten geven. Als ik mij niet vergis hoef je nu enkel de $.ajax() functie met de serialize functie kunnen toepassen.

@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 -
 
Daan Vee

Daan Vee

28/02/2018 16:38:13
Quote Anchor link
Hoe lees ik in update.php de array uit? Aangezien elke regel een andere naam (met ID) heeft...

titelnaam[ID]
titelfunctie[ID]

$_POST[titelnaam] werkt dan toch niet?
 
- Ariën  -
Beheerder

- Ariën -

28/02/2018 16:44:41
Quote Anchor link
Kijk eerst maar naar je $_POST global met print_r().
 
Daan Vee

Daan Vee

28/02/2018 17:40:20
Quote Anchor link
De array komt door in update.php.

$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?
 
- Ariën  -
Beheerder

- Ariën -

28/02/2018 17:57:32
Quote Anchor link
Wat zegt je print_r nu precies in je PHP-script?
 
Jan Koehoorn

Jan Koehoorn

28/02/2018 18:28:38
Quote Anchor link
Als je het zo doet:

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
<!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>


ajax.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo '<pre>';
print_r($_GET);
echo '</pre>';
?>


dan zie je na een JavaScript "blur" event deze output in (bijvoorbeeld) Chrome developer:
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
<pre>Array
(
    [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.
 
- Ariën  -
Beheerder

- Ariën -

28/02/2018 18:36:36
Quote Anchor link
Ik vraag mij af of het niet wenselijker zou zijn om je array te sorteren op de ID-nummers i.p.v. op de titelnaam en de titelfunctie?

Dan zou ik eerder zoiets gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;">


Dan kan je nog makkelijker je array uitlezen en je data ophalen.
 
Daan Vee

Daan Vee

01/03/2018 06:59:54
Quote Anchor link
Maar een heel concrete vraag, want dan ben ik er.
Als ik deze code gebruik Arien:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;">


Hoe lees de array dan uit?

Met andere woorden: ik moet geloof ik zoiets maken, maar hoe?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$array = array($_POST['titel']);
foreach($array as $key => $waarde) {
   // hier alles de database in...?
}
 
- Ariën  -
Beheerder

- Ariën -

01/03/2018 08:47:15
Quote Anchor link
Klopt. Let op dat waarde dan een array is!
Met print_r() kan je deze ter debugging bekijken.
Gewijzigd op 01/03/2018 09:45:33 door - Ariën -
 
Daan Vee

Daan Vee

01/03/2018 10:48:41
Quote Anchor link
Je bedoelt het volgende?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$waarde = array($_POST['titel']);
foreach($array as $key => $waarde) {
   // hier alles de database in...?
}
 
- Ariën  -
Beheerder

- Ariën -

01/03/2018 11:29:11
Quote Anchor link
Nee, je $waarde in je foreach zelf is een array op zich, die dan de elementen naam en functie bevat.
Gewijzigd op 01/03/2018 11:29:28 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

01/03/2018 15:46:35
Quote Anchor link
Als je slechts per keer één naam/functie paar door wilt geven kun je ook prima selectief zijn in de informatie die je doorgeeft. Je geeft dan enkel een id, naam en titel door. Dit kun je bereiken door niet heel $_POST over de schutting te gooien, maar bijvoorbeeld door de velden-van-interesse te bundelen door middel van een HTML element (bijvoorbeeld een span), of op grond van id's de informatie er uit te peuteren.

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
 
Daan Vee

Daan Vee

02/03/2018 09:25:33
Quote Anchor link
Thanks werkt.
 
Thomas van den Heuvel

Thomas van den Heuvel

02/03/2018 16:00:21
Quote Anchor link
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.
 

Pagina: « vorige 1 2



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.