dynamic textfield opslaan in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

George mendel

george mendel

08/07/2012 18:00:59
Quote Anchor link
Ik wil de mogelijkheid geven in mijn site om een tekstveld met daarna een Plus te zetten. als men op dat plusje drukt dat er dan een extra tekstveld komt.deze techniek weet ik al. alleen nu wil ik ze kunnen opslaan in de database. hoe kan ik dat het beste doen?

alvast bedankt!
 
PHP hulp

PHP hulp

15/11/2024 02:30:03
 
Wouter J

Wouter J

08/07/2012 18:05:22
Quote Anchor link
Op dezelfde manier als dat je andere velden opslaat, even schemantisch:
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
if (form_send) {
    if (validation) {
        error handling
    }

    if (no_errors) {
        database connection;

        if (connection_fails) {
            error handling
        } else {
            database selection;

            if (selection_fails) {
                error handling;
            } else {
                run INSERT query;

                if (query_fails) {
                   error handling;
                } else {
                   if (no_rows_inserted) {
                       error handling;
                   } else {
                       success message;
                   }
                }
            }
        }
    }
}
Gewijzigd op 08/07/2012 18:06:03 door Wouter J
 
George mendel

george mendel

11/07/2012 09:33:11
Quote Anchor link
is daar een tutorial voor?
 
Kris Peeters

Kris Peeters

11/07/2012 11:54:31
Quote Anchor link
George mendel op 08/07/2012 18:00:59:
... alleen nu wil ik ze kunnen opslaan in de database.


Dus op voorhand weet je niet hoeveel <input>'s in de DB komen (nu ja ... de data).

Dus twee problemen:
1) de juiste name geven en die opvangen op de server
2) normaliseren van de database.

Wat 1) btreft.
bv. We vullen een profielpagina in, het gaat om meerdere e-mailadressen.

Dan doe je zoiets:

<input name="email[]">

Je kan meerdere van deze identieke elementen maken.
Op server-niveau komt dit in een array.

$_POST['email'] is dus een array en je kan die bv. in een foreach steken.

2) Hier problemen mee?
Aangezien je niet weet hoeveel resultaten je kan verwachten, zet je de e-mailadressen in een aparte tabel. In die tabel zet je een referentie van de user, die aan dit adres zijn gekoppeld.

Dat wordt dan iets als dit:
(stel, we hebben de id van de user: $id)
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
<?php
...
  $i=0;
  foreach ($_POST['email'] as $key=>$mail) {
    if ($i === 0) {
      $sql = "INSERT INTO emails (user_id, email) VALUES " . PHP_EOL;  // eerste iteratie
    }
    else {
      $sql .= "," . PHP_EOL;  // dit zet een komma tussen elk record.  
    }
    $sql .= "('" . (int) $id . "', '" . mysql_real_escape_string($mail) . "')";
    $i++;
  }
  ...

?>


Ben je daar iets mee?
Gewijzigd op 11/07/2012 12:11:07 door Kris Peeters
 
- SanThe -

- SanThe -

11/07/2012 12:09:53
Quote Anchor link
@Kris: Je mist de $i++; regel.
 
Kris Peeters

Kris Peeters

11/07/2012 12:10:51
Quote Anchor link
oops, aangepast.
Gewijzigd op 11/07/2012 12:11:37 door Kris Peeters
 
George mendel

george mendel

11/07/2012 22:25:18
Quote Anchor link
Bedankt! ik heb deze tutorial op internet gevonden. misschien handig voor andere leden. http://www.web-design-talk.co.uk/58/adding-unlimited-form-fields-with-jquery-mysql/
 



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.