[PHP] invoeren van datums in database

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig met een wijzigpagina voor een schema, en nu wil ik 2 invoervelden maken op deze pagina voor de begindatum en de einddatum.

Hierna kunnen de ingevoerde datums ge "INSERT" worden in de database (ik heb hier al een "date" veld in.

Met dit commando:
for ($a=$begindatum; $a<=$einddatum; $a+86400) { insert SQL }
kan dus een periode opgegeven worden van begin- naar einddatum.

Alleen nu is de vraag:
Hoe zorg ik er nu voor dat $begindatum en $einddatum omgezet worden.

met strtotime? En hoe doe ik dat dan precies

Acties:
  • 0 Henk 'm!

Verwijderd

Hoe worden de datums ingevoerd? Wat is de waarde van de variabelen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De datums staan gewoon in de MYSQL database met als veldnaam "datum"

Acties:
  • 0 Henk 'm!

  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 26-08 09:08

Kippenijzer

McFallafel, nu met paardevlees

Door gewoon de datum zelf ook in de tabel op te slaan in een timestamp veld, dan staat het er als getal in seconden, waarmee heel makkelijk te rekenen valt. "Eindseconden-Beginseconden=X" en dan X weer omrekenen... En daarvoor hebben de meeste scripttalen standaard functie om met timestamps te werken, naast het feit dat het vele malen sneller is dan je huidige "datum" velden...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit zegt mij als "newbee" niet zoveel. Als ik iets in de database verander gaat er iets niet goed in een ander script. Ik wil dus echt in het script met strtotime iets doen.

Misschien dat iemand hier al ervaringen mee heeft, en ff een globaal voorbeeldje kan geven :)

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Je hebt de vraag van Ivy niet beantwoord. Het maakt nogal veel uit hoe je precies de waarden in laat voeren. Uitgaande van een aantal dropboxen in een form, waarvan je waarden doorgeeft aan een PHP script, kan je waarschijnlijk wel iets met de functies mktime() en date(). Zie daarvoor de PHP manual: http://www.php.net/manual/en/ref.datetime.php

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb ff gekeken en heb een opzetje gemaakt hoe het volgens mij ook zou moeten kunnen.
Heeft iemand hier op/aanmerkingen over?

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
<?
if (isset($_POST["bevestiging"])){

$begindatum = date('Y-m-d', $_POST['datum']);
$einddatum = date('Y-m-d', $_POST['datum']);

for ($a=$begindatum; $a<=$einddatum; $a+86400) 
   { 
    $query = "INSERT INTO agendadata (datum) ";
    $query .= "VALUES ('"; // let op positie van de enkele aanhalingstekens 
    $query .= $_POST["datum"] ."');" ; 
    $result = mysql_query($query) or die ("FOUT: " . mysql_error()); 
   }    
}else{

$begindatum = date('Y-m-d', $_POST['datum']);
$einddatum = date('Y-m-d', $_POST['datum']);
echo "<form action=$_SERVER[PHP_SELF] method=post>";
echo "<input type=hidden name=bevestiging value=1>\n";
echo "<input name=titel type=text value=$begindatum></td></tr>";
echo "<input name=titel type=text value=$einddatum></td></tr>";
echo "<tr><td><input type=Submit value=Wijzig datums>";
echo "</form>";
echo "</table>";
?>

Acties:
  • 0 Henk 'm!

  • gomaster
  • Registratie: Februari 2002
  • Laatst online: 17-09 17:39
Waarzom werk je in de for loop niet met de timestamp. Ik neem tenminste aan dat dat uit $_POST["datum"] komt? Kan je veel makkelijker mee vergelijken.

  • TheRebell
  • Registratie: Oktober 2000
  • Laatst online: 16-09 06:34
datums hoeven niet netjes gescheiden te worden door '-' hoor, dat snapt mysql ook wel (als je mysql gebruikt tenminste ;) )

Ik weet het niet zeker maar ik dacht dat je de datum zelfs een format kon geven in je sql statement. Zou je ff moeten opzoeken in de manual van mysql

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
Verwijderd schreef op 19 november 2003 @ 14:16:
Heeft iemand hier op/aanmerkingen over?

PHP:
1
for ($a=$begindatum; $a<=$einddatum; $a+86400)
Dit gaat mis bij omschakelingen naar zomer/wintertijd. Een dag is dan geen 86400 seconden lang. Ik kon twee weken geleden mijn eigen puin opruimen omdat ik hier niet aan had gedacht. Heb het toen moeten vervangen door zo iets:
PHP:
1
2
3
4
5
        $i = 0;
        do {
            $i++;
            $Dagen[$i] = mktime(0,0,0,date('m', $EersteDag), date('d', $EersteDag) + $i, date('Y', $EersteDag));
        } while (mktime(0,0,0,date('m', $EersteDag), date('d', $EersteDag) + $i, date('Y', $EersteDag)) < $LaatsteDag)

[ Voor 7% gewijzigd door bigtree op 20-11-2003 13:11 ]

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Verwijderd

Invoeren van start en eindatum

SQL:
1
INSERT INTO tabel (startdatum, einddatum) VALUES(NOW(), DATE_ADD(NOW(), INTERVAL 7 DAY))


Alle records uitlezen waarvan de huidige datum kleiner is dan de startdag + 7 dagen

Oftewel alles wat minder dan een week geleden gepost is.

SQL:
1
SELECT * FROM tabel WHERE NOW() < DATE_ADD(startdatum, INTERVAL 7 DAY))
Pagina: 1