Hallo,

Ik wou weten hoe ik het volgende kan uitvoeren;

Ik heb een tabel waarin een score van een dag wordt vastgelegd, en wanneer er geen score is van een bepaalde dag kan de gebruiker de betreffende dag aanklikken en die alsnog invullen.

Maar nu is het zo dat de gebruiker ook een score van bijv volgende week ook kan invullen terwijl dat niet de bedoeling is.
Hoe kan ik ervoor zorgen dat als een datum voorbij vandaag, dat het niet aanklikbaar is?
mijn code:
<?php

function split_date($offset) {
$date = explode('-', $offset);
$datum['jaar'] = $date[0];
$datum['maand'] = $date[1];
$datum['dag'] = $date[2];
return $datum;
}




function get_week($offset=false) {
if (!$offset) {
$offset = date('Y-m-d');
}
$datums = split_date($offset);
$dag = $datums['dag'];
$maand = $datums['maand'];
$jaar = $datums['jaar'];
$naar_maandag = date('N', mktime(0, 0, 0, $maand, ($dag), $jaar)) - 1;
if ($naar_maandag > 0) {
$dag = $dag - $naar_maandag;
}
$day['maandag'] = date('Y-m-d', mktime(0, 0, 0, $maand, ($dag + 0), $jaar));
$day['dinsdag'] = date('Y-m-d', mktime(0, 0, 0, $maand, ($dag + 1), $jaar));
$day['woensdag'] = date('Y-m-d', mktime(0, 0, 0, $maand, ($dag + 2), $jaar));
$day['donderdag'] = date('Y-m-d', mktime(0, 0, 0, $maand, ($dag + 3), $jaar));
$day['vrijdag'] = date('Y-m-d', mktime(0, 0, 0, $maand, ($dag + 4), $jaar));
$day['zaterdag'] = date('Y-m-d', mktime(0, 0, 0, $maand, ($dag + 5), $jaar));
$day['zondag'] = date('Y-m-d', mktime(0, 0, 0, $maand, ($dag + 6), $jaar));
return $day;
}

function days_from_now($days) {
$seconds = $days * 60 * 60 * 24;
return date('Y-m-d', (time() + $seconds));
}

function get_week_num($days) {
$seconds = $days * 60 * 60 * 24;
return date('W', (time() + $seconds));
}

function get_totaal_punten($datum) {
$query = "SELECT Punten FROM `vragenlijst` WHERE `Datum`='" . $datum . "'";

$res = mysql_query($query)
or die(mysql_error());
while ($punten = mysql_fetch_array($res)) {
$array[] = $punten['Punten'];
}

/* @var $punten <type> */
$totaalpunten = 0;
foreach ($array as $punt) {
// echo $punt."<br/>";
$totaalpunten = $totaalpunten + $punt;
}
return $totaalpunten;
}
$tomorrow = mktime(0, 0, 0, date("m"), date("d")+1, date("y"));
//echo "Tomorrow is ".date("m-d-y", $tomorrow);

echo date(y-m-d);

echo '<table>';
//dagen voor in de td
$dagen = array("Week/dag", "Maandag", "Dinsdag", "Woensdag", "Donderdag","Vrijdag", "Zaterdag", "Zondag", "Gemiddelde");
echo "<table border=1px>";
//laat de dagen in een td zien en de gemiddelde
echo "<tr>";
foreach ($dagen as $dag) {
echo "<td>" . $dag . "</td>";
}
echo "</tr>";


// geeft de weeknrs aan*
$nextWeek = time() + (7 * 24 * 60 * 60);

for ($i = -2; $i < 2; $i++) { // 2 weken terug tot 1 week in de toekoms
$dagen_vanaf_nu = $i * 7; // dus als $i -2 is dan is het -14 dagen

$datum_die_ik_wil_zien = days_from_now($dagen_vanaf_nu);

$datums = get_week($datum_die_ik_wil_zien); // haald de hele week op van de datum

echo '<tr>'; // Elke week een nieuwe ROW
echo '<td>' . get_week_num($dagen_vanaf_nu) . '</td>';
$first = true;
foreach ($datums as $dag_naam => $datum) { // loopt van maandag t/m zondag
$query = mysql_query("SELECT * FROM `vragenlijst` WHERE `Datum`='" . $datum . "'") or die(mysql_error()); //loop query even langs of alles klopt
if ($query && mysql_num_rows($query) > 0) {
$punten = get_totaal_punten($datum);
echo "<td><a href='invoer2.3.php?datum=".$datum."'>" . $punten . '</a></td>';
}

elseif(morgen groter is dan vandaag)
{
echo "<td>-</td>";
}
else {
echo "<td><a href='invoer2.3.php?datum=".$datum."'>x</a></td>"; }
}
echo "</tr>";
}
echo '</table>';

?>

Ik weet dat ik iets in de elseif statement moet zetten maar wat precies, ik heb het geprobeerd met 2 variabelen 1 met de datum van vandaag en eentje met de datum van morgen wat niet wilt werken, het is de bedoeling dat de gebruiker de datums van vandaag en het verleden kan invullen maar dat van de toekomst niet.
Kijk eens naar de constructie van je if().
<?php
if ($query && mysql_num_rows($query) > 0) {
$punten = get_totaal_punten($datum);
echo "<td><a href='invoer2.3.php?datum=".$datum."'>" . $punten . '</a></td>';
}
elseif(morgen groter is dan vandaag) {
echo "<td>-</td>";
}
else {
echo "<td><a href='invoer2.3.php?datum=".$datum."'>x</a></td>";
}
?>

Als de query gelukt is en is zijn records gevonden dan is de if() waar.
Enige suggesties hoe ik het dan kan aanpakken, om ervoor te zorgen dat de datums die in de toekomst zijn niet als een link werken?
$nu = date('Y-m-d');
if($datum <= $nu){
Invoeren die hap
}

Ik weet niet of dit direct werkt anders moet je de data eerst omzetten naar getallen met strtotime($nu) en strtotime($datum)
en als je nou je datetime omzet naar je mktime en dan kijken of de datum groter is dan de datum van de match en dat je het dan wel kan invullen? :)

Reageren