PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 27-07-2011 09:24:19

ninouche
Membre
Inscription : 27-07-2011
Messages : 2

écrire une condition en php

Bonjour,

je suis débutante, j'espere que vous pouvez m'aider:

voici mon code:

<?php
public function count_CP($countCP, $first_year ='?', $second_year='?') {
   global $countCP;
   $this->countCP = '0';
                      $reponse = $this->bdd->prepare('SELECT PERSON_ID, SUM(TS_QTY) AS TS_QTY FROM timesheet WHERE PERSON_ID = ?
                                    AND WBS_ID = ?
                                    AND TS_DATE BETWEEN ?
                                    AND ?'
);
   $reponse->execute(array($this->current_person_id,'ACO90002',$first_year . '-06-01',$second_year . '-05-31')); 
   while ($donnees = $reponse->fetch()){
    if(!empty($donnees['TS_QTY']))
      $this->countCP = $donnees['TS_QTY'];
   }
}

je dois ajouter ces conditions:
1-déterminer la date du jour
2-determiner l'année en cours
3-determiner si la date du jours est inférieur ou égale à 31/05 -> j'appele ma méthode et je fais first_year = n-1 et second_year = n
sinon si la date du jour est supérieur ou égale à 01/06-> j'appel ma méthode et je fais first_year=n et second_year =n+1.

SVP je n'arrive pas à écrire cet algorithme.
merci d'avance.

Hors ligne

#2 27-07-2011 09:54:16

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : écrire une condition en php

Saluton,
Ta fonction est, en fait, une méthode publique de classe, j'imagine, sinon, $this ne se justifierait pas.
J'aurais bien laisser SQL se dépatouiller avec la date du jour et l'année du jour.
Voici une piste

SELECT CASE WHEN CURDATE() <= CONCAT(year(curdate()),'-05-31') THEN CONCAT(year(curdate())-1,'-05-31') ELSE CONCAT(year(curdate()),'-05-31') END

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 27-07-2011 10:06:01

ninouche
Membre
Inscription : 27-07-2011
Messages : 2

Re : écrire une condition en php

merci!

j'ai essayé cette méthode mais ça marche pas!

y a pas un autre moyen?

Hors ligne

#4 27-07-2011 12:01:16

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : écrire une condition en php

ninouche a écrit :

j'ai essayé cette méthode mais ça marche pas!

Quelle méthode ? Je n'ai pas donné de méthode j'ai fourni une piste de réflexion.
Et bonjour le diagnostic !
Qu'as-tu fait au juste et quel résultat ou code erreur as-tu obtenu


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 27-07-2011 19:07:17

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : écrire une condition en php

Bonjour,

Il y a deux choses qui pour moi font que c'est normal que cela ne marche pas

ninouche a écrit :

public function count_CP($countCP, $first_year ='?', $second_year='?') {

et

ninouche a écrit :

if(!empty($donnees['TS_QTY']))...

Je te laisse y réfléchir un peu, parceque là à mon humble avis, à force de te concentrer, t'y vois plus rien du tout^^ wink

++


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#6 27-07-2011 22:15:29

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : écrire une condition en php

Ah oui j'oubliais,

une troisième chose : la concaténation de date faut la faire en PHP (via une chaîne). Si tu veut la faire en MySQL faut utiliser les fonctions mysql adéquates en conséquence.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 28-07-2011 10:35:17

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : écrire une condition en php

Pour l'aspect purement SQL, comme je vois que tu sembles rester perplexe, voilà à quoi je pensais

$reponse = $this->bdd->prepare('SELECT PERSON_ID, SUM(TS_QTY) AS TS_QTY FROM timesheet
                                WHERE PERSON_ID = ?
                                  AND WBS_ID = ?
                                  AND TS_DATE BETWEEN
                                                  CASE WHEN CURDATE() <= CONCAT(YEAR(CURDATE()),"-05-31")
                                                       THEN CONCAT(YEAR(CURDATE())-1,"-05-31")
                                                       ELSE CONCAT(YEAR(CURDATE()),"-05-31")
                                                  END
                                              AND
                                                  CASE WHEN CURDATE() <= CONCAT(YEAR(CURDATE()),"-05-31")
                                                       THEN CONCAT(YEAR(CURDATE()),"-06-31")
                                                       ELSE CONCAT(YEAR(CURDATE()+1),"-06-31")
                                                  END'
);

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums