Datum wegschrijven
Zo wordt dit weggeschreven, waarbij de datum en wijze waarop het weggescchreven moet worden niet overeenkomen. Bij het echoën zie ik
INSERT INTO berichten (Datum, Bericht) VALUES DATE_FORMAT(23-02-2012, '%Y-%m-%d'), 'Dit betreft een test'
Zo moet dit worden
INSERT INTO berichten (Datum, Bericht) VALUES 2012-02-23, 'Dit betreft een test'
Ben er nu ff een middag mee bezig geweest en items opgezocht, maar helaas het lukt mij niet.
moeten gebruiken in je query.
Hier mee krijg je de huidige datum in je database en zou je in de toekomst er ook meer mee kunnen. Hier heb je wel een database veld voor nodig met datetime als instelling.
Verder nog even een tip.
Gebruik wel een goede foutafhandeling en kijk ook nog even naar SQL-Injection.
Want daar is deze query niet tegen beveiligt.
Gewijzigd op 24/02/2012 21:42:22 door Frank WD
Het is ook maar een voorbeeld.
@Nick
Bedankt met enige aanpassing werkt het.
Toevoeging op 25/02/2012 14:24:46:
Och, nee, ben te vroeg met juichen.
Ik wil dat de $datum weggeschreven wordt als 2012-03-03, alleen hoe koppel je dit aan dan elkaar?
Zoals ik al zij gebruik:
Bij het weg schrijven van een datum.
Dan kun je bij de select query met de date_format alleen de datum er uit halen.
dit werkt vele malen makelijke en in toekomst kun je er meer mee bij eventueel uitbreiding
Gewijzigd op 25/02/2012 14:40:07 door Frank WD
Begrijp het wel. Is wat makkelijk.
Alleen mensen plaatsen een bericht misschien wel een paar dagen later.
Terwijl het bericht de datum moet hebben van de gebeurtenis.
Waar komt $datum vandaan?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
if ( isset ($_GET['p']) && $_GET['p'] == 'addberichtsql' ) { // schrijf bericht wel weg
//===============nieuw bericht aanmaken
$datum = trim($_POST['Datum']);
$bericht = trim($_POST['Bericht']);
$good = true;
if ( empty($datum) ) {
$good = false;
echo 'U moet een datum invullen voor een bericht !'.PHP_EOL;
echo '<br />'.PHP_EOL;
}
if ( strlen(trim($_POST['Bericht'])) < 5 ) {
$good = false;
echo 'Uw onderwerp moet minstens vijf karakters bevatten'.PHP_EOL;
echo '<br />'.PHP_EOL;
}
if ( empty($bericht) ) {
$good = false;
echo 'U moet een tekst invullen!'.PHP_EOL;
echo '<br />'.PHP_EOL;
}
if ( $good == false ) {
goback(); // Deze zorgt voor de regel waarbij de mensen via javascript 1 regel kunnen teruggaan.
} else {
if ($good == true ) {
if (isset ($_POST['datum'])) {
$datum = mysql_real_escape_string($_POST['datum']);
}
if (isset ($_POST['bericht'])) {
$bericht = mysql_real_escape_string($_POST['bericht']);
}
$sql = "INSERT INTO berichten";
$sql .= " ( datum , bericht )";
$sql .= " VALUES";
$sql .= " ( date_format('%Y-%m-%d','".$datum."') ,'".$bericht."' );";
$result = mysql_query( $sql );
//echo $datum;
if ( $result ) {
echo 'Het bericht is opgenomen in onze database'.PHP_EOL;
echo '<br /><hr />'.PHP_EOL;
echo '<a href="'.berichten.'?p=addberichtform" title="Voeg nog
een bericht toe" class="formleft">Voeg nog een bericht toe</a>'.PHP_EOL;
echo '<br />'.PHP_EOL;
echo '<a href="'.berichten.'" title="Terug naar overzicht berichten" class="formleft">Terug naar berichten overzicht</a>'.PHP_EOL;
}
} else {
echo 'Sorry, onverwachte fout met de database bij opnemen van een bericht.'.PHP_EOL;
}
}
[/CODE]
//===============nieuw bericht aanmaken
$datum = trim($_POST['Datum']);
$bericht = trim($_POST['Bericht']);
$good = true;
if ( empty($datum) ) {
$good = false;
echo 'U moet een datum invullen voor een bericht !'.PHP_EOL;
echo '<br />'.PHP_EOL;
}
if ( strlen(trim($_POST['Bericht'])) < 5 ) {
$good = false;
echo 'Uw onderwerp moet minstens vijf karakters bevatten'.PHP_EOL;
echo '<br />'.PHP_EOL;
}
if ( empty($bericht) ) {
$good = false;
echo 'U moet een tekst invullen!'.PHP_EOL;
echo '<br />'.PHP_EOL;
}
if ( $good == false ) {
goback(); // Deze zorgt voor de regel waarbij de mensen via javascript 1 regel kunnen teruggaan.
} else {
if ($good == true ) {
if (isset ($_POST['datum'])) {
$datum = mysql_real_escape_string($_POST['datum']);
}
if (isset ($_POST['bericht'])) {
$bericht = mysql_real_escape_string($_POST['bericht']);
}
$sql = "INSERT INTO berichten";
$sql .= " ( datum , bericht )";
$sql .= " VALUES";
$sql .= " ( date_format('%Y-%m-%d','".$datum."') ,'".$bericht."' );";
$result = mysql_query( $sql );
//echo $datum;
if ( $result ) {
echo 'Het bericht is opgenomen in onze database'.PHP_EOL;
echo '<br /><hr />'.PHP_EOL;
echo '<a href="'.berichten.'?p=addberichtform" title="Voeg nog
een bericht toe" class="formleft">Voeg nog een bericht toe</a>'.PHP_EOL;
echo '<br />'.PHP_EOL;
echo '<a href="'.berichten.'" title="Terug naar overzicht berichten" class="formleft">Terug naar berichten overzicht</a>'.PHP_EOL;
}
} else {
echo 'Sorry, onverwachte fout met de database bij opnemen van een bericht.'.PHP_EOL;
}
}
[/CODE]
$datum = trim($_POST['Datum']);
en later if (isset ($_POST['datum'])) ?
$bericht en $_POST['bericht'] gebruik je ook door elkaar.
Gebruik de invoer zoals je die krijgt (in dit geval dus de $_POST gegevens) en beveilig pas bij invoer in de database.
empty is in dit geval geen goede manier om iets te controleren, gebruik idd isset.
Ik zie in bovenstaande nog steeds niet waar datum vandaan komt. Uit een formulier, maar hoe wordt het daar ingevoerd? Via een datumprikker, als invoer? Waar is de controle of er wel een datum is ingevoerd (en niet bv 30-2-2012)?
Lees de handleiding van DATE_FORMAT eens goed door. Je gebruikt het verkeerd.
Dat heb je er natuurlijk in je openings topic niet over gehad.
Daarom verwees ik ook door na de NOW() optie.
Controle datum moet ik nog wel aanbrengen, maar ik probeer eerst of ik iets
op de weg kan schrijven.
@Frank
Sorry voor dat.
@SanThe
Ben al heel de morgen mee bezig, maar zie het ff niet
Gewijzigd op 25/02/2012 15:52:22 door Willem L
- SanThe - op 25/02/2012 15:44:32:
Lees de handleiding van DATE_FORMAT eens goed door. Je gebruikt het verkeerd.
Correctie: Ik denk dat DATE_FORMAT de verkeerde functie is voor wat jij wilt doen. Kijk eens naar STR_TO_DATE.
Gewijzigd op 25/02/2012 16:34:00 door - SanThe -
Dit zowel met date_format als met str_to_date.
date_format('%Y %m %d','".$datum."'
Zie wel een datum staan, niet in de juiste notatie als hierboven, maar ook %Y %m %d als ik de sql echoëd
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$datum = '22-03-2012';
$test = "INSERT into test SET datum = STR_TO_DATE('".$datum."','%d-%m-%Y')";
echo $test;
?>
$datum = '22-03-2012';
$test = "INSERT into test SET datum = STR_TO_DATE('".$datum."','%d-%m-%Y')";
echo $test;
?>
Als ik de echo van $test direct in php-admin uitvoer, krijg ik netjes de datum opgeslagen in de tabel.
Pas ik mijn SQL aan dan staat bij de SQL het zelfde, krijg alleen geen 1 terug
Ik moet jullie een pluim geven voor jullie geduld en uitleg
Werkt nu wel, vergeten haakjes te zetten.
Bij deze hartelijk dank, weer wat bijgeleerd.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
//$sql = "INSERT into berichten SET datum = STR_TO_DATE('".$datum."','%d-%m-%Y')";
//echo $test; //werkend
$sql = "INSERT INTO berichten";
$sql .= " datum, bericht "
$sql .= " VALUES";
$sql .= " STR_TO_DATE('".$datum."','%Y-%m-%d'), '".$bericht."'";
$result = mysql_query( $sql ); // geen 1 terug
[/CODE]
//echo $test; //werkend
$sql = "INSERT INTO berichten";
$sql .= " datum, bericht "
$sql .= " VALUES";
$sql .= " STR_TO_DATE('".$datum."','%Y-%m-%d'), '".$bericht."'";
$result = mysql_query( $sql ); // geen 1 terug
[/CODE]
Gewijzigd op 26/02/2012 11:39:13 door Willem L