Hallo allemaal,

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>
<?
  }
?> 


Kan er iemand mij hierbij helpen?
Klopt het dan dat ik dat hier moet doen (in toevoegen.php)
if(isset($_POST['verzenden']))
  {
    $Date        =   addslashes($_POST['date']);
    $Event      =    addslashes($_POST['event']);
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

echo $new_date; // nieuwe datum

?>
jvuz schreef op 19.07.2006 15:57

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.


<?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')");

?>


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.
Heel eenvoudig door een stukje errorchecking in de code die ik eerder schreef toe te passen.

Bijvoorbeeld, de code iets omgeschreven:

<?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";
}

?>


ps. Zie ook de checkdate() manual op php.net: http://nl3.php.net/checkdate
Bedankt,

ik heb dit:

<?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" />&nbsp; Maand (2 cijfers): <input type"text" name="maand" />&nbsp;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?
Blijkbaar is het toch nog niet helemaal opgelost, als ik nu events wil toevoegen krijg ik

Parse error: parse error in c:\program files\easyphp1-8\www\test\toevoegen.php on line 23

Dit is de code
<?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" />&nbsp; Maand (2 cijfers): <input type"text" name="maand" />&nbsp;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.

Reageren