dynamic textfield opslaan in database
alvast bedankt!
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.
Gewijzigd op 11/07/2012 12:11:37 door Kris Peeters