question de date de livraison

Petit nouveau ! | 3 Messages

13 sept. 2005, 22:16

bonjour

Je cherche à faire fonctionner un script pour m'afficher un délais de livraison

J'ai récupéré differents scripts, qui modifiés et mis bout à bout me donnent PRESQUE le résultat que je cherche:
J'ai la date du jour, avec le nom du jours et du mois, et le n° de la semaine.

Je donne un délais (8 jours dans l'exemple), et j'ai bien ma date de livraison.

sauf que

J'aimerais l'avoir aussi avec le nom du jour et du mois, et avoir aussi le n° de la semaine.

Comment faire pour que le délais soit toujours un samedi?
j'explique:
on est le mardi 13 septembre. 8 jours de délais vont au mercredi 21, mais mon délais est le samedi qui suit, soit le 24.

Si quelqu'un a une idée géniale pour m'aider...

Merci cent mille fois



Code : Tout sélectionner

<?php // SCRIPT DATE // on cherche le jour à afficher $num_jour=strftime("%w"); switch ($num_jour) { case 0: $le_jour = "dimanche "; break; case 1: $le_jour = "lundi "; break; case 2: $le_jour = "mardi "; break; case 3: $le_jour = "mercredi "; break; case 4: $le_jour = "jeudi "; break; case 5: $le_jour = "vendredi "; break; case 6: $le_jour = "samedi "; break; } // on cherche le mois à afficher $le_mois = date("n "); switch ($le_mois) { case 1: $le_mois = "Janvier "; break; case 2: $le_mois = "Février "; break; case 3: $le_mois = "Mars "; break; case 4: $le_mois = "Avril "; break; case 5: $le_mois = "Mai "; break; case 6: $le_mois = "Juin "; break; case 7: $le_mois = "Juillet "; break; case 8: $le_mois = "Août "; break; case 9: $le_mois = "Septembre "; break; case 10: $le_mois = "Octobre "; break; case 11: $le_mois = "Novembre "; break; case 12: $le_mois = "Décembre "; break; } $Jour = date("d "); $Annee = date("Y "); $date = $Jour . $le_mois . $Annee; // SCRIPT DELAIS // Nombre de jours de délais $nb_ans='0'; $nb_mois='0'; $nb_jours = '8'; // on indique les nombre de jours de délais // on bidouille tout ça pour trouver la date de livraison function MyGetDate( $nb_ans='0', $nb_mois='0', $nb_jours='0', $mysql=FALSE){ if( is_int($nb_ans) && is_int($nb_mois) && is_int($nb_jours)){ $mysql ? $format = "Y-m-d" : $format = "d/m/Y"; return date($format, mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans)); } else{ return FALSE; } } // on affecte le résultat à une valeur $jour_delais1= date("d/m/Y", mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans)); // SCRIPT SEMAINE // numero de semaine actuelle $num_week=strftime("%W"); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <P>Nous sommes le <?PRINT "$le_jour $date ";?> <br><br> c'est la semaine <? echo $num_week;?> <br><br><br> ce produit sera livrable à partir du <?PRINT " $jour_delais1";?> </p> </body> </html>

Eléphant du PHP | 199 Messages

13 sept. 2005, 23:41

Voici un algorithme :

Code : Tout sélectionner

$date_theorique=time()+mktime(8 jours); $date=$date_theorique; for(; date("w",$date)!=5; $date+=mktime(1jour)); conversion de la date au format voulu
Les 2 font la paire : coder ET commenter :wink:

Tho
Eléphant du PHP | 58 Messages

14 sept. 2005, 11:12

Les switches c'est un peu lourd.

tu peux utiliser ça :
<?php
$jours = array("lundi","mardi"); // etc...

$le_jour = $jours[$num_jour];
?>
idem pour les mois.

Edit : Même si c'est pas le sujet, tu peux afficher la date plus rapidement et alléger ton code.
Essaie ça :
<?php
setlocale(LC_TIME, "fr");
$date = strftime("%A %d %B %Y");
echo $date;
?>

Petit nouveau ! | 3 Messages

14 sept. 2005, 20:46

Bonjour,

Merci pour le coup de main smarties, mais je ne sais pas trop quoi faire avec ton bour de code.....

Tho, avec tes explications, j'ai beaucoup alllllllléger le code!

Il faut maintenant que je trouve omment faire pour que le délais soit toujours un samedi...
je réexplique:
on est le mercredi 14 septembre. 8 jours de délais vont au jeudi 22, mais mon délais est le samedi qui suit, soit le 24.....
<?php 
// on cherche la date du jour
setlocale(LC_TIME, "fr"); 
$date = strftime("%A %d %B %Y"); // la variable $date est "la date du jour"

// SCRIPT DELAIS
// Nombre de jours de délais 
$nb_ans='0'; 
$nb_mois='0'; 
$nb_jours = '8'; // on indique les nombre de jours de délais

// on bidouille tout ça pour trouver la date de livraison
function MyGetDate( $nb_ans='0', $nb_mois='0', $nb_jours='0', $mysql=FALSE){ 
  if( is_int($nb_ans) && is_int($nb_mois) && is_int($nb_jours)){ 
    $mysql ? $format = "Y-m-d" : $format = "d/m/Y"; 
    return date($format, mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans)); 
  } 
  else{ 
    return FALSE; 
  } 
}

// on affecte le résultat à une valeur
$jour_delais= date("d/m/Y", mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans)); 

// SCRIPT SEMAINE
// numero de semaine actuelle
$num_week=strftime("%W");
?> 

Eléphant du PHP | 199 Messages

14 sept. 2005, 21:31

$date_theorique=time()+(3600*24*8);
$date=$date_theorique;
for(; date("w",$date)!=5; $date+=(3600*24));
echo $date;
$date est le 1er samedi apres 8 jours
Les 2 font la paire : coder ET commenter :wink:

Eléphant du PHP | 199 Messages

14 sept. 2005, 21:36

tu as juste a utiliser date() sur la variable $date pour choisir le format de ta date :wink:
Les 2 font la paire : coder ET commenter :wink:

Petit nouveau ! | 3 Messages

15 sept. 2005, 09:59

Bonjour,

Et bien voilà: avec votre aide, j'ai enfin le résultat correspondant à ce que je voulais.
Merci à tous.

Je joins le code final, si cela peut servir à quelqu'un ...

Merci encore
// DATE DU JOUR 
setlocale(LC_TIME, "fr"); 
$date_du_jour = strftime("%A %d %B %Y"); // "la date du jour" 

// SCRIPT DELAIS
//- - il n'y a que ces 2 lignes à renseigner - -
$nbr_j_delais=14;//indiquer le nombre de jours de délais
$j_l=4;// Jour de mise à disposition: dimanche=0 , lundi=1 , mardi=2, ...


$date_theorique=time()+(3600*24*$nbr_j_delais);
$date_delais=$date_theorique; 

for(; date("w",$date_delais)!=$j_l; $date_delais+=(3600*24)); 
// mise au format souhaité, et la variable $date_livraison est "la date de livraison, au jour choisi" 
$date_livraison = strftime("%A %d %B %Y",$date_delais);

// SCRIPT SEMAINE 
// numero de la semaine actuelle 
$num_week=strftime("%W"); 
// numero de la semaine de livraison 
$num_week_deliv=strftime("%W",$date_delais);

Tho
Eléphant du PHP | 58 Messages

15 sept. 2005, 12:28

Voilà qui fait plaisir à voir. Clair, concis, bien commenté. :D