IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Afficher les semaines entre deux autres


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Afficher les semaines entre deux autres
    Ha coucou !

    Je viens vers vous car je bloque :/.
    Voici l'intrigue : J'ai un tableau de taches à qui j'ai affecté les dates à laquelle elles ont été effectué.
    Présenté comme ceci : | Dev | Le 16-04-2014, sem n°16 |

    J'ai deux listes déroulantes avec les 8 dernières semaines, (je récupère comme il faut les valeurs lorsque je les sélectionne) et je souhaiterais lorsque, par exemple, la 1ère liste soit semaine 15 et la 2ème soit semaine 17, dans mon tableau j'ai les tâches comprises entre cette intervalle.

    Je précise que j'utilise un template et que les n° de semaines de sont pas stocké en base (seul la date complète l'est).
    Voici ce qui créer mon tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    $tache = new tache();
     
    $tache -> getAllTachesByDossier($dossier_id);
     
     
    $maLigne = 1;
    $duree_type_tache= array('Conception' =>0 , 'Création Graphique' =>0,'Développement ' =>0,'Formation' =>0,'Gestion et Suivit de Projets, Reporting' =>0,'Intégration' =>0,'Mise à jour' =>0,'Mise en ligne' =>0 ,'R&D' =>0 ,'Rédaction Web' =>0 ,'Référencement Naturel' =>0 ,'Référencement Payant' =>0 ,'Réunion' =>0);
    while ($tache -> hasRecord())
    {
    	if($maLigne%2==0){
    				$t -> set_var('CLASS5','row1');
    	}else{
    				$t -> set_var('CLASS5','row2');
    	}
    	$result_tache = $tache -> getRecord();
    	$no_sem=date('W',strtotime($result_tache['date_record']));
     
    	$t -> set_var ("TYPE", $result_tache["tache_desc"]);
    	$t -> set_var ("PERSONNE", $result_tache["prenom"] . " " . $result_tache["nom"]);
     
    		//Affiche les infos semaine et date si elles existent
    	if( $result_tache["date_record"] == "0000-00-00" && $result_tache["newduree"] != 0 )
    	{
    		$t -> set_var ("HORAIRE", " Sem. n°  ". $no_sem );
    	}
    	elseif( $result_tache["newduree"] == 0 && $result_tache["date_record"] != "0000-00-00" )
    	{
    		$t -> set_var ("HORAIRE", " Le " . formatDate($result_tache["date_record"]) . ", sem. n°  ".$no_sem );
    	}
    	elseif( $result_tache["newduree"] == 0 && $result_tache["date_record"] == "0000-00-00")
    	{
    		$t -> set_var ("HORAIRE", " " );
    	}
    	else
    	{
    		$t -> set_var ("HORAIRE", " Le " . formatDate($result_tache["date_record"]) . ", sem. n°  ".$no_sem );
    	}
    	$t -> set_var ("ETAT_TACHE", $result_tache["avancement_desc"]);
    	$t -> set_var ("COMMENTAIRE", $result_tache["description"]);
    	$t -> set_var ("DUREE", $result_tache["newduree"]);
    	$t -> set_var ("TACHE_ID", $result_tache["tache_id"]);
    	$t -> set_var ("DATE", formatDate($result_tache["date_record"]));
     
    	if(array_key_exists($result_tache["tache_desc"], $duree_type_tache))
    		$duree_type_tache[$result_tache["tache_desc"]]+=$result_tache["newduree"];
     
    	$t -> parse("BDONE_TACHE","EACH_DONE_TACHE",true);
    	$maLigne++;
    }
    PS : C'est légèrement urgent , je vous remercie de l'aide que vous pourriez m'apporter !

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    J'ai pas tout compris, mais sache qu'en Php il est possible d'avoir le numéro de semaine d'une date avec l'option 'w' date('w', $timestamp),et en SQL (pour Mysql en tout cas), il existe la fonction 'week' qui retourne le numéro de semaine (http://dev.mysql.com/doc/refman/5.0/...functions.html).

    Tu devrais t'en sortir avec ça.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Malheureusement c'est pas du tout ce que je recherche .
    Ceci j'y suis arrivé, c'est justement les valeurs que je veux utiliser pour faire intervalle.
    Pour être plus précis :

    J'ai mes semaines
    Nom : Capture.PNG
Affichages : 68
Taille : 2,7 Ko

    et je souhaiterais afficher dans ce tableau :
    Nom : Capture.PNG
