Erreur datetime

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Voila je suis confronté a un problème sur mon site http://www.logistique-alsace.fr Quand je fais mon devis d'entreposage avec transport a partir d'une date donnée, je bloque a l’étape de calcule de mon devis (Après avoir rempli les informations relatif a ce devis). Quand je regarde ou bloque mon code je situe le problème ici (attention c'est long) :

  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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
<?php

switch ($departementD)
{
    case 25:
    case 70:
        switch ($date_client->format("l")) 
        {
            case 'Monday':              
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));
                break;
            case 'Tuesday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P2D'));
                break;
            case 'Wednesday':            
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));
                break;
            case 'Thursday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P5D'));
                break;
            case 'Friday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P4D'));
                break;
            case 'Saturday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P3D'));
                break;
            case 'Sunday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P2D'));
                break;
        }
        break;
    case 67:
        switch ($date_client->format("l"))
        {
            case 'Monday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));
                break;
            case 'Tuesday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));
                break;
            case 'Wednesday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));
                break;
            case 'Thursday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));
                break;
            case 'Friday':
                 $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P3D'));
                break;
            case 'Saturday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P3D'));
                break;
            case 'Sunday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P2D'));
                break;
        }
        break;
    case 68:
        switch ($date_client->format("l")) 
        {
            case 'Monday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));
                break;
            case 'Tuesday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P2D'));
                break;
            case 'Wednesday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));
                break;
            case 'Thursday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P4D'));
                break;
            case 'Friday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P3D'));
                break;
            case 'Saturday':    
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P3D'));
                break; 
            case 'Sunday':    
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P2D'));
                break;
        }
        break;
    case 90:
        switch ($date_client->format("l"))
        {
            case 'Monday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));
                break;
            case 'Tuesday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P2D'));
                break;
            case 'Wednesday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));
                break;
            case 'Thursday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P5D'));
                break;
            case 'Friday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P4D'));
                break;
            case 'Saturday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P3D'));
                break;
            case 'Sunday':    
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P2D'));
                break;
        }
        break;
    case 57 :
    case 54 :
    case 88 :
        switch ($date_client->format("l")) 
        {
            case 'Monday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P2D'));
                break;
            case 'Tuesday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));  
                break;
            case 'Wednesday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P2D'));
                break;     
            case 'Thursday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P1D'));  
                break;
            case 'Friday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P5D'));
                break;  
            case 'Saturday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P4D'));
                break;  
            case 'Sunday':
                $date_enl = $date_client;
                $date_enl = $date_enl->add(new DateInterval('P3D'));
                break;        
        }
        break;
    }
switch ($departementA)
{
    case 25:
    case 70:
        switch ($date_enl->format("l"))
        {
            case 'Monday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;
            case 'Tuesday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P2D'));
                break;
            case 'Wednesday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;
            case 'Thursday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P5D'));
                break;
            case 'Friday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P4D'));
                break;
            case 'Saturday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P3D'));
                break;
            case 'Sunday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P2D'));
                break;
        }
        break;
    case 67: 
        switch ($date_enl->format("l")) 
        {
            case 'Monday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;
            case 'Tuesday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;
            case 'Wednesday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;
            case 'Thursday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;
            case 'Friday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P3D'));
                break;
            case 'Saturday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P2D'));
                break;
            case 'Sunday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));  
                break;
        }
        break;
    case 68:
        switch ($date_enl->format("l")) 
        {
            case 'Monday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;
            case 'Tuesday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P2D'));
                break;
            case 'Wednesday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;
            case 'Thursday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P4D'));
                break;
            case 'Friday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P3D'));
                break;
            case 'Saturday':    
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P2D'));
                break; 
            case 'Sunday':    
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;
        }
        break;
    case 90:
        switch ($date_enl->format("l")) 
        {
            case 'Monday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;
            case 'Tuesday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P2D'));
                break;
            case 'Wednesday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D')); 
                break;
            case 'Thursday':
                $date_liv = new DateTime($date_enl->format('d-m-Y')); 
                $date_liv->add(new DateInterval('P5D'));
                break;
            case 'Friday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P4D'));
                break;
            case 'Saturday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P3D'));
                break;
            case 'Sunday':    
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P2D'));  
                break;
        }
    case 57 :
    case 54 :
    case 88 :
        switch ($date_enl->format("l")) 
        {
            case 'Monday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P2D'));
                break;
            case 'Tuesday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
                break;
            case 'Wednesday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P2D'));
                break;     
            case 'Thursday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;
            case 'Friday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P5D'));
                break;  
            case 'Saturday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P4D'));
                break;  
            case 'Sunday':
                $date_liv = new DateTime($date_enl->format('d-m-Y'));
                $date_liv->add(new DateInterval('P1D'));
                break;        
        }
        break;
}

