Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP/SQL] Datum vergelijking*

Pagina: 1
Acties:
  • 1.135 views

  • shakkie
  • Registratie: Augustus 2001
  • Laatst online: 04-03-2024
Ik ben bezig met het maken van een script waarbij een agendaitem kan worden ingevoerd d.m.v. een los "dag" veld, een los "maand" veld en een los "jaar" veld.
Nu wil ik op de agendapagina alle items geven vanaf vandaag.
Ik ben een eind gekomen maar onderstaande code geeft bijvoorbeeld wel de data 27-03-2008 en 28-03-2008 maar 07-07-2008 wordt niet weergegeven. Ik zie door de bomen het bos niet meer...

[code=php]
<link rel='stylesheet' type='text/css' href='css/style.css'/>
<link rel='stylesheet' type='text/css' href='css/agenda.css'/>
<?php

include("dbconnect.php");

?>

<?

$qSelect_berichten = mysql_query('SELECT * FROM agenda ORDER BY jaar,maand,dag ASC') or die (mysql_error());




while($aBerichten = mysql_fetch_array($qSelect_berichten))

{


$vandaag = date("dmY");
$dag = $aBerichten['dag'];
$maand= $aBerichten['maand'];
$jaar= $aBerichten['jaar'];
$datum = $dag . $maand . $jaar ;
if($datum<$vandaag){

echo'';

}
else if($datum==$vandaag){
echo'<table width="400px" class="vandaag" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="agendadatum">'.$aBerichten['dag'].'-'.$aBerichten['maand'].'-'.$aBerichten['jaar'].'</td>

<td class="agendaitems"><a href="agendaitemn.php?id='.$aBerichten['id'].'">'.$aBerichten['titel'].'</a></td>

<td class="agendaorkest">
'.$aBerichten['HO'].'';?>
<? echo ''.$aBerichten['DO'].'';?><? if($aBerichten['DO']=="DO") { echo ' '; } ?>
<? echo ''.$aBerichten['JO'].'';?><? if($aBerichten['JO']=="JO") { echo ' '; } ?>
<? echo ''.$aBerichten['JSG'].'';?><? if($aBerichten['JSG']=="JSG") { echo ' '; } ?>
<? echo ''.$aBerichten['SG'].'';?><? if($aBerichten['SG']=="SG") { echo ' '; } ?>
<? echo ''.$aBerichten['OO'].'';?><? if($aBerichten['OO']=="OO") { echo ' '; } ?>
<? echo ''.$aBerichten['OTB'].'';?><? if($aBerichten['OTB']=="OTB") { echo ' '; } ?>
<? echo ''.$aBerichten['MZK'].'';?><? if($aBerichten['MZK']=="MZK") { echo ' '; } ?>
<? echo ''.$aBerichten['Allen'].'';?><? if($aBerichten['Allen']=="Allen") { echo ' '; } ?>
<? echo' </td>
</tr>
</table>';}
else if($datum>$vandaag){
echo'

<table width="400px" class="agendarow" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="agendadatum">'.$aBerichten['dag'].'-'.$aBerichten['maand'].'-'.$aBerichten['jaar'].'</td>

<td class="agendaitems"><a href="agendaitemn.php?id='.$aBerichten['id'].'">'.$aBerichten['titel'].'</a></td>

<td class="agendaorkest">
'.$aBerichten['HO'].'';?>
<? echo ''.$aBerichten['DO'].'';?><? if($aBerichten['DO']=="DO") { echo ' '; } ?>
<? echo ''.$aBerichten['JO'].'';?><? if($aBerichten['JO']=="JO") { echo ' '; } ?>
<? echo ''.$aBerichten['JSG'].'';?><? if($aBerichten['JSG']=="JSG") { echo ' '; } ?>
<? echo ''.$aBerichten['SG'].'';?><? if($aBerichten['SG']=="SG") { echo ' '; } ?>
<? echo ''.$aBerichten['OO'].'';?><? if($aBerichten['OO']=="OO") { echo ' '; } ?>
<? echo ''.$aBerichten['OTB'].'';?><? if($aBerichten['OTB']=="OTB") { echo ' '; } ?>
<? echo ''.$aBerichten['MZK'].'';?><? if($aBerichten['MZK']=="MZK") { echo ' '; } ?>
<? echo ''.$aBerichten['Allen'].'';?><? if($aBerichten['Allen']=="Allen") { echo ' '; } ?>
<? echo' </td>
</tr>
</table>';}

}
?>
[/code=php]

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Waarom heb je niet gewoon een datum veld in je database?

verder kan je zo nooit datums vergelijken:
PHP:
1
2
3
4
5
6
7
8
$vandaag = date("dmY");
$dag = $aBerichten['dag'];
$maand= $aBerichten['maand'];
$jaar= $aBerichten['jaar'];
$datum = $dag . $maand . $jaar ;
if($datum<$vandaag){ 

}


immers, 04072008 is kleiner dan 25032008 wat dus niet klopt ;)

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 31-10 21:55
Je maakt strings van je datums en gaat daarmee vergelijken? Dat werkt natuurlijk niet.
Het is vandaag 26-03-2008, dat wordt bij jou dus 26032008. Van 07-07-2008 maak je 07072008 en dat is inderdaad kleiner dan 26032008 dus die geeft 'ie dan niet weer.
Mysql kent speciale datumvelden en -functies, en php ook. Zoek daar eens op, dat werkt veel gemakkelijker (en beter).

  • shakkie
  • Registratie: Augustus 2001
  • Laatst online: 04-03-2024
Nu zie ik inderdaad waar ik fout zit. De rede waarom ik dacht geen DATE field te gebruiken was omdat ik de datum zelf wilde posten maar ik ontdek langzaam maar zeker dat dit een denkfout is!

  • Creepy
  • Registratie: Juni 2001
  • Nu online

Creepy

Tactical Espionage Splatterer

Een echt date field gebruiken maakt je probleem een stuk eenvoudiger idd ;)

Wil je overigens eens kijken naar Programming Beleid en dan met name Programming Beleid - De Quickstart? Je dumpt nu je probleem met foutmelding en hoopt dat wj het voor je gaan oplossen terwijl je niet aangeeft wat je nu allemaal zelf al hebt geprobeerd op je probleem op te lossen, iets wat we wel van je verwachten.

offtopic:
En de topictitel wat opgeleukt


Edit: en alsnog maar gesloten. Je loopt hier al flink wat langer rond dus dit had je toch moeten weten. Als je er nog steeds niet uitkomt dan kan je een nieuw topic openen mits je natuurlijk let op de net genoemde quickstart :)

[ Voor 16% gewijzigd door Creepy op 26-03-2008 20:15 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Dit topic is gesloten.