[php]
le_garcon_formidable
-
ouyouyou -
ouyouyou -
Bonjour,
voilà je bute sur un problème débutant en php...
Voici ma page HTML avec mes scripts php :
<html>
<body>
<?php
// Cette fonction calcule le prix définitif après ristourne de 30%
function prixremise($prixpromo) {
$prix = 122 ;
$ristourne = 30 ;
$prixpromo = $prix - $prix * $ristourne/100 ;
return $prixpromo;
}
?>
<p>
<?php echo prixremise(122) ;?>
</p>
<p>Age :
<?php
//cette fonction me permet d'afficher l'âge de la personne
function calcul_age($date_de_naissance) {
list($annee, $mois, $jour) = split('[-.]', $date_de_naissance);
$today['mois'] = date('n');
$today['jour'] = date('j');
$today['annee'] = date('Y');
$annees = $today['annee'] - $annee;
if ($today['mois'] <= $mois) {
if ($mois == $today['mois']) {
if ($jour > $today['jour'])
$annees--;
}
else
$annees--;
}
echo $annees;
}
calcul_age('1934-11-20')
?></p>
<p>Classe :</p>
<?php
//cette fonction est censé me permettre de classe les gens en fonction de leur âge
function classeprix($annees) {
if ($annees < 26)
{
return '-1';
}
elseif ($annees > 65)
{
return '1' ;
}
else
{return '0';}
}
classeprix($annees)
?>
</body>
</html>
Come je débute je souhaiterai qu'une bonne âme prenne du temps pour :
1) me dire si mon code est "valable"
2) me dire pourquoi mon classeprix n'affiche rien :-(
je vous remercie tous
voilà je bute sur un problème débutant en php...
Voici ma page HTML avec mes scripts php :
<html>
<body>
<?php
// Cette fonction calcule le prix définitif après ristourne de 30%
function prixremise($prixpromo) {
$prix = 122 ;
$ristourne = 30 ;
$prixpromo = $prix - $prix * $ristourne/100 ;
return $prixpromo;
}
?>
<p>
<?php echo prixremise(122) ;?>
</p>
<p>Age :
<?php
//cette fonction me permet d'afficher l'âge de la personne
function calcul_age($date_de_naissance) {
list($annee, $mois, $jour) = split('[-.]', $date_de_naissance);
$today['mois'] = date('n');
$today['jour'] = date('j');
$today['annee'] = date('Y');
$annees = $today['annee'] - $annee;
if ($today['mois'] <= $mois) {
if ($mois == $today['mois']) {
if ($jour > $today['jour'])
$annees--;
}
else
$annees--;
}
echo $annees;
}
calcul_age('1934-11-20')
?></p>
<p>Classe :</p>
<?php
//cette fonction est censé me permettre de classe les gens en fonction de leur âge
function classeprix($annees) {
if ($annees < 26)
{
return '-1';
}
elseif ($annees > 65)
{
return '1' ;
}
else
{return '0';}
}
classeprix($annees)
?>
</body>
</html>
Come je débute je souhaiterai qu'une bonne âme prenne du temps pour :
1) me dire si mon code est "valable"
2) me dire pourquoi mon classeprix n'affiche rien :-(
je vous remercie tous
A voir également:
- [php]
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php - Forum Webmastering
- Alert php - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
9 réponses
Bonjour
A priori, ton code a l'air valable, à part quelques détails :
un $annees-- à la place d'un $mois--. Je te laisse trouver où
tu appelles 3 fois la fonction date, imagine un l'exécution de ton script autour de minuit le 31 décembre 2007. tu risques de te croire le 31 janvier 2008 ou le 31 décembre 2008. Fais plutôt (par exemple)
$maintenant= time();
$today['mois'] = date('n',$maintenant);
$today['jour'] = date('j',$maintenant);
$today['annee'] = date('Y',$maintenant);
pourquoi mon classeprix n'affiche rien :-(
Parce que tu ne lui demandes pas d'afficher quelque chose ... Il n'y a aucun 'echo'
D'ailleurs, cette fonction devrait faire return -1 plutot que return '-1' idem pour les autres valeurs car je pense que c'est un nombre que tu veux retourner, pas une chaîne de caractères
A priori, ton code a l'air valable, à part quelques détails :
un $annees-- à la place d'un $mois--. Je te laisse trouver où
tu appelles 3 fois la fonction date, imagine un l'exécution de ton script autour de minuit le 31 décembre 2007. tu risques de te croire le 31 janvier 2008 ou le 31 décembre 2008. Fais plutôt (par exemple)
$maintenant= time();
$today['mois'] = date('n',$maintenant);
$today['jour'] = date('j',$maintenant);
$today['annee'] = date('Y',$maintenant);
pourquoi mon classeprix n'affiche rien :-(
Parce que tu ne lui demandes pas d'afficher quelque chose ... Il n'y a aucun 'echo'
D'ailleurs, cette fonction devrait faire return -1 plutot que return '-1' idem pour les autres valeurs car je pense que c'est un nombre que tu veux retourner, pas une chaîne de caractères
bonjour,
moi je vois une annomalie dans la fonction:
function prixremise($prixpromo) {
$prix = 122 ;
$ristourne = 30 ;
$prixpromo = $prix - $prix * $ristourne/100 ;
return $prixpromo;
}
que tu appelles par echo prixremise(122)
cela veut dire que tu lui passes comme argument la valeur 122 ( en principe le prix a calculer pour la remise)
hors dans ta fonction tu as $prixpromo comme argument que tu n'utilises pas dans ta formule de calcul comme element mais comme resultat
moi je vois une annomalie dans la fonction:
function prixremise($prixpromo) {
$prix = 122 ;
$ristourne = 30 ;
$prixpromo = $prix - $prix * $ristourne/100 ;
return $prixpromo;
}
que tu appelles par echo prixremise(122)
cela veut dire que tu lui passes comme argument la valeur 122 ( en principe le prix a calculer pour la remise)
hors dans ta fonction tu as $prixpromo comme argument que tu n'utilises pas dans ta formule de calcul comme element mais comme resultat
function prixremise($prix) { //$prix = 122 ; $ristourne = 30 ; $prixpromo = $prix - $prix * $ristourne/100 ; return $prixpromo; }
merci à vous deux,
mais je bute toujours sur le fait que ma fonction ne me retourne rien comme il le faudrait.
En fait elle doit afficher -1, 1 et 0 en fonction de l'âge de la personne...
Pour qu'elle ecrive quelque chose j'ai changé comme vous me l'avez conseillé en y insérant écho. je n'ai pas encore retouché ma fonction calcul_age, je verrai ça ensuite...
ça donne :
_____________________
<p>Age :
<?php
function calcul_age($date_de_naissance) {
list($annee, $mois, $jour) = split('[-.]', $date_de_naissance);
$today['mois'] = date('n');
$today['jour'] = date('j');
$today['annee'] = date('Y');
$annees = $today['annee'] - $annee;
if ($today['mois'] <= $mois) {
if ($mois == $today['mois']) {
if ($jour > $today['jour'])
$annees--;
}
else
$annees--;
}
echo $annees;
}
calcul_age('1934-11-20')
?>
<p>Classe :
<?php
function classeprix($annees)
{
if ($annees < 26)
{
echo '-1';
}
elseif ($annees > 65)
{
echo '1' ;
}
else
{
echo '0';
}
}
classeprix($annees)
?>
mais je bute toujours sur le fait que ma fonction ne me retourne rien comme il le faudrait.
En fait elle doit afficher -1, 1 et 0 en fonction de l'âge de la personne...
Pour qu'elle ecrive quelque chose j'ai changé comme vous me l'avez conseillé en y insérant écho. je n'ai pas encore retouché ma fonction calcul_age, je verrai ça ensuite...
ça donne :
_____________________
<p>Age :
<?php
function calcul_age($date_de_naissance) {
list($annee, $mois, $jour) = split('[-.]', $date_de_naissance);
$today['mois'] = date('n');
$today['jour'] = date('j');
$today['annee'] = date('Y');
$annees = $today['annee'] - $annee;
if ($today['mois'] <= $mois) {
if ($mois == $today['mois']) {
if ($jour > $today['jour'])
$annees--;
}
else
$annees--;
}
echo $annees;
}
calcul_age('1934-11-20')
?>
<p>Classe :
<?php
function classeprix($annees)
{
if ($annees < 26)
{
echo '-1';
}
elseif ($annees > 65)
{
echo '1' ;
}
else
{
echo '0';
}
}
classeprix($annees)
?>
Re-Bonjour
je bute toujours sur le fait que ma fonction ne me retourne rien comme il le faudrait
Tu ne butes pas toujours, tu butes maintenant. Avant, elle te retournait bien quelque chose. Si tu veux qu'elle te retourne quelque chose, il faut qu'elle fasse des return 0, return 1 etc... ça ne me semble pas très mystérieux
j'ai changé comme vous me l'avez conseillé en y insérant écho
Relis bien ma réponse, je ne t'ai jamais conseillé d'insérer un echo. Tu as demandé pourquoi elle n'affichait rien, j'ai répondu que c'était parce qu'il n'y avait pas d'echo dedans. C'est une réponse exacte à une question précise, pas un conseil.
Maintenant ce qui suit est un conseill : remets des return dans ta fonction. Mais au lieu de l'invoquer simplement par classeprix($annees), fais plutôt:
echo classeprix ($annees);
Mais ça ne marchera encore pas parce que $annees n'a aucune valeur. J'ai beau lire ton script, le seul autre $annees que je vois est local à ta fonction calcul_age, autrement dit complètement inconnu lors de l'appel à classeprix.
je bute toujours sur le fait que ma fonction ne me retourne rien comme il le faudrait
Tu ne butes pas toujours, tu butes maintenant. Avant, elle te retournait bien quelque chose. Si tu veux qu'elle te retourne quelque chose, il faut qu'elle fasse des return 0, return 1 etc... ça ne me semble pas très mystérieux
j'ai changé comme vous me l'avez conseillé en y insérant écho
Relis bien ma réponse, je ne t'ai jamais conseillé d'insérer un echo. Tu as demandé pourquoi elle n'affichait rien, j'ai répondu que c'était parce qu'il n'y avait pas d'echo dedans. C'est une réponse exacte à une question précise, pas un conseil.
Maintenant ce qui suit est un conseill : remets des return dans ta fonction. Mais au lieu de l'invoquer simplement par classeprix($annees), fais plutôt:
echo classeprix ($annees);
Mais ça ne marchera encore pas parce que $annees n'a aucune valeur. J'ai beau lire ton script, le seul autre $annees que je vois est local à ta fonction calcul_age, autrement dit complètement inconnu lors de l'appel à classeprix.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Encore merci de prendre du temps surement précieux, "le père"
lol, j'avais modifié avant ma réponse tout ce que vous me dites dans votre réponse !
"$annees n'a aucune valeur. J'ai beau lire ton script, le seul autre $annees que je vois est local à ta fonction calcul_age, autrement dit complètement inconnu lors de l'appel à classeprix." => j'avais fini par en déduire la même chose que vous :-S
Mais je pensais, jusqu'à présent que $annees étant présente dans calcul_age, il était connu lors de l'appel à classeprix...
C'est cela qu'il faut que j'attaque !
Donc question, comment récupérer la valeur de $annees une fois l'éxécution de calcul_age fait pour qu'elle soit utiliser par classeprix... à tous les coups y a la réponse dans ma question ! mdrrrrrrrr... euh un peit indice ?
lol, j'avais modifié avant ma réponse tout ce que vous me dites dans votre réponse !
"$annees n'a aucune valeur. J'ai beau lire ton script, le seul autre $annees que je vois est local à ta fonction calcul_age, autrement dit complètement inconnu lors de l'appel à classeprix." => j'avais fini par en déduire la même chose que vous :-S
Mais je pensais, jusqu'à présent que $annees étant présente dans calcul_age, il était connu lors de l'appel à classeprix...
C'est cela qu'il faut que j'attaque !
Donc question, comment récupérer la valeur de $annees une fois l'éxécution de calcul_age fait pour qu'elle soit utiliser par classeprix... à tous les coups y a la réponse dans ma question ! mdrrrrrrrr... euh un peit indice ?
Une variable présente à l'intérieur d'une fonction, sauf si elle est déclarée avec le mot-clé global, n'est connue qu'à l'intérieur de cette fonction. Ça s'appelle une variable locale et la plupart des langages de programmation fonctionnent comme ça.
comment récupérer la valeur de $annees une fois l'éxécution de calcul_age fait pour qu'elle soit utiliser par classeprix
Deux solutions :
La première, déconseillée par tous les manuels (et les intellectuels aussi, d'ailleurs ;) ) est d'utiliser le mot-clef global. Je te laisse lire dans ta doc PHP comment l'utiliser. Quand tu le sauras, ne l'utilise pas. Enfin, aussi rarement que possible.
La seconde, c'est d'utiliser aussi return dans calcul_age pour renvoyer la valeur de $annees
comment récupérer la valeur de $annees une fois l'éxécution de calcul_age fait pour qu'elle soit utiliser par classeprix
Deux solutions :
La première, déconseillée par tous les manuels (et les intellectuels aussi, d'ailleurs ;) ) est d'utiliser le mot-clef global. Je te laisse lire dans ta doc PHP comment l'utiliser. Quand tu le sauras, ne l'utilise pas. Enfin, aussi rarement que possible.
La seconde, c'est d'utiliser aussi return dans calcul_age pour renvoyer la valeur de $annees
re salut,
le principe d'une fioonction de son appel et de l'affichage du résultat:
un petit exemple
il vaut mieux mettre l'echo en dehors de ta fonction
Les valeurs des arguments passes lors de l'appel peuvent être des varaibles
ex
Enfin c'est l'ordre des arguments qui compte
le principe d'une fioonction de son appel et de l'affichage du résultat:
un petit exemple
// la fonction: function ma_fonction($arg1,$arg2,$arg3){ $resulat=$arg1+$arg2+$arg3; return $resultat; // la fonction a la fin te renvoie le resultat } //appel de la fonction, en lui passant les valeurs de chaque argument: $somme=ma_fonction(5,3,10); // et l'affichage du resultat echo "La somme est: ".$somme; // ça devrait faire 18 ?? ou si tu veux faire appel et affichage d'un coup: echo "La somme est: ".ma_fonction(5,3,10);
il vaut mieux mettre l'echo en dehors de ta fonction
Les valeurs des arguments passes lors de l'appel peuvent être des varaibles
ex
$val1=5; $val2=10; $val3=3; echo "La somme est: ".ma_fonction($val1,$val2,$val3);
Enfin c'est l'ordre des arguments qui compte