PHP automatisch doorwerkend agendasysteem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dag allemaal ik heb even een vraagje.

Ik wil voor op de site van een bandje hun concertagenda zo maken dat ze hun optreedtdata zo kunnen toevoegen. Dan bedoel ik dat dus voor een heel jaar dus vanaf nu tot een jaar later. Maar dan zou ik het wel zo willen hebben dat als een maand bijvoorbeeld april 2005 voorbij is, april 2005 automatisch wordt gewijzigd in april 2006. Hierdoor houdt het systeem zich zeg maar automatisch schoon en up-to-date.

Heeft iemand misschien een idee hoe ik dit het beste aan zou kunnen pakken?

Alvast bedankt voor de moeite, Grt. Pski.

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Cronjob maken die data controleerd, als die geweest is een jaartje later zetten. Lijkt me nou niet zo ingewikkeld

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

tabel maken met een datetime field. En dan een select query die het volgende doet:

SELECT * FROM optreden WHERE datum BETWEEN now() AND DATE_ADD(now(), INTERVAL 365 DAY);

Niet getest trouwens ;)

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Megamind schreef op vrijdag 29 april 2005 @ 12:27:
Cronjob maken die data controleerd, als die geweest is een jaartje later zetten. Lijkt me nou niet zo ingewikkeld
Hier is geen cronjob voor nodig, Brakkie's oplossing lijkt me voldoende. Lijkt me ook niet zo heel lastig te verzinnen trouwens. :o

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor de tips!
Ik heb alleen nog een klein probleempje met het doorvoeren van de datum.
Deze wordt namelijk via een formulier gekozen door gebruik te maken van
<option value etc. 1 voor de dag te kiezen. Eentje voor de maand en de laatste voor het jaar.
Deze wil ik dan vervolgens bijelkaar brengen in een andere pagina met php op de volgende manier, maar volgens mij werkt dit voor geen meter.

$datum = $_POST["dag"]"-"$_POST["maand"]"-"$_POST["jaar"];

De uiteindelijke datum moet er als volgt uit komen te zien - > 23-04-05
Maar wat doe ik fout?

Grt. Paul.

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Wat werkt er niet? Zo kunnen we alleen raden naar wat er fout gaat. En hoe zit het in elkaar?

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
$datum = strtotime($_POST["maand"]"-"$_POST["dag"]"-"$_POST["jaar"]);

:?
Overigens is het datumformaat van MySQL als je daar wat invoert YYYYMMDD. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • mahi
  • Registratie: Juni 2001
  • Laatst online: 22-09-2020

mahi

God bless GoT

Geeft dat niet gewoon keihard een syntax error of iets dergelijks? Zo kun je toch geen strings koppelen?

A bus station is where a bus stops. A train station is where a train stops... On my desk I have a workstation.


Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Verwijderd schreef op vrijdag 29 april 2005 @ 15:04:
$datum = $_POST["dag"]"-"$_POST["maand"]"-"$_POST["jaar"];

De uiteindelijke datum moet er als volgt uit komen te zien - > 23-04-05
Maar wat doe ik fout?
Als je het als string aan elkaar wilt plakken is wat je hierboven doet simpelweg fout. Probeer het eens zo:
PHP:
1
$datum = $_POST["dag"] . "-" . $_POST["maand"] . "-" . $_POST["jaar"];

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja Phoenix, dat werkt! 't Zal de onervarenheid van mij wel zijn. Hartstikke bedankt.

En NMe, ik voer de datum in als varchar. Dat vind ik zelf makkelijk, zo ben ik niet gebonden aan
YYYYMMDD en kan ik via een php-pagina gewoon de volgorde aanpassen van de letters.

Ik ga kijken of alles in z'n totaliteit nu werkt inclusief het aanvragen.

Thnx voor de tips, heel leerzaam.

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

