regel opdelen en opslaan in database
Ik heb een formulier waar personen verschillende datums kunnen invullen.
Bij het verzenden wil ik deze datums in een database zetten. Echter,
ik heb nu een probleem.
Deze data word aan elkaar geschreven. Zo krijg ik bijvoorbeeld 04-06-2013,18-06-2013,18-07-2013.
Hoe kan ik deze data scheiden van elkaar zonder de "," en ieder apart in een database plaatsen?
mvg,
Davey Mat
Ik heb nu dit gemaakt:
Code (php)
1
2
3
4
5
2
3
4
5
$datums = $_POST['pre-select-dates'];
$komma = ",";
$spatie = " ";
$zonderkommas = str_replace($komma, $spatie, $datums);
print_r(explode(' ', $zonderkommas, -1));
$komma = ",";
$spatie = " ";
$zonderkommas = str_replace($komma, $spatie, $datums);
print_r(explode(' ', $zonderkommas, -1));
Nu alleen nog het opslaan van de losse data. Hoe kan ik dit doen?
mvg
Uit de explode komt vervolgens een array waar je gewoon met de gebruikelijke loopjes doorheen kan lopen (foreach etc.). Invoeren in de database zal je neem ik aan gewoon met een INSERT statement willen, waarbij je meerdere records tegelijk in kan voeren via:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$datums_array = explode(',', $_POST['pre-select-dates']);
$insert_values = array();
foreach ($datums_array as $datum) {
$insert_values[] = "(STR_TO_DATE('%Y-%m-%d', '" . $datum . "'),'" . $_POST['name'] . "')";
}
$sql = "INSERT INTO tabelletje (datum, naam)
VALUES " . implode(',', $insert_values);
?>
$datums_array = explode(',', $_POST['pre-select-dates']);
$insert_values = array();
foreach ($datums_array as $datum) {
$insert_values[] = "(STR_TO_DATE('%Y-%m-%d', '" . $datum . "'),'" . $_POST['name'] . "')";
}
$sql = "INSERT INTO tabelletje (datum, naam)
VALUES " . implode(',', $insert_values);
?>
Wel even sql injectie voorkomen, maar om je een idee te geven.
Toevoeging op 05/06/2013 20:20:39:
Sorry Erwin, had jouw reactie niet gezien: maw wat uitgebreider
Gewijzigd op 05/06/2013 20:33:24 door Ger van Steenderen
Enige is dat hij nog wel even het formaat van de datum moet omtoveren van 04-06-2013 naar 2013-06-04
Maar natuurlijk, zal het ff aanpassen.
Ja was ook niet erg slim, heb het veranderd.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
define('INCLUDE_CHECK',true);
require 'inc/connect.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') { //kijken of het formulier gepost is
$commentaar = mysql_real_escape_string($_POST['commentaar']);
$datums = mysql_real_escape_string($_POST['pre-select-dates']);
$a = explode(',', $datums);
foreach ($a as $v) {
mysql_query ("INSERT INTO test (datum) VALUES ('". $v ."')") or die (mysql_error());
echo "$v<br>";
}
echo "$commentaar<br>";
}
?>
define('INCLUDE_CHECK',true);
require 'inc/connect.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') { //kijken of het formulier gepost is
$commentaar = mysql_real_escape_string($_POST['commentaar']);
$datums = mysql_real_escape_string($_POST['pre-select-dates']);
$a = explode(',', $datums);
foreach ($a as $v) {
mysql_query ("INSERT INTO test (datum) VALUES ('". $v ."')") or die (mysql_error());
echo "$v<br>";
}
echo "$commentaar<br>";
}
?>
Ik wil nu de datums aan 1 id o.i.d. koppelen zodat ik weet dat deze datums bij elkaar horen. Iemand enige tips hiervoor?
mvg
Toevoeging op 05/06/2013 22:26:16:
Heb het nu werkend gekregen. De code van Ger van Steenderen werkte bij mij niet dus heb het iets anders:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
define('INCLUDE_CHECK',true);
require 'inc/connect.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') { //kijken of het formulier gepost is
$commentaar = mysql_real_escape_string($_POST['commentaar']);
$datums = mysql_real_escape_string($_POST['pre-select-dates']);
$a = explode(',', $datums);
foreach ($a as $v) {
mysql_query ("INSERT INTO test (datum,naamid) VALUES ('". $v ."','". $_SESSION['id'] ."')") or die (mysql_error());
echo "$v<br>";
}
}
echo "$commentaar<br>";
?>
define('INCLUDE_CHECK',true);
require 'inc/connect.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') { //kijken of het formulier gepost is
$commentaar = mysql_real_escape_string($_POST['commentaar']);
$datums = mysql_real_escape_string($_POST['pre-select-dates']);
$a = explode(',', $datums);
foreach ($a as $v) {
mysql_query ("INSERT INTO test (datum,naamid) VALUES ('". $v ."','". $_SESSION['id'] ."')") or die (mysql_error());
echo "$v<br>";
}
}
echo "$commentaar<br>";
?>
koppelen van de datums doe ik dmv een timestamp.
Bedankt voor de hulp!
Toevoeging op 05/06/2013 22:53:53:
Ik heb trouwens de output van de datum veranderd zodat ik yy-mm-dd krijg ipv dd-mm-yy ivm makkelijk opslaan in database.
Gewijzigd op 05/06/2013 22:27:24 door Davey Mat