Serialize formgegevens en doorsturen via ajax

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Thomas van den Heuvel

Thomas van den Heuvel

04/02/2015 12:59:29
Quote Anchor link
Frank Nietbelangrijk op 04/02/2015 12:53:44:
Normaliseren van de database? Is dat dan niet handiger?
Dat had ik al voorgesteld...

Als debuggen van de interactie PHP - jQuery al voor problemen zorgt is database optimalisatie wellicht ook een ... te "zware opstap".

EDIT: Misschien bestaat er ook een misverstand. Die serialize aan de jQuery kant is enkel het serialiseren voor transport; aan de PHP-kant zijn $_GET en $_POST weer gewoon arrays, en elementen in je formulier die eindigen met [ rechte haken ] zijn gewoon sub-arrays van $_GET / $_POST. Dit werkt dus gewoon als voorheen, dit is niet allemaal automatisch tekst omdat je aan de jQuery kant "serialiseert".
Gewijzigd op 04/02/2015 13:08:34 door Thomas van den Heuvel
 
PHP hulp

PHP hulp

01/05/2024 23:07:50
 
Brecht S

Brecht S

04/02/2015 13:14:04
Quote Anchor link
Thomas van den Heuvel op 03/02/2015 17:08:35:
Persoonlijk zou ik hier een koppeltabel van maken, met in elk record een gebruiker-id - mailiinglijst-id paar, maar dat terzijde.

Bedoelde je hier het normaliseren van de database mee?

Dat het item 2x voorkomt is inderdaad een foutje, maar dat krijg ik er later wel uit.

Ik heb nu de kolom een LONGTEXT gegeven. Maar nog steeds is er niks weggeschreven in de database. Zou het kunnen dat die geen array's kan wegschrijven? Ik zal nu eens proberen met die implode.

Toevoeging op 04/02/2015 13:18:43:

Wat gaat er met de id gebeuren als ik de implode gebruik? Ik serialiseer de hele form ineens vandaar dat ook de ID in de array zit. Die moet er natuurlijk apart uit getrokken worden anders kan hij dit niet opslaan bij een bepaald id in de tabel. Ik denk dat daar de fout zit. Hoe kan ik dit oplossen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
implode (',', '$_POST['mclijst_id']);



Toevoeging op 04/02/2015 13:26:14:

Ik heb even wat testen gedaan met de debugger:
Ik zet dit in mijn test7.php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$test
= implode(',', $_POST['mclijst_id']);
$id = $_POST['id'];

echo '<pre>'.print_r($test, true).'</pre>';
echo '<pre>'.print_r($id, true).'</pre>';
?>


En krijg als resultaat in de debugger:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<pre>ecc391cc90,c8dc2d8fd5,c8dc2d8fd5,ecc391cc90,4f8eacc171</pre><pre>1164</pre>


Nu zien we de id apart staan en de mclijst_id ook.
Gewijzigd op 04/02/2015 13:27:59 door Brecht S
 
Thomas van den Heuvel

Thomas van den Heuvel

04/02/2015 17:34:57
Quote Anchor link
Lees mijn bijgewerkte vorige reactie, misschien heb je de werking van de jQuery functie serialize() verkeerd begrepen.

En ja, als je je geserialiseerde tekst in je database weer uit wilt lezen en het array van ids wilt doorlopen zul je de omgekeerde bewerking (explode()) moeten uitvoeren. Vandaar mijn opmerking over een mogelijk andere aanpak.

Wel zou je die kolom in een IN statement in MySQL kunnen gebruiken, wellicht (mits deze niet leeg is). Dit lijkt mij echter niet optimaal.
 
Brecht S

Brecht S

04/02/2015 19:36:07
Quote Anchor link
Ik heb een mogelijke oplossing gevonden:
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
<script>
      $(function () {
        $('#mc').change(function() {

          var id = <?php echo $_GET['id']; ?>;
        
          var data = $('#form').serializeArray();
          data.push({id: 'id', value: id});

    $.ajax({
            type: 'POST',
            url: 'test7.php',
            data: data,
            //data: $('#form').serialize(),
            success: function (data) {
              //alert(data);
          //alert($('#form').serialize());
            }
          });
          return false;
        });
      });
    </script>


Dit geeft mij wel de juiste resultaten in de database. Zit dit goed in elkaar of kan ik hier nog iets aan verbeteren?
 

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.