En NMe, ik voer de datum in als varchar. Dat vind ik zelf makkelijk, zo ben ik niet gebonden aan
YYYYMMDD en kan ik via een php-pagina gewoon de volgorde aanpassen van de letters.
Daarmee kan je dan volgens mij geen gebruik maken van alle handige datetime functies van mysql (8>

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • ecageman
  • Registratie: September 2001
  • Laatst online: 10-07 21:49
Lijkt mij ook niet handig met sorteren als je het als dag-maand-jaar opslaat. Trust me, als je met een DATE veld in je database werkt, gaat je dat veel ellende besparen. Zeker als je alleen alles van het komende jaar wil laten zien, heb je veel meer aan date-functies in je queries, dan zelf een hele php-functie te moeten schrijven om uit een stukje text te halen of de datum wel of niet goed is om te laten tonen.

AMD Athlon 2800+, MSI K7N2Delta-L, 1024MB PC3200, SB Audigy2, XFX GF4MX440, BenQ DVD+-RW, NEC 1300A DVD+-RW, 2x WD 120GB 8mb, 2x Maxtor 250GB, Chenbro Gaming Bomb, Tagan 480W, 17" Iiyama monitor


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Brakkie schreef op vrijdag 29 april 2005 @ 15:49:
[...]
Daarmee kan je dan volgens mij geen gebruik maken van alle handige datetime functies van mysql (8>
Uiteindelijk zul je spijt krijgen. Gebruik dan desnoods een INT veld met een UNIX_TIME, dan kun je er altijd nog weer data van maken met FROM_UNIXTIME(). Als je het in een varchar dumpt, zul je er nooit weer meer mee kunnen. (Alles voor de komende week weergeven, hoe wil je dat gaan doen met een varchar veld?)

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

van een query als dit zal je bijvoorbeeld geen gebruik kunnen maken.

code:
1
2
3
4
5
6
7
8
9
10
SELECT 
             * 
FROM 
             optreden 
WHERE 
             datum 
BETWEEN 
             now() 
AND 
             DATE_ADD(now(), INTERVAL 365 DAY);

Systeem | Strava


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oké dus dan verander ik het in een DATE-veld.
Maar als ik dan m'n datum toevoeg klopt er dus geen hout meer van omdat het als
YYYYMMDD wordt weergegeven terwijl ik het als d-m-y invoer en het moet er ook
als d-m-y uitkomen. Of is dat ook aan te passen?

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Check: http://dev.mysql.com/doc/...e-and-time-functions.html

Probeer even zelf te zoeken. Meeste dingen zijn wel te vinden op de php of de mysql site :)

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Skaah schreef op vrijdag 29 april 2005 @ 16:04:
[...]

Uiteindelijk zul je spijt krijgen. Gebruik dan desnoods een INT veld met een UNIX_TIME, dan kun je er altijd nog weer data van maken met FROM_UNIXTIME(). Als je het in een varchar dumpt, zul je er nooit weer meer mee kunnen. (Alles voor de komende week weergeven, hoe wil je dat gaan doen met een varchar veld?)
[semi-offtopic]
Dan zou ik in mysql voor een timestamp veld gaan :)
[/semi-offtopic]

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

mahi schreef op vrijdag 29 april 2005 @ 15:13:
Geeft dat niet gewoon keihard een syntax error of iets dergelijks? Zo kun je toch geen strings koppelen?
Uiteraard. Had even over het feit heen gekeken dat er geen puntjes stonden. :)
Verwijderd schreef op vrijdag 29 april 2005 @ 15:32:
En NMe, ik voer de datum in als varchar. Dat vind ik zelf makkelijk, zo ben ik niet gebonden aan
YYYYMMDD en kan ik via een php-pagina gewoon de volgorde aanpassen van de letters.
Ik wens je succes bij het sorteren van entries op datum. ;) (Maar dat doen de mensen boven me ook al. :))
PhoeniX- schreef op vrijdag 29 april 2005 @ 16:52:
[semi-offtopic]
Dan zou ik in mysql voor een timestamp veld gaan :)
[/semi-offtopic]
Doe dat maar liever niet. Een timestamp veld bevat altijd de datum van de laatste wijziging van het record. Wijzig je het record, dan wordt de timestamp dus automatisch op NOW() ingesteld. Neem dan een date of datetime veld, of inderdaad een int. :)
Verwijderd schreef op vrijdag 29 april 2005 @ 16:21:
Oké dus dan verander ik het in een DATE-veld.
Maar als ik dan m'n datum toevoeg klopt er dus geen hout meer van omdat het als
YYYYMMDD wordt weergegeven terwijl ik het als d-m-y invoer en het moet er ook
als d-m-y uitkomen. Of is dat ook aan te passen?
Zoals Brakkie al zegt staat dat heel mooi in de documentatie. Ik raad je aan die eerst even goed door te nemen. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oké ik zal het is allemaal even op m'n gemak doorlezen. Thanx.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben nu zover dat ik de datum die ik invoer in een DATE field terecht komt in de database en dus in het formaat YYYYMMDD wordt opgeslagen.

Moet ik nu in de database die datum aanpassen naar een ander formaat of doe ik dat tijdens het aanroepen van de gegevens via een php-pagina?

Want nu heb ik het zo geprobeerd

$query="SELECT datum DATE('%e:%c:%y')
FROM optredens";

Maar dit werkt niet. Het geeft geen foutmelding maar hij past het ook niet toe.