Affichages : 63
Taille : 13,9 Ko

    les taches comprises entre ce que qui a été saisie dans les listes.

    Pour l'exemple il n'y aurait aucune semaine d'affiché

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Donc si c'est exactement ce que tu recherches, il te faut faire une recherche SQL en utilisant la fonction WEEK de Mysql, combiné avec YEAR pour sélectionner la bonne année.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Merci je regarde tout ça !

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Alors j'ai regarder un peu tout ça.
    J'ai tester cette requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select t.date_record as newduree from tache t WHERE dossier_id = 637 ORDER by t.date_record
    Elle me revoit donc les dates des enregistrements de ma table tache.

    J'ai donc essayé ceci pour avoir les semaines correspondante
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT WEEKOFYEAR ('t.date_record') from tache t WHERE dossier_id = 637 ORDER by t.date_record
    Celle ci me renvoi des données NULL. La même chose avec WEEK

  7. #7
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Il ne faut pas mettre de guillemets sinon cela est considéré comme une chaine de caractère (qui donc renvoie NULL en effet).
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Salut ,

    Après avoir terminé ma requête complète celle ci me renvoi correctement les n° de semaines dans MySQL.

    Malheureusement je n'arrive pas à les extraire dans mon code php. J'ai l'erreur bateau Undefined index.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $tache = new tache();
     
    $tache -> getAllTachesByDossier($dossier_id);
     
    while ($tache -> hasRecord())
    {
    	if($maLigne%2==0){
    				$t -> set_var('CLASS5','row1');
    	}else{
    				$t -> set_var('CLASS5','row2');
    	}
     
    	$result_tache = $tache -> getRecord();
    	$no_sem=date('W',strtotime($result_tache['date_record']));
     
    	echo(formatDate($result_tache["date_record"]));
     
    $maLigne++;
    }
    Ma requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select e.employe_id, e.nom, e.prenom,n.description,t.priorite, WEEK (t.date_record,1),t.duree as newduree, 
    tc.duree,tc.jour,td.tache_desc,t.tache_id,a.avancement_desc,IFNULL(t.duree,0) as newduree from tache t,note n,time_cart tc,tache_desc 
    td,avancement a,employe e WHERE dossier_id = $dossier_id AND n.tache_id = t.tache_id AND tc.time_cart_id = t.time_cart_id AND 
    td.tache_desc_id = t.tache_desc_id AND a.avancement_id = t.avancement_id 
    AND e.employe_id = t.employe_id ORDER by t.date_record

  9. #9
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut
    Salut,
    Dans ton script PHP:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $t -> set_var('CLASS5','row1');

    Cela ne devrait pas être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tache -> set_var('CLASS5','row1');

    Ainsi que pour la ligne
    'row2'??
    Pensez à mettre comme si c'est le cas !

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Non car $t est la variable à laquelle j'affecte mes variables pour les placer ensuite dans l'HTML.

    C'est plus le undefined index qui me gène pour l'instant

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    while ($tache -> hasRecord())
    {
    	if($maLigne%2==0){
    				$t -> set_var('CLASS5','row1');
    	}else{
    				$t -> set_var('CLASS5','row2');
    	}
     
    	$result_tache = $tache -> getRecord();
    	$no_sem=date('W',strtotime($result_tache['date_record']));
     
    	//echo $result_tache["WEEK(date_record,1)"];
     
    	$t -> set_var ("TYPE", $result_tache["tache_desc"]);
    	$t -> set_var ("PERSONNE", $result_tache["prenom"] . " " . $result_tache["nom"]);
     
    		//Affiche les infos semaine et date si elles existent
    	if( $result_tache["date_record"] == "0000-00-00" && $result_tache["newduree"] != 0 )
    	{
    		$t -> set_var ("HORAIRE", " Sem. n°  ". $no_sem );
    	}
    	elseif( $result_tache["newduree"] == 0 && $result_tache["date_record"] != "0000-00-00" )
    	{
    		$t -> set_var ("HORAIRE", " Le " . formatDate($result_tache["date_record"]) . ", sem. n°  ".$no_sem );
    	}
    	elseif( $result_tache["newduree"] == 0 && $result_tache["date_record"] == "0000-00-00")
    	{
    		$t -> set_var ("HORAIRE", " " );
    	}
    	else
    	{
    		$t -> set_var ("HORAIRE", " Le " . formatDate($result_tache["date_record"]) . ", sem. n°  ".$no_sem );
    	}
    	$t -> set_var ("ETAT_TACHE", $result_tache["avancement_desc"]);
    	$t -> set_var ("COMMENTAIRE", $result_tache["description"]);
    	//$t -> set_var ("PRIORITE", $result_tache["priorite"]);
    	$t -> set_var ("DUREE", $result_tache["newduree"]);
    	$t -> set_var ("TACHE_ID", $result_tache["tache_id"]);
    	$t -> set_var ("DATE", formatDate($result_tache["date_record"]));

  11. #11
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut
    Et je suppose que $t est définit plus haut dans ton code ?
    Et le "undefined index" il porte sur la ligne numéro ?
    Pensez à mettre comme si c'est le cas !

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Yes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $t = new Template("./tpl");

  13. #13
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut
    On dirait que PHP ne trouve pas de référence à index de ton tableau ($result_tache qui reprend les infos de $tache), peux-tu vérifier si $tache possèdes bien les valeurs suivantes:

    • date_record
    • tache_desc
    • prenom
    • nom
    • newduree
    • avancement_desc
    • description
    • tache_id
    • ...

    Et qu'il n'y ai pas de fautes de frappes ou d'orthographes.
    Avec le numéro de ligne où l'erreur est repéré, tu devrais être directement fixé (fais nous un copier/coller de ton message d'erreur en entier).
    Pensez à mettre comme si c'est le cas !

  14. #14
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Pardon, je croyais t'avoir répondu, apparement non.

    Il te faut faire un alias sur la fonction WEEK :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WEEK (t.date_record,1) as date_record
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Oula il porte sur toute les lignes ou je tente de récupérer date_record. Je ne comprend pas pourquoi il ne veux pas le récupérer car la requête fonctionne correctement. Peu être un problème de cast ?

    Un petit exemple :
    Notice: Undefined index: date_record in /home/ascobase/public_html/display_dossier.php on line 546
    Notice: Undefined index: date_record in /home/ascobase/public_html/display_dossier.php on line 554
    Notice: Undefined index: date_record in /home/ascobase/public_html/display_dossier.php on line 568
    Notice: Undefined index: date_record in /home/ascobase/public_html/display_dossier.php on line 575
    Notice: Undefined index: date_record in /home/ascobase/public_html/display_dossier.php on line 546
    Notice: Undefined index: date_record in /home/ascobase/public_html/display_dossier.php on line 554
    HAHAHA si c'est ça tu me sauve

  16. #16
    Membre actif
    Avatar de Micmaya
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 131
    Points : 202
    Points
    202
    Billets dans le blog
    3
    Par défaut
    Pas vu, effectivement à chaque fois que tu appelles une fonction en SQL, il faut la renommer avec un alias.
    Bien je pense que c'est résolu, n'oublie pas de marquer le billet comme résolu si c'est bien le cas
    Pensez à mettre comme si c'est le cas !

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    YEES !

    Maintenant je vais m'atteler au vif du sujet.
    Il va falloir que j'affiche ses taches selon les semaines sélectionnées. J'ai du mal a réfléchir sur l'architecture de la condition que je devrais écrire.

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Je ne comprend pas comment je peu faire en sorte que seul les taches comprises dans intervalle des listes déroulantes tout en gardant l'affichage de la date complète peu être fait. Sachant que pour afficher ses taches j'ai besoin du format XXXX-XX-XX sur la date :/.

    Le faire en SQL n'est pas possible ? En php j'ai vraiment du mal donc si vous arrivez à mieux voir comment je pourrais présenter ça j'apprécierais

    Le fait est que le code fait 700 lignes, je ne peu donc pas tout mettre...

    Pas besoin de me mâcher le travail, juste me mettre sur la voie, merci

  19. #19
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    tout en gardant l'affichage de la date complète peu être fait.
    L'affichage n'a aucune importance, c'est la valeur de la date qui en as.

    Dans ton "option" de ton "select", tu peux très bien mettre une valeur différente de ce qui est afficher à l'utilisateur.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Je comprend sauf que présentement je récupère mon n° de semaine (ce qui m'a paru plus simple au début) pour faire mon select. Mais le fait est que les taches dans le tableau ne son pas récupérer avec le n° de semaine mais avec la date complète donc je ne comprend pas comment faire pour dire que : - Cette date correspond à ce n° de semaine donc n'afficher que la date qui est compris entre ses 2 n° de semaine.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/07/2011, 18h25
  2. Outils sur les différences entre deux fichiers XML
    Par Community Management dans le forum XML/XSL et SOAP
    Réponses: 19
    Dernier message: 21/07/2008, 16h21
  3. [VB6]sortir toutes les dates entre deux dates
    Par AlfiQue dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/02/2006, 20h09
  4. Réponses: 10
    Dernier message: 20/09/2005, 16h32
  5. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo