code pour compter nb jours

Eléphanteau du PHP | 13 Messages

24 mars 2010, 01:04

bonjours a tous :)

je me présente je suis nouveau sur le forum est je débute en php !!! la j'ai affaire a un code qui me complique la vie :x
voila je suis entrain de créer une petit application, dans cette application il y a une partie ou une personne doit choisir une date de départ et de retours via un formulaire html/php le voila :
<Form method=post action="http://localhost/projet/Script/script2.php">
<select name="jourdep">
<?php
echo("\t\t\t\t\t<option value=\"\">Jours :</option>\n");
for($i=1 ; $i < 32 ; $i++)
{
echo("\t\t\t\t\t<option value=\"$i\">$i</option>\n");
}
?>
</select>
<select name="moisdep">
<?php
echo("\t\t\t\t\t<option value=\"\">Mois :</option>\n");
for($i=1 ; $i < 13 ; $i++)
{
echo("\t\t\t\t\t<option value=\"$i\">$i</option>\n");
}
?>
</select>
<select name="anneedep">
<?php
echo("\t\t\t\t\t<option value=\"\">Année :</option>\n");
for($i=2018 ; $i > 2009 ; $i--)
{
echo("\t\t\t\t\t<option value=\"$i\">$i</option>\n");
}
?>
</select>
</td>
</tr> 
<tr id="cbfr_78">
<td class="titleCell">Retour:</td>
<td>
<select name="jourret">
<?php
echo("\t\t\t\t\t<option value=\"\">Jours :</option>\n");
for($i=1 ; $i < 32 ; $i++)
{
echo("\t\t\t\t\t<option value=\"$i\">$i</option>\n");
}
?>
</select>
<select name="moisret">
<?php
echo("\t\t\t\t\t<option value=\"\">Mois :</option>\n");
for($i=1 ; $i < 13 ; $i++)
{
echo("\t\t\t\t\t<option value=\"$i\">$i</option>\n");
}
?>
</select>
<select name="anneeret">
<?php
echo("\t\t\t\t\t<option value=\"\">Année :</option>\n");
for($i=2010 ; $i > 2009 ; $i--)
{
echo("\t\t\t\t\t<option value=\"$i\">$i</option>\n");
}
?>
</select></form>
ensuite le script "script 2.php" va récupérer les données est les stocké dans un fichier texte :
<?php
$jourdep = $_POST['jourdep'];
$moisdep = $_POST['moisdep'];
$anneedep = $_POST['anneedep'];
$jourret = $_POST['jourret'];
$moisret = $_POST['moisret'];
$anneeret = $_POST['anneeret'];
/*$cause = $_POST['cause'];*/

if ($jourdep !="" && $moisdep !="" && $anneedep !="" && $jourret !="" && $moisret !="" && $anneeret !="" && $diff !="")

{
	
		
$ouvre=fopen("fichecong.txt","a+");
fwrite($ouvre, " Depart le " .$jourdep. " " .$moisdep. " " .$anneedep. "\n". " Retour Le " .$jourret. " " .$moisret. " " .$anneeret." nombre de jours ".$interval."\n");   
fclose($ouvre);	
echo 'Merci votre presence est justifier <a href="http://localhost/projet/employe/employe1.html">Retour</a>';
	}
?>
exemple d'affichage du .txt:

Depart le 3 2 2010
Retour Le 3 4 2010

Mon problème :
je veux ajouté un code a mon fichier script2.php pour qu'il compte les jours entre le départ et retour après il retourne une variable par ex $nbjours pour afficher le nombre de jours.
J'ai essayé de faire des conditions if mais ça devient compliqué quand on a deux mois différent :(

Merci d'avance pour votre aide :priere:

ViPHP
ViPHP | 5462 Messages

24 mars 2010, 01:05

hello, ta quelle version de PHP ?

Eléphanteau du PHP | 13 Messages

24 mars 2010, 01:32

hello stealth merci pour ta réponse,

j'ai la version : 5.1.2

merci encore !!

++

ViPHP
ViPHP | 5462 Messages

24 mars 2010, 01:46

dommage, on va faire a l'ancienne, tu creer un timestamp grace a une date et inversement,
ducoup

depart : date -> timestamp
retour : date -> timestamp

diff = retour->timestamp - depart->timestamp (a toi de formater en jour apes par rapport au seconde)

http://fr2.php.net/manual/fr/function.date.php
http://php.net/manual/fr/function.time.php
http://fr2.php.net/manual/fr/function.mktime.php
http://fr2.php.net/manual/fr/function.strtotime.php

avec ca t'es paré :wink:

ViPHP
AB
ViPHP | 5818 Messages

24 mars 2010, 02:09

Petite remarque sur le principe.

Si ton application est importante (je lis "...justifier votre absence...") tu devrais te tourner du coté d'une bdd pour stocker tes données.
Un fichier texte ne devrait pas à mon avis contenir de données stratégiques si l'on est amené à écrire dedans. Ensuite tu aurais des possibilités de recherche conversion dates etc. beaucoup plus évoluées, performantes et sécurisées.

Invité
Invité n'ayant pas de compte PHPfrance

24 mars 2010, 04:35

re !!

merci pour vos réponses amigos !!

@ stealth35 j'ai pas bien compris se que tu veux dire, pour le timestamp c la fonction qu'il faut l'utiliser pour connaitre le nombre de jours c'est ça ?
juste une précision, les donnée qui vont être saisie sont des données dynamique 'au choix' a partir d'un formulaire select ou le user va choisir le départ et le retour après le script va écrire le nombre de jours sous les deux date saisie, comme j'ai signalé je débute et mes connaissance avec php sont limite désolé!
si vous pouvez me clarifier comment faire avec un petit exemple via les codes que j'ai posté sa sera sympa :)

@AB t'as raison !! mais se que je suis entrain de faire est une maquette et c'est sur qu'avec mysql sa sera moins compliqué :)

Merci encore pour votre mes amis !!
++

ViPHP
ViPHP | 5462 Messages

24 mars 2010, 11:09

le timestamp c'est le nombre de secondes de puis le 1 janvier 1970, grâce a ce repère tu peux faire des calculer sur les dates

ViPHP
AB
ViPHP | 5818 Messages

24 mars 2010, 11:36

Il y a des exemples dans ce tuto

Bon il date un peu mais c'est toujours fonctionnel. Sûr que c'est plus laborieux que de calculer un écart avec DateTime::diff mais cette fonction n'est disponible qu'avec PHP5.3

Eléphanteau du PHP | 13 Messages

24 mars 2010, 16:06

Merci amigos :)

j'ai trouvé la solution grâce a vous :)

@ Ab les tutos sont génial et bien expliquer !!!

j'ai réussi a trouvé la solution a mon problème en suivant le tuto 'date écart' !

Merci encore :wink:

++