IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Convertir une date depuis un input afin de faire un intervalle.


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut Convertir une date depuis un input afin de faire un intervalle.
    Bonjour à tous,

    Je dois créer en PHP la fonction suivante : Convertir une date entrée par l'utilisateur dans un <input type="date"> pour ensuite faire la différence de jours avec un date précise.
    Malheureusement, je ne suis pas encore un pro du PHP et je suis actuellement bloqué lors de la conversion.

    Voici mon html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method="post" name="Formulaire">
    	Date :<input type="date" name="TDate">
    	<input type="submit" name="confirmer" value="Confirmer">
    </form>
    Mon PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(isset($_POST['confirmer']))
    {
    	$debut = new DateTime('1899-12-30');
    	$fin = new DateTime('$_POST["TDate"]');
    	$interval = $debut->diff($debut);
    	print $interval->format('The number of days that have passed since 12/30/1899 is :%d');
    }
    Lorque que je lance le localhost, j'ai cette erreur :
    Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string ($_POST[&quot;TDate&quot;]) at position 0 ($): Unexpected character' in C:\wamp64\www\PHP\Convertir une date.php on line 15
    (ligne 15 correspond à la ligne 4 ici.)

    Je ne vois pas comment faire pour que $fin fonctionne

    (le "print" n'est pas encore testé donc je pense qu'il n'est clairement pas juste ^^, je suis preneur si vous pouvez aider )

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il ne faut pas mettre de ' autour des variables !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fin = new DateTime( $_POST["TDate"] );

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut
    Merci ! Effectivement ça marche quand même mieux !
    J'étais sur la bonne voie

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Coucou Letsap...

    Heu ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $interval = $debut->diff($debut);

    Oui, tu as quasiment fini... à part que ce n'est pas une fonction et...
    A part... teste ces valeurs :

    $_POST["TDate"]='';ou

    $_POST["TDate"]='0000-00-00';ou

    $_POST["TDate"]='31/04/2018';ou

    $_POST["TDate"]='2018-04-31';ou

    $_POST["TDate"]='mwaHaHaHaHa';
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2018
    Messages : 9
    Par défaut
    Bonjour !

    Merci pour ton aide Dendrite

    Citation Envoyé par Dendrite Voir le message
    Heu ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $interval = $debut->diff($debut);
    Je voulais calculer la différence de jour qu'il y a entre ces deux dates (oui j'ai mis deux fois "$debut" ), après avoir cherché de mon coté, j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $fin->diff($debut)->format('%d');
    Je pense que c'est la commande qui me permet d'obtenir ce que je souhaite !
    Le problème c'est que je vois pas du tout comment faire pour afficher que la différence de jours… Je pense être encore une fois sur la bonne voie, c'est juste le "%d" qui pose problème…

    Sinon pour ce qui est des tests de valeur pour TDate :

    $_POST["TDate"]='';-> Il m'affiche 13, soit je pense 1 + 12 (du 30 au 12), ici il prend quand même la date d'aujourd'hui.

    $_POST["TDate"]='0000-00-00';-> Il m'affiche 0, et la je comprend pas trop pourquoi. Surement parce que il aime pas le mois/jour 0.

    $_POST["TDate"]='31/04/2018';-> Il m'affiche une erreur, il aime pas du tout le format

    $_POST["TDate"]='2018-04-31';-> Il m'affiche "2", du 30 au 31.

    $_POST["TDate"]='mwaHaHaHaHa';-> Je te laisse deviner
    Citation Envoyé par Letsap
    -> Il m'affiche une erreur, il aime pas du tout le format
    Pour conclure, je pense que le problème c'est que le calcul de la différence ce fait sous forme de date, et après j'affiche seulement les jours. Mais moi je veux afficher la différence en jour, comment faire ?
    Merci encore une fois pour tout le temps que vous m'accordez afin de m'aider.
    (Et excusez moi pour mon vocabulaire un peu bancal sur le sujet)

    Je remet mon code pour vous mettre à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(isset($_POST['confirmer'])){
    	//$_POST["TDate"]="2018-04-31";
    	$debut = new DateTime('1899-12-30');
    	$fin = new DateTime($_POST["TDate"]);
    	echo $fin->diff($debut)->format('%d');
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form method="post" name="Formulaire">
    	Date :<input type="date" name="TDate">
    	<input type="submit" name="confirmer" value="Confirmer">
    </form>

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2014
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2014
    Messages : 322
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $interval = $fin->diff($debut);
    echo $interval->format('%d');
    essaye ce code la, normalement ça devrait fonctionner.

    Par contre pense bien a vérifie ce que contient ta variable, pour éviter des erreurs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convertir une date depuis timestamp d'un GeoJson
    Par SylvainM dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/04/2016, 10h23
  2. Réponses: 3
    Dernier message: 30/04/2015, 17h56
  3. [Python 2.X] Convertir une date directement depuis un élément d'une liste
    Par Taylor08 dans le forum Général Python
    Réponses: 15
    Dernier message: 23/03/2015, 14h30
  4. Comment récuperer une date depuis une chaine?
    Par shopoto dans le forum ASP
    Réponses: 4
    Dernier message: 12/05/2004, 16h17
  5. Convertir une date en type string
    Par ziboux dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/10/2003, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo