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 :

Calcul date du lendemain


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Calcul date du lendemain
    Voilà, j'ai un exercice noté à faire, j'ai bien réfléchi, bien avancé dans mon travail mais je me retrouve bloqué! Le but de l'exercice et de saisir n'importe quelle date dans un formulaire et d'afficher la date du lendemain! Le probléme se situe dans mon fichier php mais impossible de le detecter

    Fichier html ou je rentre les données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
     
     
    <form method="post" action="traitementdate.php">
     
    Saisir le jour <input type="number" name="jour" />
    Saisir le mois <select name="mois" id="mois">
               <option value="Janvier">Janvier</option>
               <option value="Fevrier">Fevrier</option>
               <option value="Mars">Mars</option>
               <option value="Avril">Avril</option>
               <option value="Mai">Mai</option>
               <option value="Juin">Juin</option>
               <option value="Juillet">Juillet</option>
               <option value="Aout">Aout</option>
    		   <option value="Septembre">Septembre</option>
               <option value="Octobre">Octobre</option>
               <option value="Novembre">Novembre</option>
               <option value="Decembre">Décembre</option>
           </select>
    Saisir l'annee<input type="number" name="annee" />
    <input type="submit" value="Envoyer" />
     
    </form>
     
    Fichier php:
     
    <?php   
    $jour=$_POST['jour'];
    $mois=$_POST['mois'];
    $année=$_POST['annee'];
     
    if ($mois==Janvier Or $mois==Mars Or $mois==Mai Or $mois==Juillet Or $mois==Aout Or $mois==Octobre Or $mois==Decembre)
    	if ($jour<=31) 
    	{$newjour=$jour+1;}
    		if ($newjour<=31)
    		{echo "La date du jour suivant est $newjour $mois $année";}
    		else 
    			$newjour=1;
    			switch ($mois) 
    { 
        case Janvier: 
            echo "La date du jour suivant est $newjour Fevrier $année";
        break;
     
        case Mars: 
            echo "La date du jour suivant est $newjour Avril $année";
        break;
     
        case Mai: 
            echo "La date du jour suivant est $newjour Juin $année";
        break;
     
        case Juillet: 
            echo "La date du jour suivant est $newjour Aout $année";
        break;
     
        case Aout:
            echo "La date du jour suivant est $newjour Septembre $année";
        break;
     
        case Octobre:
            echo "La date du jour suivant est $newjour Novembre $année";
        break;
     
        case Decembre:
    		$newannee=$année+1;
            echo "La date du jour suivant est $newjour Janvier $newannee";
        break;
     
        default:
            echo "Désolé, cette date n'existe pas";
    }
    	else 
    	 {echo "Désolé, cette date n'existe pas";}
     
     
    elseif ($mois==Avril Or $mois==Juin Or $mois==Septembre Or $mois==Novembre)
    	if ($jour<=30)
    	{$newjour=$jour+1;}
    		if ($newjour<=30)
    		{echo "La date du jour suivant est $newjour $mois $année";}
    		else
    			$newjour=1;
    			switch ($mois)
    { 
        case Avril: 
            echo "La date du jour suivant est $newjour Mai $année";
        break;
     
        case Juin: 
            echo "La date du jour suivant est $newjour Juillet $année";
        break;
     
        case Septembre: 
            echo "La date du jour suivant est $newjour Octobre $année";
        break;
     
        case Novembre: 
            echo "La date du jour suivant est $newjour Decembre $année";
        break;
     
    	default:
    		echo "Désolé, cette date n'existe pas";
    }
    	else 
    	 {echo "Désolé, cette date n'existe pas";}
     
     
    else ($mois==Fevrier)
    	if ($année%4==0)
    		if ($année%100!=0)
    		{$année=$bixestile;}
    			if ($jour<=29) 
    			{$newjour=$jour+1;}
    				if ($newjour<=29)
    				{echo "La date du jour suivant est $newjour $mois $bisexstile";}
    				else 
    				$newjour=1;
    				{echo "La date du jour suivant est $newjour Mars $bisexstile";}
    			else
    			{echo "Désolé, cette date n'existe pas";}
    		 elseif ($année%400!=0)
    		 {$année=$bixestile};
    				if ($jour<=29) 
    				{$newjour=$jour+1};
    					if ($newjour<=29)
    					{echo "La date du jour suivant est $newjour $mois $bisexstile";}
    					else 
    					$newjour=1;
    					{echo "La date du jour suivant est $newjour Mars $bisexstile";}
    				else
    				{echo "Désolé, cette date n'existe pas";}
    		 else
    		{$année=$nonbixestile;}
    			if ($jour<=28) 
    			{$newjour=$jour+1;}
    				if ($newjour<=28)
    				{echo "La date du jour suivant est $newjour $mois $nonbisexstile";}
    				else 
    				$newjour=1;
    				{echo "La date du jour suivant est $newjour Mars $nonbisexstile";}
    			else
    			{echo "Désolé, cette date n'existe pas";}
    	else
    	{$année=$nonbixestile;}
    			if ($jour<=28) 
    			{$newjour=$jour+1;}
    				if ($newjour<=28)
    				{echo "La date du jour suivant est $newjour $mois $nonbisexstile";}
    				else 
    				$newjour=1;
    				{echo "La date du jour suivant est $newjour Mars $nonbisexstile";}
    			else
    			{echo "Désolé, cette date n'existe pas";}
     
     
    ?>
    L'erreur semble se situer à la ligne 47 de mon code php donc au niveau du second else qui apparait!

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Tu dis qu'il y a une erreur mais tu ne précises pas ce qui ne fonctionne pas.

    Comme il s'agit d'un exercice je ne vais pas te donner le code mais une indication. Regarde les fonctions de gestion des dates. Cherche ajout jour date php.

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    n'utilise jamais dans ton code de variables accentuées comme $année par exemple.
    Ensuite ton code peut se résumer en moins de 40 lignes, lis un peu la doc de la classe DateTime, la gestion des dates est native en PHP et regarde du côté de modify()

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord, merci de m'avoir répondu. En cherchant dans les ajouts de jour date du php, je sais que je peux ajouter un jour en rajoutant 86400 secondes ça j'y avais penser mais le probléme c'est que je ne sais pas comment faire pour faire saisir à un utilisateur des dates qui existent forcément comme si il selectionnait un calendrier. C'est pour ça que j'ai essayer de faire un programme avec des conditions et des moments où il y a marqué: cette date n'existe pas, au cas ou mon professeur testerait si il entre une fausse date.

    Merci pour l'indication sur les accents des dates, je vais corriger ça! Je vais aller lire ça, le probleme c'est que ça fais à peine 6-8h que on fais du php et les profs nous enseignent pas grand chose, j'apprend seul.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Voila j'ai modifié mon code mais cela ne fonctionne toujours pas :/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    <?php   
    $jour=$_POST['jour'];
    $mois=$_POST['mois'];
    $annee=$_POST['annee'];
     
    if ($mois==Janvier Or $mois==Mars Or $mois==Mai Or $mois==Juillet Or $mois==Aout Or $mois==Octobre Or $mois==Decembre)
    	if ($jour<=31) 
    	{$newjour=$jour+1;}
    		if ($newjour<=31)
    		{echo "La date du jour suivant est $newjour $mois $annee";}
    		elseif ($newjour==32)
    		{$newjour=1;}
    			switch ($mois) 
    { 
        case Janvier: 
            echo "La date du jour suivant est $newjour Fevrier $annee";
        break;
     
        case Mars: 
            echo "La date du jour suivant est $newjour Avril $annee";
        break;
     
        case Mai: 
            echo "La date du jour suivant est $newjour Juin $annee";
        break;
     
        case Juillet: 
            echo "La date du jour suivant est $newjour Aout $annee";
        break;
     
        case Aout:
            echo "La date du jour suivant est $newjour Septembre $annee";
        break;
     
        case Octobre:
            echo "La date du jour suivant est $newjour Novembre $annee";
        break;
     
        case Decembre:
    		$newannee=$annee+1;
            echo "La date du jour suivant est $newjour Janvier $newannee";
        break;
     
        default:
            echo "Désolé, cette date n'existe pas";
    }
    	elseif ($jour>31)
    	 {echo "Désolé, cette date n'existe pas";}
     
     
    elseif ($mois==Avril Or $mois==Juin Or $mois==Septembre Or $mois==Novembre)
    	if ($jour<=30)
    	{$newjour=$jour+1;}
    		if ($newjour<=30)
    		{echo "La date du jour suivant est $newjour $mois $annee";}
    		elseif ($newjour==31)
    		{$newjour=1;}
    			switch ($mois)
    { 
        case Avril: 
            echo "La date du jour suivant est $newjour Mai $annee";
        break;
     
        case Juin: 
            echo "La date du jour suivant est $newjour Juillet $annee";
        break;
     
        case Septembre: 
            echo "La date du jour suivant est $newjour Octobre $annee";
        break;
     
        case Novembre: 
            echo "La date du jour suivant est $newjour Decembre $annee";
        break;
     
    	default:
    		echo "Désolé, cette date n'existe pas";
    }
    	elseif ($jour>30)
    	 {echo "Désolé, cette date n'existe pas";}
     
     
    elseif ($mois==Fevrier)
    	if ($annee%4==0)
    		if ($annee%100!=0)
    		{$année=$bixestile;}
    			if ($jour<=29) 
    			{$newjour=$jour+1;}
    				if ($newjour<=29)
    				{echo "La date du jour suivant est $newjour $mois $bisexstile";}
    				elseif ($newjour==30)
    				{$newjour=1;}
    				{echo "La date du jour suivant est $newjour Mars $bisexstile";}
    			elseif ($jour>29)
    			{echo "Désolé, cette date n'existe pas";}
    		 elseif ($année%400==0)
    		 {$annee=$bixestile};
    				if ($jour<=29) 
    				{$newjour=$jour+1};
    					if ($newjour<=29)
    					{echo "La date du jour suivant est $newjour $mois $bisexstile";}
    					elseif ($newjour==30)
    					{$newjour=1;}
    					{echo "La date du jour suivant est $newjour Mars $bisexstile";}
    				elseif ($jour>29)
    				{echo "Désolé, cette date n'existe pas";}
    		 elseif ($annee%100==0)
    		{$annee=$nonbixestile;}
    			if ($jour<=28) 
    			{$newjour=$jour+1;}
    				if ($newjour<=28)
    				{echo "La date du jour suivant est $newjour $mois $nonbisexstile";}
    				elseif ($newjour==29)
    				{$newjour=1;}
    				{echo "La date du jour suivant est $newjour Mars $nonbisexstile";}
    			elseif ($jour>28)
    			{echo "Désolé, cette date n'existe pas";}
    	elseif ($annee%4!=0)
    	{$annee=$nonbixestile;}
    			if ($jour<=28) 
    			{$newjour=$jour+1;}
    				if ($newjour<=28)
    				{echo "La date du jour suivant est $newjour $mois $nonbisexstile";}
    				elseif ($newjour==29)
    				{$newjour=1;}
    				{echo "La date du jour suivant est $newjour Mars $nonbisexstile";}
    			else 
    			{echo "Désolé, cette date n'existe pas";}
     
     
    ?>
    En fait je ne comprend pas, pourquoi il me signale une faute ligne 47, je n'arrive pas à comprendre, il me dit :
    Parse error: syntax error, unexpected 'elseif' (T_ELSEIF) in C:\UwAmp\www\my-app\traitementdate.php on line 47
    Pourtant le elseif n'est pas innaproprié ici? Devrais je mettre un else? Pourtant même probléme avec le else

    J'ai lu l'article sur la date du lien Datetime mais je ne vois pas comment l'utiliser dans mon programme :/

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 358
    Points
    358
    Par défaut
    PHP propose en effet beaucoup de fonctions sur les dates nativement.

    Pour vérifier l'existence d'une date il y'a "checkdate"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if(checkdate($mois, $jour, $annee)){
      //date ok
    }else{
      //date non ok
    }
    Pour initialiser une date et trouver la date du lendemain avec DateTime
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $date = new DateTime($annee.'-'.$mois.'-'.$jour);
    $date->modify('+1 day');
    //pour afficher la date (faire une recherche pour les différents format)
    echo $date->format('d/m/Y');

  7. #7
    Membre régulier
    Homme Profil pro
    Fabricant de ressorts - programmeur amateur
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Fabricant de ressorts - programmeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    Pour ton problème de parseerror, regarde le nombre d'ouverture et de fermeture de crochets, moi, je fais pareil que l'interpréteur, je ne sais pas à quel if se rapporte ton elseif, à priori, il semble être la conséquence du case, ce qui n'est pas logique.

    Maintenant, si on te donne les solutions natives, alors !!!

    Dans l'absolu, je vois que tu es bien jeune et que tu n'as jamais eu le problème de la place mémoire ou de vitesse de processeur... (en 1982, c'était tout autrement, la mémoire se comptait en ko seulement et tout était bon pour optimiser un code)
    Ton code est très long et peut largement être optimisé par exemple en ayant un tableau qui t'indique le nombre de jours maximum d'un mois (en changeant éventuellement la valeur du mois de février dans le cas d'une année bissextile) ainsi, exit les case à répétition.
    Tu notes tes mois comme on en a l'habitude à coup de chiffre, mais tu as une table avec les mois correspondant
    Vu le nombre de fois ou tu indiques "la date du jour n'existe pas", je l'aurais fait avec une variable nondate=0 au départ, puis variable mise à 1 en cas d'erreur avec un test en fin de sous-programme ou tu affiches soit la date est ou la date n'existe pas.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2009, 18h00
  2. [WB9] Calcul Date de Naissance
    Par Angeldu74 dans le forum WebDev
    Réponses: 1
    Dernier message: 02/06/2006, 11h46
  3. Réponses: 5
    Dernier message: 21/03/2006, 22h39
  4. [Date] Date du lendemain
    Par babylone7 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 28/02/2006, 17h43
  5. [debutant] Date du lendemain
    Par hunter69fr2002 dans le forum C
    Réponses: 8
    Dernier message: 04/12/2005, 20h14

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