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
<?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 /><
toevoegen.php
<?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>
<?
}
?>
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 ?
Hier een voorbeeldje, al moet je zelf nog wel e.e.a. gaan versleutelen en controleren met checkdate() of de datum wel een geldige datum is. 31 februari staat zo slordig...
<?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
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.
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.
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?