Probleme jpgraph/base de données

Résolu
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007 - 31 janv. 2007 à 14:46
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007 - 1 févr. 2007 à 11:44
Bonjour,
En fait je dois générer un graph style diagramme de gantt donc un sorte de calendrier avec des barres representant des taches et leur durée (je ne sais pas si c'est clair...)


Mais bref, ce que je veux, c'est donc générer plusieurs barres sur un graph, où chaque barre aura un titre selon un champ d'une base de données.
Alors comment modifier le code du graph pour en génerer plusieurs selon une variable $i par exemple
Voilà un peu de code:
$graph = new GanttGraph(-1,-1,"auto");
$project = new GanttBar(0,".$tabTasksGantt[$i]['tasks_title'].",".$tabTasksGantt[$i]['beginning_date'].",".$tabTasksGantt[$i]['deadline'].");
$graph->Add($project);
$graph->Stroke();


Donc ce que j'aimerais c'est en fait faire autant de $project qu'il n'y a de $i (nombre de tache récupérée d'une requete sql...)
Merci d'avance!!!
sabrina

11 réponses

huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
31 janv. 2007 à 17:05
Voici une idée de solution :








<?php




// Gantt example




include
("../jpgraph.php");




include
("../jpgraph_gantt.php");








/*
N'oublies pas de récupérer ici tes données dans $tabTasksGantt

*/









//



// The data for the graphs



//


  $data= array ();


  $j =1


  // à modifier en fonction de requetes vers la base de données


  $debut_projet = "2006-10-26";


  // à modifier en fonction de requetes vers la base de données


  $fin_projet ="2006-11-24";


  $data[0]= array (0,ACTYPE_GROUP,    "Mon projet", $debut_projet,$fin_projet,''),


  foreach ($tabTasksGantt as $i =>$contenu)


  {


        $data[$j]= array ($j,ACTYPE_NORMAL,$contenu,$tabTasksGantt[$i]['tasks_title'],$tabTasksGantt[$i]['beginning_date'],$tabTasksGantt[$i]['deadline'],'commentaire');
$j++;


  }


 



// Create the basic graph


$graph = new GanttGraph();


$graph->title->Set("Gantt Graph using CreateSimple()");





// Setup scale


$graph->ShowHeaders(GANTT_HYEAR | GANTT_HMONTH | GANTT_HDAY | GANTT_HWEEK);


$graph->scale->week->SetStyle(WEEKSTYLE_FIRSTDAY);





// Add the specified activities


$graph->SetSimpleStyle(GANTT_SOLID,'blue@0.7','blue@0.7');


$graph->CreateSimple($data);


 





// .. and stroke the graph


$graph->Stroke();






?>
3
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
31 janv. 2007 à 14:55
Salut, pour obtenir ce que tu veux, il faut utiliser une boucle "while" ou "for"

Exemple :

for($i=1;$i<4;$i++){
   $graph = new GanttGraph(-1,-1,"auto");
$project = new GanttBar(0,".$tabTasksGantt[$i]['tasks_title'].",".$tabTasksGantt[$i]['beginning_date'].",".$tabTasksGantt[$i]['deadline'].");
$graph->Add($project);
$graph->Stroke();
}

et ca te le fera 3 fois.
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
31 janv. 2007 à 15:09
J'ai déjà quelque chose de similaire mais ca ne marche pas!


J'avais mis ca :
foreach ($tabTasksGantt as $i=>$contenu)
et dedans mon code (comme ce que t'a mis dans le for) Mais ca ne peux pas marcher, car on ne dit pas qu'il faut faire plusieurs projects, il n'y a que le $i de mon tabTasksGantt qui change!!
Sorry, je galère aussi la!
Ca fait deux jours que je suis dessus!
merci quand meme.
sabrina
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
31 janv. 2007 à 15:21
Tout d'abors, faux pas créer plusieurs projet donc ta variable project en dehors de la boucle for et ensuite dans ta boucle, c'est la que tu met ta variable $graph de [$i] bien entendu sinon ca marchera jamais puis tu l'ajoute ect ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
31 janv. 2007 à 15:58
Merci mais ce n'est pas ce que je veux, puisque je ne veux qu'un seul graph mais plusieurs barres! Un diagramme de gantt quoi...
En fait je veux que le $project varie mais est ce que j'ai le droit de mettre un truc du genre $project[$i] ?
Enfin je trouve vraiment pas, pourtant je suis sure que plein de gens l'ont déjà fait...

Merci tout de meme!
sabrina
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
31 janv. 2007 à 17:33
Merci je vais essayer ca tout de suite!

sabrina
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
31 janv. 2007 à 17:42
Euh excuse moi mais il y a quelque chose que je ne comprend pas :
tout mon probleme est que je dois récuperer les dates de ma base de données (j'ai finalement adopté la méthode de $project[$i] avec des for) et la je vois que tu as mis date_deb_project et fin_project?
Ca ne m'arrange pas...
Je suis chiante je sais mais la je suis pres du but alors ca me stresse encore plus lol
Bon ben merci quand même, je v continuer de faire des essais, et peut etre remanier ton code comme ca m'arrange!
Encore merci!

sabrina
0
huberdine Messages postés 158 Date d'inscription samedi 8 février 2003 Statut Membre Dernière intervention 17 juin 2010
31 janv. 2007 à 17:56
En fait, avec JpGraph, pour gérer les diagrammes de Gannt, tu créé un groupe de projets :
$data[0]= array (0,ACTYPE_GROUP,"Mon projet", $debut_projet,$fin_projet,''),

lequel va contenir tous les projets :
foreach ($tabTasksGantt as $i =>$contenu)
{
$data[$j]= array ($j,ACTYPE_NORMAL,$contenu,$tabTasksGantt[$i]['tasks_title'],$tabTasksGantt[$i]['beginning_date'],$tabTasksGantt[$i]['deadline'],'commentaire');
$j++;
}



Les mots clefs importants sont : ACTYPE_GROUP et ACTYPE_NORMAL
C'est donc à toi de définir date_deb_project et fin_project qui auront pour valeur respective :
<li>la date la plus ancienne pour date_deb_project
</li><li>la date la plus récente pour fin_project </li>Tu as plusieurs moyen pour récupérer ces valeurs : soit faire des requêtes dans ta base de donnée, soit parser le tableau tabTasksGantt pour retrouver la première et la dernière date de ton projet.

par exemple :

function date_min($data)
{

$min = $data[0]['beginning_date'];
for($i= 0;$i<count($data);$i++)
{
if($data[$i]['beginning_date'] < $min)
{
$min = $data[$i]['beginning_date'];
}
}
return($min)
}

function date_max($data)
{

$max = $data[0]['deadline'];
for($i=0;$i<count($data);$i++)
{
if($data[$i]['deadline'] > $max)
{
$max = $data[$i]['deadline'];
}
}
return($max)
}

// Pour récupérer les valeurs :
$debut_projet =date_min($tabTasksGantt);
$fin_projet=date_max($tabTasksGantt);
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
1 févr. 2007 à 10:11
Bonjour,
Je n'avais pas vu qu'hier tu m'avais repondu! Désolée.
En fait j'ai compris ce que tu m'as dit, j'ai testé ton truc, mais ca me met une erreur jpgraph :
CSIM Alt text must be specified as a string.
?? Je ne comprend ce qui fait ca, je n'ai pas mis de alt, et je ne vois pas où c'est censé être requis.
Pourrais-tu m'aider? merci!

sabrina
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
1 févr. 2007 à 10:46
Re
En fait le truc de csim a été reglé mais je ne comprend pas ce que $contenu vient faire ici :
$data[$j]=array($j,ACTYPE_NORMAL,$contenu,$tabTasksGantt[$i]['tasks_title'],$tabTasksGantt[$i]['beginning_date'],$tabTasksGantt[$i]['deadline'],'commentaire');
Je l'ai enlevé je crois que tu t'es trompé (contenu n'est égale à rien puisqu'il represente l'affectation non?)
Sinon le code ne marche pas, ca ne m'affiche rien...

Je vais continuer de chercher comemnt utiliser createSimple !
Merci
sabrina
0
sabou94 Messages postés 158 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 17 avril 2007
1 févr. 2007 à 11:44
En fait c'etait un problème de format de date!! Ca marche merci beaucoup!!!


Je mets réponse acceptée pour ta solution!!
Encore merci, j'aurai pas trouvé sans toi!

sabrina
0
Rejoignez-nous