Page 1 sur 3

Aide pour un code PHP

Posté : mer. 18 févr. 2015 12:25
par LexisBass
Bonjour les amis, voila mon problème est mon suivant, je dois suivre une formation PHP pour mon école sur technofutur, arrivé au 3ème module, je dois remplir une évaluation et j'ai besoin de votre aide car je ne comprends pas une question alors si vous pouvez m'éclairer et corriger par ailleurs mon code je vous en serrez très reconnaissant.

Voici l'énoncé:
"Écrivez un petit script PHP qui affiche : « Nous sommes mardi. » si on est un mardi, « Nous sommes jeudi. » si on est un jeudi, etc.

Ne pas encoder les balises <?php...?> dans votre code !"

Alors je n'ai déjà pas compris par ou commence et j'ai donc fais ce code:

$jour = "Mardi";

if ($jour == "Mardi");
{
echo "Mardi";
}

else
{
echo "Lundi" or "Mercredi" or "Jeudi" or "Vendredi" or "Samedi" or "Dimanche";
}


Je ne sais absolument pas si il est bon et j'ai donc besoin de votre aide pour savoir si je suis carrément à côté de la plaque et par la même occasion me mettre une bonne piste si vous êtes d'accord.

Merci pour votre aide. :)

Re: Aide pour un code PHP

Posté : mer. 18 févr. 2015 12:30
par Prof
Salut LexisBass,

Ta demande est un peu vague, car tout dépend des requêtes que tu peux faire au serveur.

Car moi, je ne serais pas passé par un if --> else pour afficher la date mais plutôt par du <echo date> ou du <strftime>...

As-tu plus d'info ?

Dois-tu coder toute la fonction ou peux-tu faire appel à une fonction existante ?

Si tu dois tout coder, je pense que j'utiliserais une variable booléenne qui sera moins lourd que du else/if dans ton cas.

Mais bon, je ne suis pas un expert :)

Re: Aide pour un code PHP

Posté : mer. 18 févr. 2015 16:37
par zexcelator
Si c'est pour comparer à la date du jour.

Code : Tout sélectionner

// Choisir la langue Française pour la date du jour. Si 'fr_FR.UTF8' ne fonctionne pas, utiliser une des autres syntaxes (dépend du serveur).
// 'fr_FR.UTF8'
// 'fr_FR'
// 'fr'
// 'fra_fra'
setlocale(LC_TIME, 'fr_FR.UTF8');
 
.// Récupèrer le libellé de la date du jour (version locale) => paramètre '%A'.
$Jour = strftime('%A');
if ($jour == "Mardi");
{
...

Re: Aide pour un code PHP

Posté : mer. 18 févr. 2015 18:49
par LexisBass
Prof a écrit :Salut LexisBass,

Ta demande est un peu vague, car tout dépend des requêtes que tu peux faire au serveur.

Car moi, je ne serais pas passé par un if --> else pour afficher la date mais plutôt par du <echo date> ou du <strftime>...

As-tu plus d'info ?

Dois-tu coder toute la fonction ou peux-tu faire appel à une fonction existante ?

Si tu dois tout coder, je pense que j'utiliserais une variable booléenne qui sera moins lourd que du else/if dans ton cas.

Mais bon, je ne suis pas un expert :)
J'ai appris les conditions, j'ai aussi apprit les liens logique tel que ou, et, etc...

Ce n'est qu'une formation basique de PHP mais maintenant, j'aimerai savoir si je dois effectivement comparer (Et je pense que c'est ça qui est demandé) car on me demande d'écrire un petit script et pas des petits script.

Re: Aide pour un code PHP

Posté : mer. 18 févr. 2015 18:51
par LexisBass
zexcelator a écrit :Si c'est pour comparer à la date du jour.

Code : Tout sélectionner

// Choisir la langue Française pour la date du jour. Si 'fr_FR.UTF8' ne fonctionne pas, utiliser une des autres syntaxes (dépend du serveur).
// 'fr_FR.UTF8'
// 'fr_FR'
// 'fr'
// 'fra_fra'
setlocale(LC_TIME, 'fr_FR.UTF8');
 
