Datum naar mysql uploaden

Status
Niet open voor verdere reacties.

EvertW

Gebruiker
Lid geworden
29 jan 2013
Berichten
43
PHP:
<html>
<head>
</head>
<body>
<?php
if(isset($_POST['add']))
{
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'root';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
$date = date('d/m/Y');
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}

if(! get_magic_quotes_gpc() )
{
   $title = addslashes ($_POST['title']);
   $content = addslashes ($_POST['content']); 
}
else
{
   $title = $_POST['title'];
   $content = $_POST['content']; 
}

$sql = "INSERT INTO posts ".
       "(username,title,content,date) ".
       "VALUES('1','$title','$content','$date')";
mysql_select_db('admin');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfully\n";
mysql_close($conn);
}
else
{
?>
<form method="post" action="<?php $_PHP_SELF ?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">Titel</td>
<td><input name="title" type="text" id="$title"></td>
</tr>
<tr>
<td width="100">Content</td>
<td><input name="content" type="text" id="$content"></td>
</tr>
<td>
<input name="add" type="submit" id="add" value="Voeg toe">
</td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
Ik wil graag dat als ik op "Voeg toe" klik de datum word verzonden naar de database en als ik die op mijn website kan tonen als datum waarop ik mijn berricht heb gepost. Dit heb ik nu maar hij blijft maar de datum 1 januari 1970 aangeven. Iemand sugesties?
 
Laatst bewerkt door een moderator:
Wat voor type veld is "date" in je tabel? TIMESTAMP, DATE of VARCHAR?

1 januari 1970: http://en.wikipedia.org/wiki/Unix_time

Verder is de enige juiste manier om een formulier af te handelen deze:
PHP:
if( 'POST' == $_SERVER['REQUEST_METHOD'] )
{
    // Formulier afhandelen
}
else
{
    // Formulier tonen
}

En als je een formulier op dezelfde pagina afhandelt kun je gewoon het action-attribuut van een <form> leeg laten :)
Volgens mij is PHP_SELF zelfs onbetrouwbaar
 
Ik heb het ingesteld als "Date" maar dit kan ik ook nog veranderen. Het word op een andere pagina getoond namelijk blog.php die verbinding met de mysql server maakt en de content titel en datum opvraagt alleen de datum toont dus niet. Zou je mischien de code willen veranderen in $sql en $date zodat hij zou werken.

PS. Ik ben net nieuw in PHP ik ben gister begonnen.
 
Verander $date eens naar
PHP:
$date = date( 'Y-m-d' );

Dat is namelijk het formaat dat bij een DATE-type hoort :)

String and Numeric Literals in Date and Time Context. MySQL recognizes DATE values in these formats:

  • As a string in either 'YYYY-MM-DD' or 'YY-MM-DD' format. A “relaxed” syntax is permitted: Any punctuation character may be used as the delimiter between date parts. For example, '2012-12-31', '2012/12/31', '2012^12^31', and '2012@12@31' are equivalent.
  • As a string with no delimiters in either 'YYYYMMDD' or 'YYMMDD' format, provided that the string makes sense as a date. For example, '20070523' and '070523' are interpreted as '2007-05-23', but '071332' is illegal (it has nonsensical month and day parts) and becomes '0000-00-00'.
  • As a number in either YYYYMMDD or YYMMDD format, provided that the number makes sense as a date. For example, 19830905 and 830905 are interpreted as '1983-09-05'.
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html

Voor het opvragen uit de database kun je dit dan doen:

[sql]
SELECT
*,
DATE_FORMAT(date, '%d/%m%Y') AS date_formatted
FROM
posts
[/sql]
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
 
Bedankt. Ik heb de fout inmiddels gevonden, hij zat in blog.php. Dit is de goede code geworden:
<p>Datum:
<?php
echo date($row['date']);
?></p>
 
Dat lijkt mij sterk, de date()-functie verwacht als eerste parameter een string welke het formaat aangeeft.
Code:
string [B]date[/B] ( string [I]$format[/I] [, int [I]$timestamp[/I] = time() ] )
Daar kan geen datum in staan.

PS: PHP-tags kun je krijgen door
PHP:
je code
te doen ;)
 
Inderdaad het werkt niet meer...
Het is voor een blog mischien is dat handig om te weten, en ik schrijf het uit een andere pagina dan waar hij getoond wordt.
 
Als je van het "date"-veld een type TIMESTAMP maakt dan kun je in je INSERT-query "NOW()" gebruiken.
[SQL]
INSERT INTO posts (
username,
title,
content,
date
) VALUES (
'1',
'$title',
'$content',
NOW()
);[/SQL]

Op die manier komen de datum en tijd in het veld op het moment van opslaan.
Dit is in het formaat YYYY-MM-DD HH:MM:SS, die kun je bij het opvragen dan weer naar het gewenste formaat veranderen door de MySQL-functie DATE_FORMAT() te gebruiken in je SELECT.

Overigens vermoed ik dat je onder het veld "username" de ID van de gebruiker opslaat, ik kan me niet voorstellen dat een username "1" is :)
Zorg er dan ook voor dat je database-structuur duidelijk is, dus het veld "username" hernoemen naar "user_id" (of "userID", wat jouw voorkeur heeft) en het type aanpassen naar een INT.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan