BlueGEEK Journal

Accueil > Manip’s > PHP > Leçons PHP > Passer des paramètres d’un formulaire > Travailler avec une date passée en paramètre URL avec PHP

PHP

Travailler avec une date passée en paramètre URL avec PHP

Date

mardi 13 mai 2008, par bluegyn_spip

- Je résume donc ce qu’on a compris et ce qui nous manque :

Une date "13/05/2008" est saisie sur la page_1.php

- Quand je clique sur OK la date est passée à la page_2.php dans l’URL (voir méthode GET) sous cette forme

*page_2.php ?date=13/05/2008

- J’ai récupéré la chaine "13/05/2008" dans l’url grâce au tableau SuperGlobal GET de cette façon :

*$madate = $_GET [ ’date’ ] ;

VOILA TA QUESTION :

- Comment transformer ma chaine "13/05/2008" en un NOMBRE DATE (ce qu’on appelle un timestamp)

- et pouvoir en extraire le jour le mois et l’année pour faire mes calculs (La solution était dans la bibliothèque dates .js)

StrToTime ne marche pas car la date doit être formatée à l’anglaise (13 mai = 05/13/2008)

PHP 5 prévoit la fonction DATA_PARSE qui n’existe pas en PHP 4 :’-((

Comme elle n’existe pas en PHP 4 nous allons la réécrire :

- Nous utiliserons la fonction EXPLODE qui divise automatiquement une chaine qui contient des séparateurs

(cas de 13/05/2008 => avec séparateur = /)

- Soit un Tableau TAB (déclaration inutile en PHP)

* $tab = explode ( "/" , "13/05/2008") ;

- Me donne donc :

  • $jour = $tab[ 0 ] // vaut 13
  • $mois = $tab[ 1 ] // vaut 05
  • $annee = $tab[ 2 ] // vaut 2008

- A partir de la j’utilise 4 fonctions classiques de PHP

- MkTime

- Date

- GetDate

- CheckDate

http://www.php.net/manual/fr/book.d...

Exercice pratique

- Date des Dernière Règles -> date du Triplo Test

<?php



$ddr = "1/4/2008";



$tab = explode ( "/" , $ddr );

$jour = $tab[ 0 ];

$mois = $tab[ 1 ];

$annee = $tab[ 2 ];



// Date du TriploTest = 16 SA

$date_triplo = MkTime (0,0,0, $mois, $jour + 12*7, $annee );

// ATTENTION A L'ORDRE ANGLAIS



echo "Vous devez faire votre echo le " . date ("d m Y", $date_triplo );



?>

On le voit le code PHP est extrêmement simple et plaisant à manipuler

Les variables n’ont ni besoin d’être déclarées, ni même initialisées

Les tableaux dynamiques sont dimensionnés et remplis automatiquement

En plus la conversion de la Lettre "05" en chiffre 5 est transparente


ANNEXES

- Obtenir le timestamp d’une date :

* $timestamp = MkTime (0,0,0, $Mois, $Jour, $Annee) ;

- Afficher une date formatée

* echo date ( $format, $timestamp) ;

Voir les format ici :

- Contrôler si une date existe et est valide

* if (checkdate ( 2 , 29, 2008 ) == true ) echo "Cette année est bissextile" ;

- Tirer toutes les valeurs possibles et imaginables d’une date

$tab = GetDate ( $ timestamp ) ;

- Avec ensuite ce tableau d’arguments

- "seconds" Représentation numérique des secondes 0 à 59

- "minutes" Représentation numérique des minutes 0 à 59

- "hours" Représentation numérique des heures 0 à 23

- "mday" Représentation numérique du jour du mois courant 1 à 31

- "wday" Représentation numérique du jour de la semaine courante 0 (pour Dimanche) à 6 (pour Samedi)

- "mon" Représentation numérique du mois 1 à 12

- "year" Année, sur 4 chiffres Exemples : 1999 ou 2003

- "yday" Représentation numérique du jour de l’année 0 à 365

- "weekday" Version texte du jour de la semaine Sunday à Saturday

- "month" Version texte du mois, comme January ou March January à December

- 0 Nombre de secondes depuis l’époque Unix, similaire à la valeur retournée par la fonction time() et utilisée par date().

- Qui s’utilise de cette façon, par exemple pour le jour de la semaine (en anglais)

echo $tab[ ’weekday’ ] ;

http://www.php.net/manual/fr/functi...