.// Récupèrer le libellé de la date du jour (version locale) => paramètre '%A'.
$Jour = strftime('%A');
if ($jour == "Mardi");
{
...
Je crois que c'est presque comme toi sauf que la partie du haut je ne la connais absolument pas et la fonctione "strftime" je ne la connais absolument pas non plus.

En faites, je dois faire un script tel que l'énoncé le demande.

Re: Aide pour un code PHP

Posté : jeu. 19 févr. 2015 00:36
par zexcelator
$Jour = strftime('%A'); // strftime retourne la date en cours. Avec le paramètre '%A', on ne récupère que le nom du jour, avec '%m' que le numéro du mois, etc. exemple : echo strftime('%d %B %Y'); // Affiche 19 février 2015

setlocale(LC_TIME, 'fr_FR.UTF8'); // Pour dire à php que nous souhaitons afficher en français. Sinon strftime afficherait "thursday" au lieu de "jeudi".

Ton programme s'écrit en 3 lignes

Code : Tout sélectionner

setlocale(LC_TIME, 'fr_FR.UTF8');
$Jour = strftime('%A');
echo "Nous sommes " . $Jour; // Affiche Nous sommes jeudi (pour le 19/02/2015).

Re: Aide pour un code PHP

Posté : jeu. 19 févr. 2015 09:58
par sh@rp
Prof a écrit :Salut LexisBass,

Ta demande est un peu vague, car tout dépend des requêtes que tu peux faire au serveur.

Car moi, je ne serais pas passé par un if --> else pour afficher la date mais plutôt par du <echo date> ou du <strftime>...

As-tu plus d'info ?

Dois-tu coder toute la fonction ou peux-tu faire appel à une fonction existante ?

Si tu dois tout coder, je pense que j'utiliserais une variable booléenne qui sera moins lourd que du else/if dans ton cas.

Mais bon, je ne suis pas un expert :)
La consistance et la mise en oeuvre d'un algorithme réside en grande partie dans la compréhension de l'énoncé, ici il sera OBLIGE de passer par un test conditionnel pour savoir si le jour retourné par une fonction existante ou codée soi-même se nomme bien mardi ou porte un index particulier (au pire : mardi = index 2).
De toute manière un test conditionnel travaille avec une variable boolean (True ou NotTrue) !

La dernière solution proposée par zexcelator me semble pas mal. ;)

Re: Aide pour un code PHP

Posté : jeu. 19 févr. 2015 10:14
par Prof
La solution de zexcelator est bonne mais on utilise bien <strftime> et je ne sais pas si on a le droit, je lui posait donc la question...

Car si on n'a pas le droit il devra passer par comparer un a un les jours, et de ce qu'il me reste de la fac, le code sera plus léger avec une variable booléenne qui dira ce qui est true or false qu'avec une montagne de else, or, if, else, or...

Parce que du coup, si il ne peut pas utiliser strftime tu proposes quoi comme code ?

Re: Aide pour un code PHP

Posté : jeu. 19 févr. 2015 11:27
par sh@rp
Prof a écrit :La solution de zexcelator est bonne mais on utilise bien <strftime> et je ne sais pas si on a le droit, je lui posait donc la question...

Car si on n'a pas le droit il devra passer par comparer un a un les jours, et de ce qu'il me reste de la fac,
Mon PHP ne date pas de la FAC mais d'une remise à niveau d'il y a 1 an au CFI de PARIS.

Prof a écrit :le code sera plus léger avec une variable booléenne qui dira ce qui est true or false qu'avec une montagne de else, or, if, else, or...
Même si à l'écriture un pavé conditionnel If....ElseIf.... etc...te parait plus lourd qu'un simple test avec une variable booléenne, le compilateur n'utilise (consomme) qu'une seule et unique variable pour toute la durée du test.... la consommation en terme de ressource mémoire est identique !
Prof a écrit : Parce que du coup, si il ne peut pas utiliser strftime tu proposes quoi comme code ?
Il existe plusieurs possibilités pour un problème donné, .... il n'y a pas de meilleur méthodes que d'autres, ....

---> le plus important c'est la méthodologie, la réflexion propre à chaque développeur d'arriver au résultat escompté.

On peut procéder ainsi sans devoir passer par strftime :

Code : Tout sélectionner

<?php
$jours = array ('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi' );
echo 'Nous sommes ' . $jours [date("N")];
?>
De toute manière la date étant inhérente au système (client ou serveur) on sera IMPERATIVEMENT OBLIGE d'utiliser une fonction afin de retourner la date !

PS : je ne prétends pas que ce soit la meilleur solution mais pour reprendre la logique pédagogique d'OP, je pense que ses cours ciblent actuellement l'apprentissage des variables, typages, tableaux, tests conditionnels ....etc...


Voilà tout.

Re: Aide pour un code PHP

Posté : jeu. 19 févr. 2015 11:29
par zexcelator
on utilise bien <strftime> et je ne sais pas si on a le droit
Le cahier des charge, n'impose pas de technique particulière, donc ce qui n'est pas explicitement interdit est autorisé :) , et puis comme il est souligné, il faudra bien utiliser une fonction pour trouver la date du jour strftime() ou date().