[php] > en <

Pagina: 1
Acties:

  • pdehoop
  • Registratie: September 1999
  • Laatst online: 04-06-2024
ik wil een voorwaarde scheppen, voordat iets uitgevoerd gaat worden, en de voorwaarde heeft met de datum te maken.
In een mysql database heb ik records met een bepaalde datum in de vorm van 2002-04-28

Mijn script ziet er alsvolgt uit:

$curdate = "date('Y-m-d')";
$date = "$result[1]";
echo "$date\n";
if($date >= $curdate){
echo "ja";
}

Dit alles staat ook nog in een while.

het is dus de bedoeling dat hij alleen records laat zien waarbij de datum later is dan de huidige datum.

Het script wat hier staat is mij het meest logisch.
als de datum uit de database groter is dan de huidige datum, dan echoed hij.
Echter, dit werkt dus precies omgekeerd.
Als ik het verander in <=, dan laat hij pas de records zien.

Het probleem is echter, dat hij dan alle records laat zien en niet alleen de records waarbij de datum zeg maar groter is dan de huidige datum.

Het stukje script van hierboven staat uiteraard wel in de while behalve de curdate variabele, aangezien die maar één keer toegewezen hoeft te worden

Er zou dus steeds opnieuw gecontroleerd moeten worden op er aan de voorwaarde voldoen is, waarna dan pas de echo volgt.

Waarom werkt dit niet?
Weet iemand een oplossing?
Of moet ik een andere methode gebruiken?

  • Martijn02
  • Registratie: September 2000
  • Laatst online: 15-09 14:25

Martijn02

/* No Comment */

Waarom laat je het MySQL niet doen? Die is heel goed in dat soort dingen hoor???

Ik heb ongeveer hetzelfde gedaan, heb bij een record een variable publishDate gezet met type datetime

en dan doe je in de query
code:
1
SELECT * FROM Item WHERE Item.publishDate < NOW()

en dan krijg je alles wat in het verleden al gepubliceerd is...

  • Erik Jan
  • Registratie: Juni 1999
  • Niet online

Erik Jan

Langzaam en zeker

Martijn hierboven geeft al een oplossing waarop je je moet focussen. Maar afgezien van dat, zou ik ook nog ff aan m'n PHP werken. Ga eens even na wat je aan het doen bent:
code:
1
$curdate = "date('Y-m-d')";

Hier maak je een string met daarin de tekst "date('Y-m-d')". De functie roep je dus helemaal niet aan.
code:
1
$date = "$result[1]";

Hier stop je de data uit je record in een string, dat kan opzich prima.
code:
1
echo "$date\n";

Je output bevat hierdoor elk record dat in de database zit.
code:
1
2
3
if($date >= $curdate){
echo "ja";
}

Dit is de grote fout: als we ff waarden invullen komt de volgende vergelijking eruit:
code:
1
2
3
if("28-11-02" >= "date('Y-m-d')"){
echo "ja";
}

Wat PHP hiervan begrijpt is dat ie moet kijken of een reeks tekens groter is dan een andere reeks tekens. Helaas is het "groter dan" teken een wiskundige term en kan het alleen maar met getallen gebruikt worden. Wat PHP dus wel kan is:
code:
1
2
3
if(10000 >= 50){
echo "Tienduizend is groter dan vijftig";
}

Je moet dus de datum in een of ander getal omzetten. Ik raad je aan om in de PHP manual de time() functie op te zoeken. Dit kan dat voor je doen.

This can no longer be ignored.