dynamic textfield opslaan in database
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!
alvast bedankt!
Op dezelfde manier als dat je andere velden opslaat, even schemantisch:
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
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;
}
}
}
}
}
}
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
is daar een tutorial voor?
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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++;
}
...
?>
...
$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
@Kris: Je mist de $i++; regel.
oops, aangepast.
Gewijzigd op 11/07/2012 12:11:37 door Kris Peeters
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/




