Datum weergeven
Dit stuurt de gevens naar de database:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
include('globals.php');
if ($submit == 'Registreren')
{
$naam = $_POST['naam'];
$datum = time();
$begin = $_POST['begin'];
$laatste = $_POST['laatste'];
$query = "INSERT INTO facturen (naam, datum, begin, laatste)
VALUES('$naam','$datum','$begin','$laatste')";
mysql_query($query) or die(mysql_error());
header("Location: overzicht.php");
}
?>
include('globals.php');
if ($submit == 'Registreren')
{
$naam = $_POST['naam'];
$datum = time();
$begin = $_POST['begin'];
$laatste = $_POST['laatste'];
$query = "INSERT INTO facturen (naam, datum, begin, laatste)
VALUES('$naam','$datum','$begin','$laatste')";
mysql_query($query) or die(mysql_error());
header("Location: overzicht.php");
}
?>
Mijn datum veld is van het type varchar, dus mijn datum staat daar als 1258047436 in.
Op mijn overzichtpagina toon ik alles zo:
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
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
<?
$query = "SELECT * FROM facturen ORDER BY id ASC";
$result = mysql_query($query) or die(mysql_error());
while ($rr = mysql_fetch_array($result))
{
$naam = $rr['naam'];
$datum = $rr['datum'];
$begin = $rr['begin'];
$laatste = $rr['laatste'];
extract ($rr)
?>
<tr>
<td><? echo $naam ?></td>
<td><? echo strftime("%d-%m-%Y",$datum); ?></td>
<td><? echo $begin ?></td>
<td><? echo $laatste ?></td>
<td><? echo $laatste - $begin +1 ?></td>
</tr>
<?
}
?>
$query = "SELECT * FROM facturen ORDER BY id ASC";
$result = mysql_query($query) or die(mysql_error());
while ($rr = mysql_fetch_array($result))
{
$naam = $rr['naam'];
$datum = $rr['datum'];
$begin = $rr['begin'];
$laatste = $rr['laatste'];
extract ($rr)
?>
<tr>
<td><? echo $naam ?></td>
<td><? echo strftime("%d-%m-%Y",$datum); ?></td>
<td><? echo $begin ?></td>
<td><? echo $laatste ?></td>
<td><? echo $laatste - $begin +1 ?></td>
</tr>
<?
}
?>
Hier krijg ik mijn datum te zien als 12-11-2009.
Mijn resultaten pagina ziet er als volgt uit:
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
<?php
if (!@mysql_select_db("db_naam", @mysql_connect("localhost", "db_user", "pass")))
{
echo "Er kan geen database connectie gemaakt worden.";
exit();
}
$sql = "SELECT naam, datum FROM facturen WHERE ". (int)$_POST['zoekterm']." BETWEEN begin AND laatste";
$res = mysql_query($sql);
if(empty($HTTP_POST_VARS[zoekterm])){
echo "Niks ingevuld<br />";
echo "Ga <a href=\"#\" onclick=\"history.go(-1)\">terug</a>";
}elseif (mysql_num_rows($res) >= 1)
{
while ($row = mysql_fetch_array($res))
{
echo "<p>Resultaat: <b>$row[naam]</b><br>";
echo "<p>Resultaat: <b>$row[datum]</b><br>";
echo strftime("%d-%m-%Y",$datum);
}
echo "<br><a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a>";
}
else
{
echo "<p><b> $HTTP_POST_VARS[zoekterm]</b> is door niemand geboekt.</p>";
echo "<p><a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
}
?>
if (!@mysql_select_db("db_naam", @mysql_connect("localhost", "db_user", "pass")))
{
echo "Er kan geen database connectie gemaakt worden.";
exit();
}
$sql = "SELECT naam, datum FROM facturen WHERE ". (int)$_POST['zoekterm']." BETWEEN begin AND laatste";
$res = mysql_query($sql);
if(empty($HTTP_POST_VARS[zoekterm])){
echo "Niks ingevuld<br />";
echo "Ga <a href=\"#\" onclick=\"history.go(-1)\">terug</a>";
}elseif (mysql_num_rows($res) >= 1)
{
while ($row = mysql_fetch_array($res))
{
echo "<p>Resultaat: <b>$row[naam]</b><br>";
echo "<p>Resultaat: <b>$row[datum]</b><br>";
echo strftime("%d-%m-%Y",$datum);
}
echo "<br><a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a>";
}
else
{
echo "<p><b> $HTTP_POST_VARS[zoekterm]</b> is door niemand geboekt.</p>";
echo "<p><a href=\"zoek.php\" title=\"zoek opnieuw\">zoek opnieuw</a></p>";
}
?>
Geeft weer: Resultaat: 1258047436
Geeft weer: 01-01-1970
Ik ben al 2 dagen aan't zoeken wat het probleem kan zijn, maar geraak er niet uit. Ik heb al verschillende dingen geprobeerd, maar geen resultaat.
Is er iemand van jullie die mij misschien kan of wil helpen aub?
Alvast bedankt
Gewijzigd op 01/01/1970 01:00:00 door Gert Verachtert
je wilt hier iets naar een tijdnotatie doen, maar je wijst niet naar de database tijd:
wat je hier wel doet:
@Koen : $row['datum'] of $row->datum en niet $row[datum]
@jaron, 8 regels boven mijn post staat hetzelfde, ik wijs naar zijn eigen code, niet die van mezelf
Wat ik eruit versta is dat het eerste eigenlijk goed is als ik maar naar de database verwijs.
Dus nu heb ik dit geprobeerd:
en nu werkt het.
Nogmaals bedankt
Gert Verachtert schreef op 19.11.2009 10:02:
Mijn datum veld is van het type varchar
Dat is dus geen datum maar tekst.
Script is lek => SQL-Injection.
Das helemaal chinees voor mij
mensen kunnen je database inkomen waar ze dat niet moeten kunnen.
SQl injection tut
of
http://www.phphulp.nl/php/tutorials/3/444/
of
http://www.phphulp.nl/php/tutorials/3/444/
Gewijzigd op 01/01/1970 01:00:00 door Niels K
Ik moet dus mijn veldtype naar date veranderen als ik het goed begrijp?
Dan komen mijn datums in de database allemaal op 0000-00-00 te staan, die toont hij in mijn overzicht en resultaten pagina ook wat op zich nog oke is.
Maar als ik nu een nieuwe registratie doe, komt er in de database gewoon 0000-00-00 te staan ipv de datum van vandaag. Ook zou hij die als dd-mm-yyyy moeten tonen, wat hij dus niet doet.
Kan er iemand mij aub tips geven zodat mijn script niet meer lek is.
als je INSERT doet, als datum de value NOW() gebruiken