Meest recente datum tonen en oudere verwijderen!
Ik zit met een klein probleempje.
Ik ben bezig met een soort agenda, nu wil ik dat alle oude datums standaart in de database verwijdert worden, en de nieuwste datum van bijv. het volgende evenement getoond wordt!
Is dit mogelijk, ik kom der zelf niet meer uit :S
Alvast bedankt!
Dus bijv.
Datum: Dinsdag 2 jan 2007 14:00 uur
id:5 datum: 2006-02-02 13:00:00 > Verwijderen!
id:1 datum: 2007-07-01 12:00:00 > Niks mee doen!
id:3 datum: 2007-01-02 18:00:00 > Tonen
Ik ben bezig met een soort agenda, nu wil ik dat alle oude datums standaart in de database verwijdert worden, en de nieuwste datum van bijv. het volgende evenement getoond wordt!
Is dit mogelijk, ik kom der zelf niet meer uit :S
Alvast bedankt!
Dus bijv.
Datum: Dinsdag 2 jan 2007 14:00 uur
id:5 datum: 2006-02-02 13:00:00 > Verwijderen!
id:1 datum: 2007-07-01 12:00:00 > Niks mee doen!
id:3 datum: 2007-01-02 18:00:00 > Tonen
Gewijzigd op 01/01/1970 01:00:00 door SaTZzz T.
Zie http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html voor een hele serie datum en tijdsfuncties. Uiteraard sla je datums met tijden op in een DATETIME.
Verder zul je goed moeten bepalen wat er moet gebeuren. In jouw voorbeeld roep je dat alle oude datums moeten worden verwijderd, maar 1 januari 2007 (= oud) wil je blijkbaar niet verwijderen. Waarom niet?
Deze query verwijdert alle records met een datum in het verleden. Dus ook 1 januari 2007.
Tip: Waarom wil je deze data verwijderen? Het staat waarschijnlijk niemand in de weg en kan altijd nog handig zijn voor statistieken. Gewoon niet tonen voor het publiek en klaar ben je.
Verder zul je goed moeten bepalen wat er moet gebeuren. In jouw voorbeeld roep je dat alle oude datums moeten worden verwijderd, maar 1 januari 2007 (= oud) wil je blijkbaar niet verwijderen. Waarom niet?
Deze query verwijdert alle records met een datum in het verleden. Dus ook 1 januari 2007.
Tip: Waarom wil je deze data verwijderen? Het staat waarschijnlijk niemand in de weg en kan altijd nog handig zijn voor statistieken. Gewoon niet tonen voor het publiek en klaar ben je.
$query = "DELETE FROM agena WHERE DATE_SUB(CURDATE()) > datum_tijd";
zo verwijderen, denk dat dat wel werkt
tonen:
$query = "SELECT * FROM agena WHERE datum_tijd=CURDATE()";
misschien dat NOW() beter werkt ipv CURDATE()
heb dit zelf nog nooit gebruikt, maar dit lijkt me het logischt, hopelijk heb je er iets aan
zo verwijderen, denk dat dat wel werkt
tonen:
$query = "SELECT * FROM agena WHERE datum_tijd=CURDATE()";
misschien dat NOW() beter werkt ipv CURDATE()
heb dit zelf nog nooit gebruikt, maar dit lijkt me het logischt, hopelijk heb je er iets aan
'Frank:
Zie
In jouw voorbeeld roep je dat alle oude datums moeten worden verwijderd, maar 1 januari 2007 (= oud) wil je blijkbaar niet verwijderen. Waarom niet?
In jouw voorbeeld roep je dat alle oude datums moeten worden verwijderd, maar 1 januari 2007 (= oud) wil je blijkbaar niet verwijderen. Waarom niet?
Owh foutje, dat moet 1 februari zijn, dacht dat mysql JJJJ-MM-DD gebruikte, of is dat niet zow?
Stel ik laat de datums gewoon in de database staan, hoe kan ik ze dan het beste oproepen zonder dat ik de oudere datums krijg?
Gewoon een SELECT query met in de WHERE condition:
WHERE DATE(datumtijd) >= CURDATE()
zoals Frank al aangaf.
WHERE DATE(datumtijd) >= CURDATE()
zoals Frank al aangaf.
Okeej, Bedankt het is gelukt!
Die Mysql date functies zijn zeker de moeitewaard om even je in te verdiepen :D.
Die Mysql date functies zijn zeker de moeitewaard om even je in te verdiepen :D.
Gewijzigd op 01/01/1970 01:00:00 door SaTZzz T.
Toch wil het nog niet helemaal:
Ik heb de onderstaande php code:
en de volgende database gegevens:
Maar hij blijft 24 februari tonen, terwijl 12 februari recenter is!
Ik heb de onderstaande php code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
//Database Gegevens
$db = mysql_connect("localhost", "root", "XXXXXX");
mysql_select_db("wettertoerkapel", $db)
or die ("Fout: openen database mislukt!");
//Toont laaste actuele gegevens..
$query = mysql_query("SELECT * FROM optredens WHERE DATE(datum) >= CURDATE()");
$gegevens = mysql_fetch_row($query);
print_r($gegevens);
?>
//Database Gegevens
$db = mysql_connect("localhost", "root", "XXXXXX");
mysql_select_db("wettertoerkapel", $db)
or die ("Fout: openen database mislukt!");
//Toont laaste actuele gegevens..
$query = mysql_query("SELECT * FROM optredens WHERE DATE(datum) >= CURDATE()");
$gegevens = mysql_fetch_row($query);
print_r($gegevens);
?>
en de volgende database gegevens:
Code (php)
1
2
3
4
2
3
4
id Datum Locatie Opmerking
3 2007-02-12 00:00:00 Ja Ja
2 2006-02-12 00:00:00 Nee Nee
1 2007-02-24 00:00:00 Nee Nee
3 2007-02-12 00:00:00 Ja Ja
2 2006-02-12 00:00:00 Nee Nee
1 2007-02-24 00:00:00 Nee Nee
Maar hij blijft 24 februari tonen, terwijl 12 februari recenter is!
Gewijzigd op 01/01/1970 01:00:00 door SaTZzz T.
Waar staat dan 12 februari? Ik zie 12 januari 2006, maar dat is toch echt al even geleden.
De query zou trouwens zowel 4 als 24 januari moeten tonen (het is vandaag 3 januari).
De query zou trouwens zowel 4 als 24 januari moeten tonen (het is vandaag 3 januari).
Even typ foutje, zo staan ze goed!
Het is de bedoeling dat hij alleen de meest recente gaat tonen, dus 12 Feb. 2007. en de rest niet!
Het is de bedoeling dat hij alleen de meest recente gaat tonen, dus 12 Feb. 2007. en de rest niet!
Gewijzigd op 01/01/1970 01:00:00 door SaTZzz T.
Dan moet je de query even aanpassen, sorteren en limiteren. Verder netter scripten, dat voorkomt ook een hoop ellende. Hier een voorbeeldje:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?
//Toont laaste actuele gegevens..
$query = "
SELECT
*
FROM
optredens
WHERE
DATE(datum) >= CURDATE()
ORDER BY
datum DESC
LIMIT 1";
$result = mysql_query($query);
if ($result) {
while ($row = mysql_fetch_assoc($result)) {
echo $row['datum'];
}
}
else { // FOUTAFHANDELING !!! Mag nooit ontbreken
echo 'Query mislukt vanwege de volgende fout: '.mysql_error();
}
print_r($row); // testje...
?>
//Toont laaste actuele gegevens..
$query = "
SELECT
*
FROM
optredens
WHERE
DATE(datum) >= CURDATE()
ORDER BY
datum DESC
LIMIT 1";
$result = mysql_query($query);
if ($result) {
while ($row = mysql_fetch_assoc($result)) {
echo $row['datum'];
}
}
else { // FOUTAFHANDELING !!! Mag nooit ontbreken
echo 'Query mislukt vanwege de volgende fout: '.mysql_error();
}
print_r($row); // testje...
?>
Het werkt, hier de uiteindelijke code (incl. Foutafhandeling ;)):
Bedankt, :D
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
##Database Gegevens!
$db = mysql_connect("localhost", "root", "9202vb");
mysql_select_db("wettertoerkapel", $db)
or die ("Fout: openen database mislukt!");
##Query(SQL)
$query = "SELECT * FROM optredens WHERE DATE(datum) >= CURDATE() ORDER BY datum ASC LIMIT 0,1";
$result = mysql_query($query);
##Mysql Fout Controle!
if(!$result){
echo "<b>Query kon niet worden uitgevoerd<br></b>Error: " . mysql_error();
exit;
}
##Verwerk gegevens!
if(mysql_num_rows($result) > 0){
list($id, $datum, $locatie, $opmerking) = mysql_fetch_row($result);
echo ("$id <br> $datum <br> $locatie <br> $opmerking <br>");
}else{
echo "Geen Data's Gevonden!'";
}
?>
##Database Gegevens!
$db = mysql_connect("localhost", "root", "9202vb");
mysql_select_db("wettertoerkapel", $db)
or die ("Fout: openen database mislukt!");
##Query(SQL)
$query = "SELECT * FROM optredens WHERE DATE(datum) >= CURDATE() ORDER BY datum ASC LIMIT 0,1";
$result = mysql_query($query);
##Mysql Fout Controle!
if(!$result){
echo "<b>Query kon niet worden uitgevoerd<br></b>Error: " . mysql_error();
exit;
}
##Verwerk gegevens!
if(mysql_num_rows($result) > 0){
list($id, $datum, $locatie, $opmerking) = mysql_fetch_row($result);
echo ("$id <br> $datum <br> $locatie <br> $opmerking <br>");
}else{
echo "Geen Data's Gevonden!'";
}
?>
Bedankt, :D
Gewijzigd op 01/01/1970 01:00:00 door SaTZzz T.




