Bonjour à tous, je suis en stage et on me demande quelque chose qui dépasse mes compétences...
Je dois faire un formulaire ou l'on rentre deux date (date de début et date de fin) pour des locations, et je dois récupérer le prix des deux dates dans une base de donnée appuyer sur un bouton et que le prix additionné s'affiche dans un autre champ (juste en dessous par exemple).
Je passe par une basse de donnée car la grille de tarif et très complexe et change toutes les semaines de l'année !
La fonction ultime serai que si je choisit par ex une date du lundi puis du jeudi de la même semaine, il calcul qu'il y a 4 jours trouve le prix de ces 4 jours les additionne et rend le résultat...
Je viens d'un DUT SRC ou on fait beaucoup de choses (graphisme, communication et programmation)) un peu de tout mais pas beaucoup, donc je rame carrément quand ça devient compliqué comme ça ! est ce que vous auriez une solution à m'apporter :(
Précision : dans ma base j'ai id_jours, date, prix, semaine(1,2,3 ect...)
Merci d'avance
function dayDiff($from, $to){
// http://www.elevationmedias.com/2011/12/10/calculer-le-nombre-de-jours-entre-2-dates-en-php/
$nbSecondes = 60 * 60 * 24;
$diff = strtotime($to) - strtotime($from);
return round($diff / $nbSecondes);
}
// YYYY-MM-DD
echo nbJours('2001-01-01', '2001-01-11'); // Retourne 10
Quels sont les autres choses ou tu bloque pour bien comprendre le *hic* ?
J'ai beaucoup de mal à comprendre, comment vous tariffez...
C'est un prix à la journée, qui change d'une semaine à l'autre ?
Donnes un exemple le plus proche possible de la réalité pour expliquer comment vous calculez les prix
du lundi au samedi ça peut être à 65 euros pour la semaine 4 on va dire et à partir du même samedi ça va passer à 43 euros jusqu'au samedi suivant!
Je ne voyais pas ça si simple Glaived ^^' mais du coup comment ça peut fonctionner avec un formulaire?
Si t'as le droit de modifier la BDD, voila ce que je te conseille:
Etape 1
Crée une table tarifs_2014, avec des champs jour (datetime), tarif (float, default=0 ).
Etape 2
crée une fonction putPrizePerPeriod(\Dateperiod $period) qui prends comme parametre un objet \DatePeriod, et un prix, la fonction vas boucler sur toutes les journés de l'objet Dateperiod et mettre le prix.
Etape 3
Crée un objet Dateperiod qu'on vas appeler $year pour les 365 jours de l'année 2014, passe à ta putPrizePerPeriod( $year , 0 );
Etape 4
Maintenant que tu as une table avec tous les jours de l'année initialisée à 0, tu peux mettre les vraix prix,
Tu crée un DatePeriod $semaine4, hop un pti coup de putPrizePerPeriod($semaine4, 65.00 );
Etape 5 tu crée une nouvelle fonction getPrizePerPeriod(\Dateperiod $period) qui prends en paremetre un objet datePeriod et retourne la somme des tarifs pour chaque jour du datePeriod.
Etape 6
Attrapes une bière et enjoy en attendant de créer ta table tarifs 2015...
Etape 7 (option )
Crée deux fonctions getPrizePerDate(\Datetime $day ) et putPrizePerDate(\Datetime $day ) parceque meme si sa fonctionne, créer un dateperiod pour un jour c'est débile...
Attention !!! les dates antérieures à la date actuelle ne doivent pas etre modifiables, fait cette vérification c'est important