[ Voor 12% gewijzigd door Verwijderd op 30-04-2005 14:20 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Na wat gepuzzel ben ik tot nu toe en met de hulp van iemand anders tot dit resultaat gekomen.

$query = "SELECT *,datum("d","m","Y") AS date FROM optredens" ;

Maar volgens mij klopt het ("d","m","Y") gedeelte niet. Het scherm wordt gewoon wit.


Is dit een juiste aanroepmanier?

Acties:
  • 0 Henk 'm!

  • PiweD
  • Registratie: Augustus 2004
  • Niet online

PiweD

Redacteur
Verwijderd schreef op vrijdag 13 mei 2005 @ 19:34:
Na wat gepuzzel ben ik tot nu toe en met de hulp van iemand anders tot dit resultaat gekomen.

$query = "SELECT *,datum("d","m","Y") AS date FROM optredens" ;

Maar volgens mij klopt het ("d","m","Y") gedeelte niet. Het scherm wordt gewoon wit.


Is dit een juiste aanroepmanier?
dit klopt voor geen meter. Wat wil je hiermee precies berijken?

wat er na SELECT komt, zijn de velden die je wilt hebben. Eerst wil je *, dus alles hebben, en daarna nog iets heel vaags?

en als je een datum wilt maken moet je dat trouwens zo doen: date("dmY");

so·wie·so (bijwoord) - 1 hoe dan ook


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-09 14:28
-NMe- schreef op vrijdag 29 april 2005 @ 18:08:
[...]
Doe dat maar liever niet. Een timestamp veld bevat altijd de datum van de laatste wijziging van het record. Wijzig je het record, dan wordt de timestamp dus automatisch op NOW() ingesteld. Neem dan een date of datetime veld, of inderdaad een int. :)
[...]
Even een belangrijke sidenote: Alleen het eerste timestamp veld wordt geupdate. Dit is dus zeer handig omdat je dan meteen een wijzigingsdatum hebt.

Ik snap je vraag trouwens niet: Waarom weet jij nu al zeker dat je volgend jaar weer op dezelfde datum een opreden hebt?

[ Voor 11% gewijzigd door djluc op 13-05-2005 19:50 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wat ik wil bereiken is uit het DATE-veld genaamd datum de datum te halen die er dus zo uit ziet in de database 2005-04-03 en zo 03-04-05 uit moet komen zien als ik deze uit de database heb gehaald en weergeef op het scherm.

Maar hoe krijg je het voorelkaar om én alles uit de database te halen en de datum daarbij om te zetten naar het gewenste formaat? Zodat het ik het kan weergeven met $row?

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-09 14:28
Ik zou ze als timestamp opslaan. Vervolgens toon je ze zo:
PHP:
1
2
3
4
<?PHP
//het formaat zie je op http://www.php.net/date
echo date('dmY', $row['datumkolom']);
?>

[ Voor 33% gewijzigd door djluc op 13-05-2005 19:56 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op vrijdag 13 mei 2005 @ 19:34:
Na wat gepuzzel ben ik tot nu toe en met de hulp van iemand anders tot dit resultaat gekomen.

$query = "SELECT *,datum("d","m","Y") AS date FROM optredens" ;

Maar volgens mij klopt het ("d","m","Y") gedeelte niet. Het scherm wordt gewoon wit.


Is dit een juiste aanroepmanier?
Heb je al in onze FAQ gekeken in het stukje over PHP en debuggen? Echo je query als die samengesteld is uit variabelen en voer iets uit als dit:
PHP:
1
2
$query = "SELECT *,datum("d","m","Y") AS date FROM optredens";
$result = mysql_query($query) or die(mysql_error());

Dan zie je vanzelf wel wat er fout is aan je query.

Trouwens, date("dmY") kan helemaal niet volgens de manual.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar als ik er een timestamp-veld van maak komt de datum in de database er zo uit te zien:

20050603000000

En als ik ze dan op deze manier uit de database haal: echo date('d-m-Y', $row['datum']);

Wordt dit weergegeven op het scherm:

19-01-2038

Dat lijkt me niet echt goed.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op vrijdag 13 mei 2005 @ 20:17:
Maar als ik er een timestamp-veld van maak komt de datum in de database er zo uit te zien:

20050603000000

En als ik ze dan op deze manier uit de database haal: echo date('d-m-Y', $row['datum']);

Wordt dit weergegeven op het scherm:

19-01-2038

Dat lijkt me niet echt goed.
Omdat je het niet goed doet... $row['datum'] is geen PHP-timestamp. Je zal dat eerst moeten converteren, en dan kun je dat timestamp pas gebruiken in de date-functie. Kijk eens naar mktime of strtotime in de manual.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-09 14:28
Let op bij het invoeren:
FOUT!
PHP:
1
2
3
<?PHP
$sql="INSERT INTO (timestampveldje2) VALUES (NOW())";
?>

GOED!
PHP:
1
2
3
<?PHP
$sql="INSERT INTO (timestampveldje2) VALUES ('".time()."')";
?>

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het timestamp-veld verandert naar een DATE-veld. En het volgende gedaan

<?php echo date("d-m-Y", strtotime($row["datum"])); ?>

en dit werkt. Nu ga ik kijken of ik dit kan toepassen:

SELECT * FROM optreden WHERE datum BETWEEN now() AND DATE_ADD(now(), INTERVAL 365 DAY);
Pagina: 1