Probleme jpgraph/base de données [Résolu]

sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 31 janv. 2007 à 14:46 - Dernière réponse : sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention
- 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
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
huberdine 158 Messages postés samedi 8 février 2003Date d'inscription 17 juin 2010 Dernière intervention - 31 janv. 2007 à 17:05
3
Merci
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();






?>

Merci huberdine 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de huberdine
raven44 315 Messages postés mercredi 23 mars 2005Date d'inscription 21 mars 2011 Dernière intervention - 31 janv. 2007 à 14:55
0
Merci
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.
Commenter la réponse de raven44
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 31 janv. 2007 à 15:09
0
Merci
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
Commenter la réponse de sabou94
raven44 315 Messages postés mercredi 23 mars 2005Date d'inscription 21 mars 2011 Dernière intervention - 31 janv. 2007 à 15:21
0
Merci
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 ...
Commenter la réponse de raven44
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 31 janv. 2007 à 15:58
0
Merci
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
Commenter la réponse de sabou94
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 31 janv. 2007 à 17:33
0
Merci
Merci je vais essayer ca tout de suite!

sabrina
Commenter la réponse de sabou94
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 31 janv. 2007 à 17:42
0
Merci
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
Commenter la réponse de sabou94
huberdine 158 Messages postés samedi 8 février 2003Date d'inscription 17 juin 2010 Dernière intervention - 31 janv. 2007 à 17:56
0
Merci
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);
Commenter la réponse de huberdine
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 1 févr. 2007 à 10:11
0
Merci
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
Commenter la réponse de sabou94
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 1 févr. 2007 à 10:46
0
Merci
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
Commenter la réponse de sabou94
sabou94 158 Messages postés vendredi 12 mars 2004Date d'inscription 17 avril 2007 Dernière intervention - 1 févr. 2007 à 11:44
0
Merci
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
Commenter la réponse de sabou94

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.