Aller au contenu

PHP +JPGraph + SQL


Sujets conseillés

Posté

Bonjour!

J'ai une grosse galère.

Je veux afficher les thèmes, avec dans les thèmes les questions, et dans chaque question le graphique correspondant aux résultats qui sont dans une BDD.

Avec ce code:

<html>
<head>
<title>Graphiques</title>
</head>
<body>
<div align="center"><h1>Graphiques</h1></div>
<div align="center"><h2>Graphiques</h2></div>
<?php
// Emulation de la variable $_post['id_evaluation']
$id_evaluation=15;
// Bibliotheque
include ("../tools.php");
/*!
* Connexion et selection de la base de donnees
*/
$monPGData=new PGData();
$monPGData->connect();
/*!
* Variables
*/
$monidtheme=$monPGData->query("SELECT idtheme FROM affecter WHERE idquestionnaire IN (SELECT idquestionnaire FROM evaluation WHERE idevaluation='$id_evaluation')");
$line=($monidtheme->at_row(0,PGSQL_NUM)); // Juste le premier
foreach ($line as $id_theme) // Variable $id_theme

// $monidtheme=$monPGData->query("SELECT idtheme FROM affecter WHERE idquestionnaire IN (SELECT idquestionnaire FROM evaluation WHERE idevaluation='$id_evaluation')");
// while ($line=($monidtheme->next_row(PGSQL_NUM))) // Boucle while
// {
// foreach ($line as $id_theme); // Variable $id_theme
// {
// }
// }

$monidquestion=$monPGData->query("SELECT idquestion FROM affecter WHERE idquestionnaire IN (SELECT idquestionnaire FROM evaluation WHERE idevaluation='$id_evaluation')");
$line=($monidquestion->at_row(0,PGSQL_NUM)); // Juste le premier
foreach ($line as $id_question) // Variable $id_question

// $monidquestion=$monPGData->query("SELECT idquestion FROM affecter WHERE idquestionnaire IN (SELECT idquestionnaire FROM evaluation WHERE idevaluation='$id_evaluation')");
// while ($line=($monidquestion->next_row(PGSQL_NUM))) // Boucle while
// {
// foreach ($line as $id_question); // Variable $id_question
// {
// }
// }

// $monidreponse=$monPGData->query("SELECT idreponse FROM proposer WHERE idquestion IN (SELECT idquestion FROM affecter WHERE idquestionnaire IN (SELECT idquestionnaire FROM evaluation WHERE idevaluation='$id_evaluation')) AND idquestion IN (SELECT idquestion FROM question WHERE idquestion='$id_question')");
// $line=($monidreponse->next_row(PGSQL_NUM)); // Juste le premier
// foreach ($line as $id_reponse) // Variable $id_reponse

$monidreponse=$monPGData->query("SELECT idreponse FROM proposer WHERE idquestion IN (SELECT idquestion FROM affecter WHERE idquestionnaire IN (SELECT idquestionnaire FROM evaluation WHERE idevaluation='$id_evaluation')) AND idquestion IN (SELECT idquestion FROM question WHERE idquestion='$id_question')");
while ($line=($monidreponse->next_row(PGSQL_NUM))) // Boucle while
{
foreach ($line as $id_reponse); // Variable $id_reponse
{echo -$id_reponse; // idreponse 35-36-37-38 pour la premiere question (idquestion=34)
}
}

// TEST DE TABLEAU LISTANT LES IDREPONSE
// {
// echo "<table border='0'>\n"; // Debut du tableau
// echo "\t<tr>\n";
// foreach ($line as $id_reponse)
// {
// echo "\t\t<td>$id_reponse</td>\n"; // Liste des idreponse
// }
// echo "\t</tr>\n";
// echo "</table>\n"; // Fin du tableau
// }
// TEST DE TABLEAU LISTANT LES IDREPONSE

/*!
* Execution des requetes SQL
*
* Renseignements divers :
*/
$monenseignant=$monPGData->query("SELECT nomenseignant,prenomenseignant FROM enseignant WHERE idenseignant IN (SELECT idenseignant FROM enseignement WHERE idenseignement IN (SELECT idenseignement FROM evaluation WHERE idevaluation='$id_evaluation'))");
$monenseignement=$monPGData->query("SELECT libelleenseignement FROM enseignement WHERE idenseignement IN (SELECT idenseignement FROM evaluation WHERE idevaluation='$id_evaluation')");
$monquestionnaire=$monPGData->query("SELECT libellequestionnaire FROM questionnaire WHERE idquestionnaire IN (SELECT idquestionnaire FROM evaluation WHERE idevaluation='$id_evaluation')");
/*!
* Themes :
*/
$mesthemes=$monPGData->query("SELECT libelletheme FROM theme WHERE idtheme IN (SELECT idtheme FROM affecter WHERE idquestionnaire IN (SELECT idquestionnaire FROM evaluation WHERE idevaluation='$id_evaluation')) ORDER BY idtheme");
/*!
* Questions :
*/
$mesquestions=$monPGData->query("SELECT libellequestion FROM question WHERE idquestion IN (SELECT idquestion FROM affecter WHERE idquestionnaire IN (SELECT idquestionnaire FROM evaluation WHERE idevaluation='$id_evaluation')) AND idquestion IN (SELECT idquestion FROM affecter WHERE idtheme='$id_theme') ORDER BY idquestion");
/*!
* Reponses proposees :
*/
$mesreponses=$monPGData->query("SELECT libellereponse FROM reponse WHERE idreponse IN (SELECT idreponse FROM proposer WHERE idquestion IN (SELECT idquestion FROM affecter WHERE idquestionnaire IN (SELECT idquestionnaire FROM evaluation WHERE idevaluation='$id_evaluation'))) AND idreponse IN (SELECT idreponse FROM proposer WHERE idquestion='$id_question') ORDER BY idreponse");
/*!
* Type de reponse pour selection du type de graphique (choix multiple, choix unique ou tableau) :
*/
$monidtypequestion=$monPGData->query("SELECT idtypequestion FROM question WHERE idquestion IN (SELECT idquestion FROM affecter WHERE idquestionnaire IN (SELECT idquestionnaire FROM evaluation WHERE idevaluation='$id_evaluation'))");
/*!
* Boucles while + affichage des resultats renseignements divers (Nom & prenom enseignant, matiere et questionnaire)
*/
echo "<table border='0'>\n"; // Debut du tableau
echo "\t\t<tr><td><b>Enseignant : </b></td></tr>\n";
while ($line=($monenseignant->next_row(PGSQL_NUM)))
{
echo "\t<tr>\n";
foreach ($line as $enseignant)
{
echo "\t\t<td>$enseignant</td>\n"; // Nom & prenom enseignant
}
echo "\t</tr>\n";
}
echo "\t\t<tr><td><b>Matière : </b></td></tr>\n";
while ($line=($monenseignement->next_row(PGSQL_NUM)))
{
echo "\t<tr>\n";
foreach ($line as $enseignement)
{
echo "\t\t<td>$enseignement</td>\n"; // Matiere
}
echo "\t</tr>\n";
}
echo "\t\t<tr><td><b>Questionnaire : </b></td></tr>\n";
while ($line=($monquestionnaire->next_row(PGSQL_NUM)))
{
echo "\t<tr>\n";
foreach ($line as $questionnaire)
{
echo "\t\t<td>$questionnaire</td>\n"; // Questionnaire
}
echo "\t</tr>\n";
}
echo "</table>\n";
echo "<br>\n";
/*!
* Boucles while + affichage des resultats
*
* Affichage themes :
*/
echo "<table border='0'>\n";
$line=($mesthemes->at_row(0,PGSQL_NUM)); // Juste le premier
echo "\t<tr>\n";
foreach ($line as $themes)
{
echo "\t\t<td><b>$themes</b></td>\n"; // Themes
}
echo "\t</tr>\n";
/*!
* Affichage questions :
*/
$line=($mesquestions->next_row(PGSQL_NUM)); // Plusieurs questions par idtheme... :-(
echo "\t<tr>\n";
foreach ($line as $questions)
{
echo "\t\t<td>$questions</td>\n"; // Questions
}
echo "\t</tr>\n";
/*!
* Affichage reponses proposees :
*/
while ($line=($mesreponses->next_row(PGSQL_NUM)))
{
echo "\t<tr>\n";
foreach ($line as $reponses)
{
echo "\t\t<td><i>$reponses</i></td>\n"; // Reponses
}
echo "\t</tr>\n";
}
/*!
* Affichage du graphique selon $id_typequestion
*/
$line=($monidtypequestion->at_row(0,PGSQL_NUM)); // Juste le premier
foreach ($line as $id_typequestion)
echo "\t<tr>\n";
if ($id_typequestion==1) // Question a choix multiple (graphique) label de 'x' : $x_data + coordonnées de 'y' : $y_data + pourcentages en haut des colonnes
{
// SOIT LE TRAITEMENT DE LA REQUETE SE FAIT DANS LA PAGE PRINCIPALE, SOIT IL SE FAIT DANS LE GRAPHIQUE
/*!
* Execution de la requete SQL pour trouver les libelles de 'x' :
*/
$monPGResult=$monPGData->query("SELECT libellereponse FROM reponse WHERE idreponse IN (SELECT idreponse FROM valider WHERE idreponse=$id_reponse)");
/*!
* Boucle while :
*/
while ($line=($monPGResult->next_row(PGSQL_NUM)))
{
foreach ($line as $x_data)
{
}
}
/*!
* Execution de la requete SQL pour trouver les valeurs de 'y' :
*/
$monPGResult=$monPGData->query("SELECT COUNT (idsaisie) FROM saisie WHERE valider.idreponse='$id_reponse' AND valider.idquestion='$id_question' AND saisie.idevaluation='$id_evaluation' AND saisie.idsaisie=valider.idsaisie");
/*!
* Boucle while :
*/
while ($line=($monPGResult->next_row(PGSQL_NUM)))
{
foreach ($line as $y_data)
{
}
}
/*!
* Affichage du graphique :
*/
echo "\t\t<td><center><img src='choix_mu.php?x_coord=$x_data&y_coord=$y_data' border='0' align='center'></center></td><td valign='top'><i>$x_data</i> : $y_data réponses</td>\n"; // Affichage du graphique
// echo "\t\t<td><img src='choix_mu.php?reponse=$id_reponse&question=$id_question&evaluation=$id_evaluation' border='0' align='center'></td>\n"; // Affichage du graphique
// SOIT LE TRAITEMENT DE LA REQUETE SE FAIT DANS LA PAGE PRINCIPALE, SOIT IL SE FAIT DANS LE GRAPHIQUE
}
elseif ($id_typequestion==2) // Question a choix unique (graphique) label de 'x' : $x_data + coordonnées de 'y' : $y_data + nombre de reponses : $nb_reponses
{
// SOIT LE TRAITEMENT DE LA REQUETE SE FAIT DANS LA PAGE PRINCIPALE, SOIT IL SE FAIT DANS LE GRAPHIQUE
/*!
* Execution de la requete SQL pour trouver les libelles de 'x' :
*/
$monPGResult=$monPGData->query("SELECT libellereponse FROM reponse WHERE idreponse IN (SELECT idreponse FROM valider WHERE idreponse=$id_reponse)");
/*!
* Boucle while :
*/
while ($line=($monPGResult->next_row(PGSQL_NUM)))
{
foreach ($line as $x_data)
{
}
}
/*!
* Execution de la requete SQL pour trouver les valeurs de 'y' :
*/
$monPGResult=$monPGData->query("SELECT COUNT (idsaisie) FROM saisie WHERE valider.idreponse='$id_reponse' AND valider.idquestion='$id_question' AND saisie.idevaluation='$id_evaluation' AND saisie.idsaisie=valider.idsaisie");
/*!
* Boucle while :
*/
while ($line=($monPGResult->next_row(PGSQL_NUM)))
{
foreach ($line as $y_data)
{
}
}
/*!
* Execution de la requete SQL pour trouver le nombre de reponses a une question donnée :
*/
$monPGResult=$monPGData->query("SELECT COUNT (idsaisie) FROM saisie WHERE valider.idquestion=$id_question AND saisie.idevaluation=$id_evaluation AND saisie.idsaisie=valider.idsaisie");
while ($line=($monPGResult->next_row(PGSQL_NUM)))
{
foreach ($line as $nb_reponses)
{
}
}
/*!
* Affichage du graphique :
*/
echo "\t\t<td><center><img src='choix_un.php?x_coord=$x_data&y_coord=$y_data' border='0' align='center'></center></td><td valign='top'><b><center>Nombre de réponses : $nb_reponses</b><br><br>Réponses : </center><br><i>$x_data</i> : $y_data réponses</td>\n"; // Affichage du graphique
// echo "\t\t<td><img src='choix_un.php?question=$id_question&evaluation=$id_evaluation' border='0' align='center'></td>\n"; // Affichage du graphique
// SOIT LE TRAITEMENT DE LA REQUETE SE FAIT DANS LA PAGE PRINCIPALE, SOIT IL SE FAIT DANS LE GRAPHIQUE
}
else // 3 & 4 : questions ouvertes & numeriques (tableau) libellereponse
{
/*!
* Execution de la requete SQL :
*/
$montableau=$monPGData->query("SELECT COUNT (idsaisie) FROM saisie WHERE valider.idreponse='$id_reponse' AND valider.idquestion='$id_question' AND saisie.idevaluation='$id_evaluation' AND saisie.idsaisie=valider.idsaisie"); // Requete bidon pour l'exemple
/*!
* Boucle while + affichage du tableau :
*/
echo "<table border=0>\n";
while ($line=($montableau->next_row(PGSQL_NUM)))
{
echo "\t<tr>\n";
foreach ($line as $tableau)
{
echo "\t\t<td>$tableau</td>\n"; // Affichage du tableau
}
echo "\t</tr>\n";
}
echo "</table>\n";
}
echo "\t</tr>\n";
echo "</table>\n"; // Fin du tableau
echo "<br>\n";
/*!
* Deconnection de la base de donnees
*/
$monPGData->close();
?>
</body>
</html>

, je n'obtient que le résultat de la première réponse, de la première question, du premier thème?

Je coince quelquepart, et je ne sais pas ou, j'en deviens limite dingue :wacko: ...

Quelqu'un pour me filer un ptit coup de main?

Posté

Ton code est tellement mal mis en forme qu'il est impossible de te répondre sans y passer une heure à décoder.

Merci de nous fournir un code nettoyé, si tu veux un coup de main.

Dan

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...