$date2 = new DateTime($date_enl->format('d-m-Y'));
$date2->add(new DateInterval('P'.$mois.'M'));

?>

Le switch marche parfaitement sur les autres pages. Cependant la création de la $date2 est uniquement sur cette page. Je pense que ça viens de la mais je ne trouve pas pourquoi. Comme vous le voyez je suis exactement la même méthode a chaque fois.

Je bloque dessus depuis 1 jour, votre aide serrais précieuse

+0 -0
Staff

Tes switch sont très longs et avec plein de duplication de code. Il serait peut être plus raisonnable de :

  • nous expliquer ce que tu veux faire
  • trouver un autre moyen d'écrire ce code

Enfin, tu dis être bloqué, mais tu ne nous dis pas comment : est-ce que tu as une erreur, est-ce que le résultat que tu attends n'est pas celui obtenu?

+1 -0
Auteur du sujet

Je suis bloqué car paage ne ce charge pas entièrement Et quand je regarde le CS il s’arrête au niveau de ce code (sur le navigateur).

Le but su switch est de calculer 2 date. La première par rapport a au jour de la date donné par le client (date_client) la seconde par rapport au jour de la date calculer par le premier switch (date_enl)

Mais ce switch marche bien sur les autres partie du site. C'est la derniére partie avec $date2 qui bloque je pense

Édité par Anthony

+0 -0

Le but su switch est de calculer 2 date. La première par rapport a au jour de la date donné par le client (date_client) la seconde par rapport au jour de la date calculer par le premier switch (date_enl)

Mais ce switch marche bien sur les autres partie du site. C'est la derniére partie avec $date2 qui bloque je pense

Anthony

Tu n'as pas de façon plus propre de calculer tes dates? Une fonction un peu plus générique. Parce que là c'est quand même très moche…

Comment les dates sont elles calculées?

Xia, peluche olympienne |Python en s'amusant | Random xkcd

+0 -0
Auteur du sujet

C'est a dire "comment sont telles calculées ?" Oo

Je conçois que le switch ne soit pas opti, mais je ne pense pas (en faite je suis presque certain) que mon problème vienne de la ^^

Après toute suggestion d'optimisation est la bienvenue :)

+0 -0
Auteur du sujet

Alors,

Dans le cadre d'un devis en ligne pour de l'entreposage le client rempli un formulaire qui contiens en autre la date a la quel sa marchandise est disponible pour que l'on sache a partir de quand nous pouvons aller la chercher. Le formulaire nous indique aussi le département dans le quel le client est ainsi que le temps en mois de stockage.

Le switch a comme entrée la date de dispo du client (date_client) est le département de notre dépôt (DépartementD)et celui du client (DepartementA).

Dans la date client on extrait le jour en toute lettre (lundi, mardi etc…) puis en fonction du cas (combinaison département + jour) j'additionne des jours a date_enl qui serra la date a la quel on viens chercher la marchandise. Puis on calcule la date a la quel on commence le stockage en fonction du jour de date_enl.

Ensuite on ajoute le temps de stockage de la marchandise a Date2 qui serra la date de fin de notre prestation

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte