Script calcul durée

Répondre
noxe
le 23/02/2005 à 13:24
noxe
J'ai voulu utiliser votre script publié à cet adresse: http://www.lephpfacile.com/tips/index.php?p=11 .
Le problème c'est que je suis un débutant en php et en programmation en général. J'ai eu un certain nombre d'erreur c'est pourquoi je vous demande de l'aide.
Voici mon problème :
Je voudrais calculer la durée de sejour pour des individus dans une base de donnée mysql:

J'ai la date d'entrée et la date de sorti sous forme YYYY-MM-DD;
J'ai voulu utiliser les fonctions YEAR(DATE), MONTH(DATE) et DAYOFMONTH(DATE)

Voici où j'en suis :

$connexion = mysql_connect($hote,$utilisateur,$password);
if($connexion>0)
echo "Connexion OK";
else
echo "pas de connexion active";
echo "</BR>";
//connexion à une base
$db = mysql_select_db("ma_base");
if($db>0)
echo "Selection de la base";
else
echo "Impossible de choisir la base";
echo "</BR>";
//prendre la liste des champs de la table


$mysql_result = mysql_query("SELECT ID, NIP, DATE_ENT, DATE_SOR, DAYOFMONTH(`DATE_ENT`), DAYOFMONTH(`DATE_SOR`), MONTH(`DATE_ENT`), MONTH(`DATE_SOR`), YEAR(`DATE_ENT`), YEAR(`DATE_SOR`) FROM ma_base;");
// Déclarer les variables de date

$jour1=DAYOFMONTH(`DATE_ENT`);
$jour2=DAYOFMONTH(`DATE_SOR`);
$mois1=MONTH(`DATE_ENT`);
$mois2=MONTH(`DATE_SOR`);
$annee1=YEAR(`DATE_ENT`);
$annee2=YEAR(`DATE_SOR`);

function facteur($jour , $mois , $annee){
$b=365*$annee;
$c=31*($mois-1);
if (($mois==1) || ($mois==2)){
$d= 0;
$e = intval(($annee -1)/4);
$h = intval(0.75*(intval(($annee-1)/100)+1));
}
else {
$d= intval(0.4*$mois+2.3);
$e = intval($annee/4);
$h = intval(0.75*(intval($annee/100)+1));
}
$result = $jour + $b+ $c - $d +$e -$h;
return $result;
}

function diff_dates_cal_greg($jour1 , $mois1 , $annee1 , $jour2 , $mois2 , $annee2){
$diff = facteur($jour2 , $mois2 , $annee2)-facteur($jour1 , $mois1 , $annee1);
return $diff;
$diff=DUREE_SEJ;
}
//prendre chaque rangée
echo "<TR><TD>ID</TD><TD>NIP</TD><TD>DATE_ENT</TD><TD>DATE_SOR</TD><TD>DUREE_SEJ</TD></TR>\n";
while($row = mysql_fetch_array($mysql_result))
{while (list($key,$val)=each($row))
print "<TR>\n" ;
print "<TD>".$row['ID']. "</TD><TD>".$row['NIP']."</TD><TD>".$row['DATE_ENT']. "</TD><TD>".$row['DATE_SOR']. "</TD><TD>".$row['DUREE_SEJ']."</TD>\n";
print "</TR>\n";
}
//Fermeture de la base
mysql_close($connexion);
echo "Fermetture de connexion";
echo "</BR>";
?>
</TABLE>
</body>
</html>

Sans la partie du script le reste fonctionne; quand je l'ajoute j'ai une erreur de type undefine fonction DAYOFMONTH()
alors que quand je lance le select directement dans mon phpadmin j'ai bien les résultats.

Si vous pouvez m'aider cela m'avancerait vachement.

merci d'avance.
Cordialement
keitarosan
le 23/02/2005 à 13:45
keitarosan
deja utilise le wall ou le bb-code...

Ca ne vous arrive jamais de lire les conditions d'utilisation d'un forum ?
ou au moins d'etre curieux et d'aller voir sur les liens ???


Ensuite, sur les premieres lignes, tu fais des trucs "bizarres".

En effet, tu verifies si on peut se connecter a la base, si on peut choisir la base en question, t'affiche les message correspondant. Ca, ok.
Mais tu continue en lancant des requetes, meme si t'as pas pu te connecter a la base...
Tu manques un peu de logique la ;-)

ensuite, il est préférable d'utiliser "echo" en lieu et place de "print".

un peu d'indentation dans ton code serait le bienvenu.

ensuite, tes balise HTML, tu devrais soit les mettre en minuscule, soit en majuscule, mais pas un mix des deux.
La ca fait: "j'utilise un logiciel de creation HTML a la dreamweaver" :p

donne des noms significatif a tes variables, car des $a, $b, $c..., ca fait un peu programmation sur calculatrice CASIO :p

et ca, c'est quoi ??:

<?php
$jour1=DAYOFMONTH(`DATE_ENT`);
$jour2=DAYOFMONTH(`DATE_SOR`);
$mois1=MONTH(`DATE_ENT`);
$mois2=MONTH(`DATE_SOR`);
$annee1=YEAR(`DATE_ENT`);
$annee2=YEAR(`DATE_SOR`);

?>


je me souviens pas avoir vu ces fonctions en php...

et meme si elles existaient, tu ne pourrais pas recupérer les champs comme ca `DATE_ENT`.
En plus les `` sont pour les requetes mysql (et encore, j'ai jamais vraiment compris leur utilités, ca marche très bien sans...

Donc a mon avis, tu devrais commencer par voir les bases du php, et faire attention aux scripts que tu récupères ^^.
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
noxe
le 23/02/2005 à 18:43
noxe
Me voila de retour

Je pense que parfois, au lieu de monter sur ses grands chevaux et de faire le grand GURU, il est mieux de se dire qu'un jour on est passé par la case départ comme celui qui est en face de soit et qui pose peut être des questions idiotes. smiley
J'ai le plaisir de vous annoncer que j'y suis arrivé n'en déplaise à certains.
Cela m'a pris la journée mais j'ai quand même une satisfaction infini d'y être parvenu seul.
Salut
i M@N
le 23/02/2005 à 18:46
i M@N
Hello !

Keitarosan >> il a pas tord en plus t'as le droit de dire bonjour et au revoir toi aussi. smiley

@+...
One Love, One Heart, One Unity.
i M@N
le 23/02/2005 à 18:48
i M@N
Reuh ...

Je rectifie : vous avez tous les deux le droit de dire bonjour et Keitarosan celui de dire au revoir. smiley

@+...
One Love, One Heart, One Unity.
keitarosan
le 23/02/2005 à 22:09
keitarosan
oooops ^^

Bonjour :)

Désolé si j'ai paru un peu froid :)
C'était pas mon intension. Mais je manque parfois de diplomatie smiley

Vraiment désolé :(

Promis, j'éviterais de recommencer, et je commencerais dorénavent par des bonjour ^^
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours