datum probleempje
volgend probleempje, ik heb een tabel met 3 velden (id, date (type date) en event (varchar)). Nu ben ik zover dat ik een adtum met bijbehorend event kan toevoegen en alle events bekijken. Bij het bekijken van de events zie ik de datum in volgende staat: dd-mm-yyyy. Maar nu zou ik dit ook op die manier willen toevoegen. Momenteel moet ik dit nog doen op volgende manier: yyyy-mm-dd.
Dit is de code voor de 2 bestanden:
weergeven.php
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
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
<?php
mysql_connect('localhost','root','');
mysql_select_db('mijndb') or die (mysql_error());
if(mysql_result(mysql_query("SELECT COUNT(id) FROM `events`"),0) == 0)
{
echo 'Er staan nog geen events in de database';
}
else
{
?>
<table>
<tr>
<td>Datum:</td>
<td>Event:</td>
</tr>
<?php
$qSelect_berichten = mysql_query('SELECT * FROM `events`') or die (mysql_error());
while($aBerichten = mysql_fetch_array($qSelect_berichten))
{
$datum = $aBerichten['date'];
$nieuw_datum = substr( $datum, 8, 2 ) . '-' . substr( $datum, 5, 2 ) . '-' . substr( $datum, 0, 4 );
echo '<tr>
<td>'.$nieuw_datum.'</td>
<td>'.$aBerichten['event'].'</td>
</tr>';
}
echo '</table>';
}
?>
<br /><
mysql_connect('localhost','root','');
mysql_select_db('mijndb') or die (mysql_error());
if(mysql_result(mysql_query("SELECT COUNT(id) FROM `events`"),0) == 0)
{
echo 'Er staan nog geen events in de database';
}
else
{
?>
<table>
<tr>
<td>Datum:</td>
<td>Event:</td>
</tr>
<?php
$qSelect_berichten = mysql_query('SELECT * FROM `events`') or die (mysql_error());
while($aBerichten = mysql_fetch_array($qSelect_berichten))
{
$datum = $aBerichten['date'];
$nieuw_datum = substr( $datum, 8, 2 ) . '-' . substr( $datum, 5, 2 ) . '-' . substr( $datum, 0, 4 );
echo '<tr>
<td>'.$nieuw_datum.'</td>
<td>'.$aBerichten['event'].'</td>
</tr>';
}
echo '</table>';
}
?>
<br /><
toevoegen.php
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
mysql_connect('localhost','root','');
mysql_select_db('mijndb') or die (mysql_error());
if(isset($_POST['verzenden']))
{
$Date = addslashes($_POST['date']);
$Event = addslashes($_POST['event']);
mysql_query("INSERT INTO events (date, event) VALUES ('".$Date."', '".$Event."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst <br />';
}
else
{
?>
<form action="<?=$_SERVER['PHP_SELF']?> " method="post">
Datum: <input type="text" name="date" /><br />
Event: <input type="text" name="event" /><br />
<input type="submit" name="verzenden" value="verzenden" />
</form>
<?
}
?>
mysql_connect('localhost','root','');
mysql_select_db('mijndb') or die (mysql_error());
if(isset($_POST['verzenden']))
{
$Date = addslashes($_POST['date']);
$Event = addslashes($_POST['event']);
mysql_query("INSERT INTO events (date, event) VALUES ('".$Date."', '".$Event."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst <br />';
}
else
{
?>
<form action="<?=$_SERVER['PHP_SELF']?> " method="post">
Datum: <input type="text" name="date" /><br />
Event: <input type="text" name="event" /><br />
<input type="submit" name="verzenden" value="verzenden" />
</form>
<?
}
?>
Kan er iemand mij hierbij helpen?
DATE_FORMAT(datumveld,'&d-%m-%Y');
levert op: dag-maand-jaar
DATE_FORMAT(datumveld,'&Y-%m-%d');
levert op jaar-maand-dag
En waar moet ik dant dan invoegen?
DATE_FORMAT kan je gebruiken in je query.
En geen ` in je query gebruiken! Deze heb je nergens voor nodig, je leert jezelf alleen verkeerde dingen aan!
En dat moet ik toevoeen in toevoegen.php?
je zet het in je query waar je het nodig hebt, in je database moet het als jaar-maand-dag staan en voor weergeven wil je waarschijnlijk dag-maand-jaar hebben.
Toevoegen kan toch gewoon met NOW().
Ik heb het online gezet. hp://www.herenvanzichem.be/test/agenda.php
Daar zie je volgende datum instaan: 20-01-2012, maar ik heb dit ingegeven: 12-1-2006.
Hier vind je de link nog eens.
jvuz:
Mijn theorie. Ik geef een datum in (dd-mm-yyyy), deze wordt in een variabele gestopt, daarna omgezet naar de vorm voor mysql (dus yyyy-mm-dd). Klopt dit.
Je zult deze datum met behulp van php om moeten zetten naar yyyy-mm-dd omdat MySQL nou eenmaal alleen maar data slikt van het formaat jaar-maand-dag. (Voor alle toegestane notaties zie ook hier.)
In jouw geval leest MySQL 12-1-2006 in het jaar-maand-dag formaat dus als 20-01-2012 (20 komt van 2006, 01 komt van 1, 2012 komt van 12)...
ps. Je zou je script heel makkelijk kunnen aanpassen door je form iets te wijzigen. Neem bij de datum gewoon 3 verschillende inputs voor dag, maand en jaar. Als je de datum naar de database wilt schrijven kunt je de input gewoon achter elkaar zetten als YYYYMMDD (een van de formaten die MySQL wel slikt).
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Quote:
ps. Je zou je script heel makkelijk kunnen aanpassen door je form iets te wijzigen. Neem bij de datum gewoon 3 verschillende inputs voor dag, maand en jaar. Als je de datum naar de database wilt schrijven kunt je de input gewoon achter elkaar zetten als YYYYMMDD (een van de formaten die MySQL wel slikt).
Maar dan moet ik de vorm veranderen van date naar int ?
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
error_reporting(E_ALL);
$date = '12-8-2006'; // kan ook input vanuit een formulier zijn
echo $date;
$split = explode('-', $date); // opknippen in stukken
print_r($split); // om te zien wat er is gebeurd
$new_date = $split[2].'-'.$split[1].'-'.$split[0]; // samenstellen datum t.b.v. de database
echo $new_date; // nieuwe datum
?>
error_reporting(E_ALL);
$date = '12-8-2006'; // kan ook input vanuit een formulier zijn
echo $date;
$split = explode('-', $date); // opknippen in stukken
print_r($split); // om te zien wat er is gebeurd
$new_date = $split[2].'-'.$split[1].'-'.$split[0]; // samenstellen datum t.b.v. de database
echo $new_date; // nieuwe datum
?>
jvuz:
Maar dan moet ik de vorm veranderen van date naar int ?
Nee, je moet de input uit de nieuwe velden van je form gewoon achter elkaar plakken en de datum die je dan gekregen hebt naar je database laten schrijven.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
// Input vanuit form: veld1 = dag, veld2 = maand, veld3=jaar
$datum = $_POST['veld3'].$_POST['veld2'].$_POST['veld1'];
mysql_query("INSERT INTO events (date) VALUES ('$datum')");
?>
// Input vanuit form: veld1 = dag, veld2 = maand, veld3=jaar
$datum = $_POST['veld3'].$_POST['veld2'].$_POST['veld1'];
mysql_query("INSERT INTO events (date) VALUES ('$datum')");
?>
Zo zou je het kunnen doen. Echter kun je wel nog steeds ongeldige data invullen, dus daar zul je nog wat aan moeten doen...
OK, nu werkt het. Nu moet ik enkel nog checken of de datum klopt. Daarvoor moet ik dus checkdate gebruiken. Dan blijft netuurlijk de vraag hoe ik dat het beste inpas in mijn code.
Bijvoorbeeld, de code iets omgeschreven:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// Input vanuit form: veld1 = dag, veld2 = maand, veld3=jaar
$dag = $_POST['veld1'];
$maand = $_POST['veld2'];
$jaar = $_POST['veld3'];
if(checkdate($maand, $dag, $jaar))
{
$datum = $jaar.$maand.$dag;
mysql_query("INSERT INTO events (date) VALUES ('$datum')");
}
else
{
echo "Je hebt een ongeldige datum ingevoerd";
}
?>
// Input vanuit form: veld1 = dag, veld2 = maand, veld3=jaar
$dag = $_POST['veld1'];
$maand = $_POST['veld2'];
$jaar = $_POST['veld3'];
if(checkdate($maand, $dag, $jaar))
{
$datum = $jaar.$maand.$dag;
mysql_query("INSERT INTO events (date) VALUES ('$datum')");
}
else
{
echo "Je hebt een ongeldige datum ingevoerd";
}
?>
ps. Zie ook de checkdate() manual op php.net: http://nl3.php.net/checkdate
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
ik heb dit:
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
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
<?php
mysql_connect('localhost','root','');
mysql_select_db('jvanattenhoven') or die (mysql_error());
if(isset($_POST['verzenden']))
{
$dag = $_POST['dag'];
$maand = $_POST['maand'];
$jaar = $_POST['jaar'];
if(checkdate($maand, $dag, $jaar))
{
$Date = $_POST['jaar'].$_POST['maand'].$_POST['dag'];
$Event = addslashes($_POST['event']);
}
else
{
echo "Je hebt een ongeldige datum ingevoerd";
}
mysql_query("INSERT INTO events (date, event) VALUES ('".$Date."', '".$Event."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst <br />';
}
else
{
?>
<form action="<?=$_SERVER['PHP_SELF']?> " method="post">
Dag (2 cijfers): <input type="text" name="dag" /> Maand (2 cijfers): <input type"text" name="maand" /> Jaar (4 cijfers): <input type="text" name="jaar" /> <br />
Event: <input type="text" name="event" /><br />
<input type="submit" name="verzenden" value="verzenden" />
</form>
<?
}
?>
mysql_connect('localhost','root','');
mysql_select_db('jvanattenhoven') or die (mysql_error());
if(isset($_POST['verzenden']))
{
$dag = $_POST['dag'];
$maand = $_POST['maand'];
$jaar = $_POST['jaar'];
if(checkdate($maand, $dag, $jaar))
{
$Date = $_POST['jaar'].$_POST['maand'].$_POST['dag'];
$Event = addslashes($_POST['event']);
}
else
{
echo "Je hebt een ongeldige datum ingevoerd";
}
mysql_query("INSERT INTO events (date, event) VALUES ('".$Date."', '".$Event."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst <br />';
}
else
{
?>
<form action="<?=$_SERVER['PHP_SELF']?> " method="post">
Dag (2 cijfers): <input type="text" name="dag" /> Maand (2 cijfers): <input type"text" name="maand" /> Jaar (4 cijfers): <input type="text" name="jaar" /> <br />
Event: <input type="text" name="event" /><br />
<input type="submit" name="verzenden" value="verzenden" />
</form>
<?
}
?>
Het blijkt te werken want ik krijg volgende boodschap als ik een verkeerde datum invoer:
Je hebt een ongeldige datum ingevoerd
Maar ik krijg daarbij ook volgende boodschap:
Notice: Undefined variable: Date in c:\program files\easyphp1-8\www\test\toevoegen.php on line 25
Notice: Undefined variable: Event in c:\program files\easyphp1-8\www\test\toevoegen.php on line 25
Je gegevens zijn succesvol in de database geplaatst
Sorry, is al opgelost. Ik heb ook al kunnen zorgen dat de tabel weergegeven wordt volgens datum, dus gerangschikt. Nu wil ik enkel nog inbouwen dat ie enkel de data geeft vanaf vandaag, dus de data van voor vandaag niet meer. Is daar een manier voor?
Parse error: parse error in c:\program files\easyphp1-8\www\test\toevoegen.php on line 23
Dit is de code
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
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
<?php
mysql_connect('localhost','root','');
mysql_select_db('mijndb') or die (mysql_error());
if(isset($_POST['verzenden']))
{
$dag = $_POST['dag'];
$maand = $_POST['maand'];
$jaar = $_POST['jaar'];
if(checkdate($maand, $dag, $jaar))
{
$Date = $_POST['jaar'].$_POST['maand'].$_POST['dag'];
$Event = addslashes($_POST['event']);
mysql_query("INSERT INTO events (date, event) VALUES ('".$Date."', '".$Event."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst <br />';
}
else
{
echo "Je hebt een ongeldige datum ingevoerd";<br />
}
}
else
{
?>
<form action="<?=$_SERVER['PHP_SELF']?> " method="post">
Dag (2 cijfers): <input type="text" name="dag" /> Maand (2 cijfers): <input type"text" name="maand" /> Jaar (4 cijfers): <input type="text" name="jaar" /> <br />
Event: <input type="text" name="event" /><br />
<input type="submit" name="verzenden" value="verzenden" />
</form>
<?
}
?>
mysql_connect('localhost','root','');
mysql_select_db('mijndb') or die (mysql_error());
if(isset($_POST['verzenden']))
{
$dag = $_POST['dag'];
$maand = $_POST['maand'];
$jaar = $_POST['jaar'];
if(checkdate($maand, $dag, $jaar))
{
$Date = $_POST['jaar'].$_POST['maand'].$_POST['dag'];
$Event = addslashes($_POST['event']);
mysql_query("INSERT INTO events (date, event) VALUES ('".$Date."', '".$Event."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst <br />';
}
else
{
echo "Je hebt een ongeldige datum ingevoerd";<br />
}
}
else
{
?>
<form action="<?=$_SERVER['PHP_SELF']?> " method="post">
Dag (2 cijfers): <input type="text" name="dag" /> Maand (2 cijfers): <input type"text" name="maand" /> Jaar (4 cijfers): <input type="text" name="jaar" /> <br />
Event: <input type="text" name="event" /><br />
<input type="submit" name="verzenden" value="verzenden" />
</form>
<?
}
?>
Opgelost!: sorry hiervoor. Blijft nu enkel een manier om enkel de data vanaf vandaag weer te geven.
Gewijzigd op 01/01/1970 01:00:00 door jvuz