regel opdelen en opslaan in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Davey Mat

Davey Mat

05/06/2013 18:51:06
Quote Anchor link
Hallo,

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
 
PHP hulp

PHP hulp

22/11/2024 22:08:45
 
Erwin H

Erwin H

05/06/2013 19:16:59
Quote Anchor link
explode, trim en dan nog even de datum correct formateren voor mysql.
 
Davey Mat

Davey Mat

05/06/2013 20:00:03
Quote Anchor link
Bedankt!

Ik heb nu dit gemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$datums = $_POST['pre-select-dates'];
        $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
 
Erwin H

Erwin H

05/06/2013 20:04:38
Quote Anchor link
Waarom zou je in godsnaam eerst de komma's vervangen door spaties, om dan op spaties te gaan exploden. Dat kan je toch gewoon op komma's doen....?

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT INTO een_tabel(een_datum_kolom)
VALUES('2013-06-04'),('2013-06-18'),('2013-07-18');
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/06/2013 20:18:14
Quote Anchor link
Wat korter:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>

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
 
Erwin H

Erwin H

05/06/2013 20:23:41
Quote Anchor link
Enige is dat hij nog wel even het formaat van de datum moet omtoveren van 04-06-2013 naar 2013-06-04
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/06/2013 20:30:04
Quote Anchor link
Maar natuurlijk, zal het ff aanpassen.
 
Davey Mat

Davey Mat

05/06/2013 20:30:38
Quote Anchor link
Bedankt Erwin,

Ja was ook niet erg slim, heb het veranderd.
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
<?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>";
}

?>


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)
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
<?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>";
?>

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
 



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.