Votre question

Récupérer valeur avec $_post

Tags :
  • Html
  • Programmation
Dernière réponse : dans Programmation
1 Décembre 2010 09:35:43

Salut,


J'ai un petit problème avec mon code, j'ai un tableau avec une colonne projet (valeurs récupérer par une requète) et une autre colonne où l'utilisateur doit saisir des valeurs, la colonne pourcentage.

C'est lors de l'enregistrement des valeurs que j'ai un problème, en effet je n'arrive pas à récupérer les valeurs des pourcentage en fonction des projets.


  1. <?php
  2. session_start();
  3.  
  4. ?>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <title>Fiche pourcentage</title>
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  10. <link href="css/style.css" rel="stylesheet" type="text/css" />
  11.  
  12.  
  13. </head>
  14. <body>
  15. <div id="menu"> <?php $page="utilisateur1"; include($_SERVER["DOCUMENT_ROOT"]."test/menu.php"); ?></div>
  16.  
  17. <?php
  18.  
  19. include("fonction.php");
  20.  
  21.  
  22. //Récupération de la valeur des pourcentages
  23. $valeur = $_POST['pourcentage'];
  24.  
  25. //Récupération des nom des projets
  26. $proj=$_POST['projet'];
  27.  
  28.  
  29. $result = faire_requete("SELECT nom_projet FROM projet WHERE nom_projet='$proj';","fichetemps");
  30. $n1 = mysql_num_rows($result);
  31.  
  32. for ($i=1; $i<=$n1+1; $i++)
  33. {
  34.  
  35. $pourcent=$_POST['pourcentage'.$i];
  36. $pro = $_POST['projet'.$i];
  37.  
  38.  
  39.  
  40.  
  41. $res=faire_requete("INSERT INTO pourcentage ( id_pourcentage, valeur_pourcentage, nom_projet) VALUES (NULL,'$pourcent', '$pro');","fichetemps");
  42.  
  43. }
  44. $i++;
  45.  
  46.  
  47.  
  48.  
  49.  
  50. echo '<input type="button" onClick="parent.location.href = \'fichepourcentage.php\'" value="Retour"/></center/>';
  51.  
  52.  
  53. ?>
  54.  
  55.  
  56. </body>
  57. </html>




Voilà j'espère que vous pourrz m'aider. Merci d'avance

Autres pages sur : recuperer valeur post

a c 232 L Programmation
1 Décembre 2010 10:38:24

Salut,

Est-ce que tu pourrais mettre le code HTML de ton formulaire aussi, parce que j'ai du mal à comprendre ce que tu veux faire là.
m
0
l
1 Décembre 2010 11:15:48

en fait je viens juste de résoudre mon problème. Merci quand même.
D'autre part, j'ai un autre problème, en fait j'aimerai avoir une liste déroulante sur une page et que à l'appuie d'un bouton submit( ou pas) j'ai un tableau qui s'affiche sur la meme page suivant la valeur choisis dans la liste déroulante. Donc je voudrais savoir si cela differai par rapport à deux liste lier.
m
0
l
Contenus similaires
a c 232 L Programmation
1 Décembre 2010 13:52:55

Salut,

Si tu veux appuyer sur un bouton submit, il suffit de faire un formulaire tout simple où tu affiches les données dans ton tableau si une valeur de ta liste déroulante est sélectionnée.

Si tu ne veux pas appuyer sur un bouton, il te faudra utiliser un appel asynchrone afin de récupérer les données du tableau et les afficher automatiquement lors du changement de valeurs.
m
0
l
2 Décembre 2010 15:21:15

Merci beaucoup de ton aide, j'ai une autre question (je sais cela fait beaucoup de question), est ce que ça serait possible d'afficher sur une meme page, plusieurs tableaux. je m'explique, j'ai plusieurs services qui comprennent chacun plusieurs projet, et donc j'aimerai que sur une meme page afficher des tableaux de chacun de mes services avec leurs projets. j'espere que c'est comprehensible ce que je dis lol. Merci d'avance
m
0
l
a c 232 L Programmation
2 Décembre 2010 16:41:54

Je ne vois pas pourquoi ça ne serait pas possible :) 
Il te suffira de générer tes tableaux en fonction des données de chacun de tes services
m
0
l
3 Décembre 2010 10:14:53

Par exemple j'ai ça comme code (il permet d'afficher un tableau en fonction du service sélectionné dans la liste déroulante) mais comment améliorer ce code en affichant tous les tableaux des services sans liste déroulante?
m
0
l
3 Décembre 2010 10:17:20

Mince j'ai oublié de mettre le code désolé

  1. <?php
  2. session_start();
  3.  
  4. ?>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>">
  6. <html xmlns="<a href="http://www.w3.org/1999/xhtml" rel="nofollow" target="_blank">http://www.w3.org/1999/xhtml</a>">
  7. <head>
  8. <title>Aperçu des fiche de temps</title>
  9. <link href="css/style.css" rel="stylesheet" type="text/css" />
  10. </head>
  11. <body>
  12.  
  13.  
  14. <form method="post" action="">
  15. <div id="menu"> <?php $page="visualisation"; include($_SERVER["DOCUMENT_ROOT"]."test/menu.php"); ?></div><br/>
  16.  
  17.  
  18.  
  19. <?php
  20. include("fonction.php");
  21. echo '<label for="service">service :</label>';
  22. echo '<select name="service">';
  23. //Récupération de l'id de l'utilisateur connecté
  24. $users = $_SESSION['id_user'];
  25.  
  26. //Appel de fonction
  27. afficheListeService($users);
  28.  
  29.  
  30.  
  31. echo '<input Style="margin-left:180px; margin-right:180px;" type="submit" name="submit" value="Suivant"\n/>';
  32.  
  33.  
  34.  
  35.  
  36. ?>
  37.  
  38.  
  39.  
  40. <?php
  41.  
  42. if (isset($_POST['submit']))
  43. {$service=$_POST['service'];
  44. echo "</br>";
  45. $date=$_POST['date'];
  46.  
  47. echo "<p><br><br>Date sélectionnée: $date</p>";
  48. echo "<p>Service sélectionnée: $service</p>";
  49.  
  50. //Tableau des noms et des pourcentages des projets
  51.  
  52. echo "<table id='grille' border='1'>";
  53.  
  54. echo "<th>Nom projet</th>";
  55. echo "<th>Pourcentage</th>";
  56. echo "<tr>";
  57.  
  58.  
  59. $res1=faire_requete("select pourcentage.nom_projet, pourcentage.valeur_pourcentage from pourcentage, projet WHERE projet.nom_projet = pourcentage.nom_projet and projet.nom_service='$service' and pourcentage.date = '$date';","fichetemps");
  60. $nl1 = mysql_num_rows($res1);
  61.  
  62.  
  63. for ($i=0; $i<$nl1; $i++)
  64. {
  65.  
  66. $pro = mysql_fetch_assoc($res1);
  67. $nom_projet=($pro['nom_projet']);
  68. echo "<td align=\"center\">$nom_projet";
  69.  
  70. echo "</td>";
  71.  
  72.  
  73. $valeur_pourcentage=($pro['valeur_pourcentage']);
  74.  
  75. echo "<td align=\"center\">$valeur_pourcentage";
  76.  
  77.  
  78. echo "</td>";
  79. echo "</tr>";
  80.  
  81.  
  82.  
  83.  
  84. }
  85.  
  86. //$pro1 = mysql_fetch_assoc($res1);
  87. echo "<th>Total</th>";
  88.  
  89.  
  90. //connection au serveur:
  91. $cnx = mysql_connect( "localhost", "root", "**" ) ;
  92.  
  93. //sélection de la base de données:
  94. $db = mysql_select_db( "fichetemps" ) ;
  95.  
  96. //récupération de la variable d'URL,
  97. //qui va nous permettre de savoir quel enregistrement supprimer:
  98.  
  99.  
  100. //requête SQL:
  101. $sql = "SELECT SUM(valeur_pourcentage) FROM pourcentage, projet WHERE projet.nom_projet = pourcentage.nom_projet and projet.nom_service='$service' and pourcentage.date = '$date'";
  102.  
  103. //exécution de la requête:
  104. $requete = mysql_query( $sql, $cnx ) ;
  105.  
  106.  
  107.  
  108.  
  109. list($sum) = mysql_fetch_row($requete);
  110.  
  111.  
  112. echo "<td align=\"center\">$sum";
  113.  
  114. echo "</td>";
  115.  
  116.  
  117. }
  118.  
  119. echo "</table>";
  120.  
  121.  
  122. ?>
  123. </form>
  124. </body></html>
  125.  
  126.  
  127.  
  128.  
  129. </body>
  130. </form>
  131. </html>
m
0
l
a c 232 L Programmation
3 Décembre 2010 11:13:23

Tu fais le même principe que là pour ton tableau, sauf que tu boucles sur tous tes services pour le faire.
m
0
l
3 Décembre 2010 11:19:36

OmaR a dit :
Tu fais le même principe que là pour ton tableau, sauf que tu boucles sur tous tes services pour le faire.




Je sais qu'il fautfaire une bouble sur les services mais je sais pas à quel moment...
m
0
l
3 Décembre 2010 11:44:57

  1. <?php
  2.  
  3. echo '<div>';
  4.  
  5. echo '<p> Veuillez entrez une date : <input onclick="ds_sh(this);" name="date" readonly="readonly" style="cursor: text" /><br /></p>';
  6.  
  7. /*
  8. echo '</div>';
  9.  
  10. echo '<label for="service">service :</label>';
  11. echo '<select name="service">';
  12. //Récupération de l'id de l'utilisateur connecté
  13. $users = $_SESSION['id_user'];
  14.  
  15. //Appel de fonction
  16. afficheListeService($users);
  17.  
  18. */
  19.  
  20. echo '<input Style="margin-left:180px; margin-right:180px;" type="submit" name="submit" value="Suivant"\n/>';
  21.  
  22.  
  23.  
  24.  
  25. ?>
  26.  
  27.  
  28.  
  29. <?php
  30. include("fonction.php");
  31. if (isset($_POST['submit']))
  32. {//$service=$_POST['service'];
  33.  
  34.  
  35.  
  36. $cnx = mysql_connect( "localhost", "root", "" ) ;
  37.  
  38. //sélection de la base de données:
  39. $db = mysql_select_db( "fichetemps" ) ;
  40.  
  41. //récupération de la variable d'URL,
  42. //qui va nous permettre de savoir quel enregistrement supprimer:
  43.  
  44.  
  45. //requête SQL:
  46. $num = $_SESSION['id_user'];
  47. $sql1 = "SELECT DISTINCT nom_service from service WHERE id_user='$num'";
  48.  
  49. //exécution de la requête:
  50. $requete = mysql_query( $sql1, $cnx ) ;
  51.  
  52. $req = mysql_fetch_array($requete);
  53.  
  54. $req1 = mysql_num_rows($requete);
  55.  
  56.  
  57. echo "</br>";
  58. $date=$_POST['date'];
  59.  
  60. echo "<p><br><br>Date sélectionnée: $date</p>";
  61.  
  62.  
  63. //Tableau des noms et des pourcentages des projets
  64. for ($i=0; $i<$req1; $i++)
  65. { $a = $req['nom_service'];
  66. echo $a;
  67.  
  68.  
  69. $res1=faire_requete("select pourcentage.nom_projet, pourcentage.valeur_pourcentage from pourcentage, projet WHERE projet.nom_projet = pourcentage.nom_projet and projet.nom_service='$a' and pourcentage.date = '$date';","fichetemps");
  70. $nl1 = mysql_num_rows($res1);
  71.  
  72. echo "<table id='grille' border='1'>";
  73.  
  74. echo "<th>Nom projet</th>";
  75. echo "<th>Pourcentage</th>";
  76. echo "<tr>";
  77.  
  78. for ($i=0; $i<$nl1; $i++)
  79. {
  80.  
  81. $pro = mysql_fetch_assoc($res1);
  82. $nom_projet=($pro['nom_projet']);
  83. echo "<td align=\"center\">$nom_projet";
  84.  
  85. echo "</td>";
  86.  
  87.  
  88. $valeur_pourcentage=($pro['valeur_pourcentage']);
  89.  
  90. echo "<td align=\"center\">$valeur_pourcentage";
  91.  
  92.  
  93. echo "</td>";
  94. echo "</tr>";
  95.  
  96.  
  97.  
  98.  
  99. }$i++; }



Alors voilà j'ai essayé de faire comme tu m'a dit de boucler sur les services mais le problème c'ést que ça m'affiche que mon premier service avec les projets qui lui sont associé alors que j'ai plusieurs services avec d'autre projets. Donc voilà j'espere avoir été assez comprehensible. Merci beaucoup
m
0
l
a c 232 L Programmation
3 Décembre 2010 11:58:04

Le problème c'est que tu utilises la même variable $i pour 2 boucles imbriquées (lignes 64 et 78 de ton code).
  • Remplace le 2ème $i par $j
  • supprime le $i++ de la ligne 99

    et ça devrait être bon
    m
    0
    l
    3 Décembre 2010 12:03:54

    OmaR a dit :
    Le problème c'est que tu utilises la même variable $i pour 2 boucles imbriquées (lignes 64 et 78 de ton code).
  • Remplace le 2ème $i par $j
  • supprime le $i++ de la ligne 99

    et ça devrait être bon



  • Je viens d'essayer et en fait ca ne marche pas, cela m'affiche plusieurs fois le meme service avec le meme tableau...
    m
    0
    l
    a c 232 L Programmation
    3 Décembre 2010 12:58:45

    Ah oui, il faut que tu fasses ton $req = mysql_fetch_array($requete); dans ta première boucle for aussi
    m
    0
    l
    3 Décembre 2010 13:48:11

    OmaR a dit :
    Ah oui, il faut que tu fasses ton $req = mysql_fetch_array($requete); dans ta première boucle for aussi



    Merci beaucoup, ça marche enfin. J'espère que je n'aurait plus de problème par la suite, sinon je sais qui allé voir quand j'ai un problème :na:  lol
    m
    0
    l
    3 Décembre 2010 15:54:58

    Je dois peut être te saouler mais j'ai un autre problème lol, en fait j'aimerai crée un tableau qui me permettra d'afficher le total des pourcentage pour les différents service et donc j'ai commencé à le crée mais par contre il ne m'affiche que le dernier total trouvé. Voici ce que j'ai fait pour l'instant:
    1. <?php
    2.  
    3. echo '<div>';
    4.  
    5. echo '<p> Veuillez entrez une date : <input onclick="ds_sh(this);" name="date" readonly="readonly" style="cursor: text" /><br /></p>';
    6.  
    7.  
    8.  
    9. echo '<input Style="margin-left:180px; margin-right:180px;" type="submit" name="submit" value="Suivant"\n/>';
    10.  
    11.  
    12. ?>
    13.  
    14.  
    15.  
    16. <?php
    17. include("fonction.php");
    18. if (isset($_POST['submit']))
    19. {//$service=$_POST['service'];
    20.  
    21.  
    22.  
    23. $cnx = mysql_connect( "localhost", "root", "" ) ;
    24.  
    25. //sélection de la base de données:
    26. $db = mysql_select_db( "fichetemps" ) ;
    27.  
    28. //récupération de la variable d'URL,
    29. //qui va nous permettre de savoir quel enregistrement supprimer:
    30.  
    31.  
    32. //requête SQL:
    33. $num = $_SESSION['id_user'];
    34. $sql1 = "SELECT DISTINCT nom_service from service WHERE id_user='$num'";
    35.  
    36. //exécution de la requête:
    37. $requete = mysql_query( $sql1, $cnx ) ;
    38.  
    39.  
    40.  
    41. $req1 = mysql_num_rows($requete);
    42.  
    43.  
    44. echo "</br>";
    45. $date=$_POST['date'];
    46.  
    47. echo "<p><br><br>Date sélectionnée: $date</p>";
    48.  
    49.  
    50. //Tableau des noms et des pourcentages des projets
    51.  
    52.  
    53.  
    54. for ($i=0; $i<$req1; $i++)
    55. {
    56. $req = mysql_fetch_array($requete);
    57.  
    58. $service = $req['nom_service'];
    59.  
    60.  
    61.  
    62. $res1=faire_requete("select pourcentage.nom_projet, pourcentage.valeur_pourcentage from pourcentage, projet WHERE projet.nom_projet = pourcentage.nom_projet and projet.nom_service='$service' and pourcentage.date = '$date';","fichetemps");
    63. $nl1 = mysql_num_rows($res1);
    64.  
    65.  
    66.  
    67. echo "<table id='grille' border='1'>";
    68.  
    69. echo $service;
    70.  
    71. echo "<th>Nom projet</th>";
    72. echo "<th>Pourcentage</th>";
    73. echo "<tr>";
    74.  
    75. for ($j=0; $j<$nl1; $j++)
    76. {
    77.  
    78. $pro = mysql_fetch_assoc($res1);
    79. $nom_projet=($pro['nom_projet']);
    80. echo "<td align=\"center\">$nom_projet";
    81.  
    82. echo "</td>";
    83.  
    84.  
    85. $valeur_pourcentage=($pro['valeur_pourcentage']);
    86.  
    87. echo "<td align=\"center\">$valeur_pourcentage";
    88.  
    89.  
    90. echo "</td>";
    91. echo "</tr>";
    92.  
    93.  
    94.  
    95. }
    96.  
    97.  
    98. echo "<th>Total</th>";
    99.  
    100.  
    101. //connection au serveur:
    102. $cnx = mysql_connect( "localhost", "root", "" ) ;
    103.  
    104. //sélection de la base de données:
    105. $db = mysql_select_db( "fichetemps" ) ;
    106.  
    107. //récupération de la variable d'URL,
    108. //qui va nous permettre de savoir quel enregistrement supprimer:
    109.  
    110.  
    111. //requête SQL:
    112. $sql2 = "SELECT SUM(valeur_pourcentage) FROM pourcentage, projet WHERE projet.nom_projet = pourcentage.nom_projet and projet.nom_service='$service' and pourcentage.date = '$date'";
    113.  
    114. //exécution de la requête:
    115. $requete2 = mysql_query( $sql2, $cnx ) ;
    116.  
    117.  
    118.  
    119.  
    120. list($sum) = mysql_fetch_row($requete2);
    121.  
    122.  
    123. echo "<td align=\"center\">$sum";
    124.  
    125. echo "</td>";
    126.  
    127.  
    128.  
    129.  
    130.  
    131. }
    132.  
    133. }
    134. echo "</table>";
    135.  
    136. //connection au serveur:
    137. $cnx = mysql_connect( "localhost", "root", "" ) ;
    138.  
    139. //sélection de la base de données:
    140. $db = mysql_select_db( "fichetemps" ) ;
    141.  
    142. //récupération de la variable d'URL,
    143. //qui va nous permettre de savoir quel enregistrement supprimer:
    144.  
    145.  
    146. //requête SQL:
    147. $num1 = $_SESSION['id_user'];
    148.  
    149. echo "<table id='grille1' border='1'>";
    150. $sql3 = "SELECT DISTINCT nom_service from service WHERE id_user='$num'";
    151. //exécution de la requête:
    152. $requete3 = mysql_query( $sql3, $cnx ) ;
    153. $req3 = mysql_num_rows($requete3);
    154.  
    155.  
    156.  
    157. echo "<th>Total</th>";
    158. echo "<th>Pourcentage</th>";
    159. echo "<tr>";
    160.  
    161. for ($k=0; $k<$req3; $k++)
    162. {
    163.  
    164. $ser = mysql_fetch_assoc($requete3);
    165. $nom_serv=($ser['nom_service']);
    166. echo "<td align=\"center\">$nom_serv";
    167.  
    168. echo "</td>";
    169.  
    170. //requête SQL:
    171. $sql4 = "SELECT SUM(valeur_pourcentage) FROM pourcentage, projet WHERE projet.nom_projet = pourcentage.nom_projet and projet.nom_service='$service' and pourcentage.date = '$date'";
    172.  
    173.  
    174. //exécution de la requête:
    175. $requete4 = mysql_query( $sql4, $cnx ) ;
    176.  
    177.  
    178.  
    179.  
    180. list($sum1) = mysql_fetch_row($requete4);
    181.  
    182.  
    183. echo "<td align=\"center\">$sum1";
    184.  
    185. echo "</td>";
    186. echo "</tr>";
    187. }
    188.  
    189. echo "</table>";
    190.  
    191.  
    192. ?>
    193. </form>
    194. </body></html>
    195.  
    196.  
    197.  
    198.  
    199. </body>
    200. </form>
    201. </html>


    j'espère avoir été assez compréhensible lol. Merci d'avance
    m
    0
    l
    a c 232 L Programmation
    3 Décembre 2010 16:44:17

    Hmm, plutôt que de refaire une 2ème requête pour récupérer le total, tu peux calculer le total en PHP directement, ça évite de faire des requêtes supplémentaires sur la base de données.
    Dans ta boucle for, tu additionnes la valeur de ton pourcentage.
    m
    0
    l
    6 Décembre 2010 10:09:29

    OmaR a dit :
    Hmm, plutôt que de refaire une 2ème requête pour récupérer le total, tu peux calculer le total en PHP directement, ça évite de faire des requêtes supplémentaires sur la base de données.
    Dans ta boucle for, tu additionnes la valeur de ton pourcentage.




    J'ai essayé de faire comme tu as dit mais le problème c'est que si je fais cette méthode, il me récupére mon dernier total et fais la somme de ce résultat x fois.

    1. //connection au serveur:
    2. $cnx = mysql_connect( "localhost", "root", "" ) ;
    3.  
    4. //sélection de la base de données:
    5. $db = mysql_select_db( "fichetemps" ) ;
    6.  
    7. //récupération de la variable d'URL,
    8. //qui va nous permettre de savoir quel enregistrement supprimer:
    9.  
    10.  
    11. //requête SQL:
    12. $num1 = $_SESSION['id_user'];
    13.  
    14. echo "<table id='grille1' border='1'>";
    15. $sql3 = "SELECT DISTINCT nom_service from service WHERE id_user='$num'";
    16. //exécution de la requête:
    17. $requete3 = mysql_query( $sql3, $cnx ) ;
    18. $req3 = mysql_num_rows($requete3);
    19.  
    20.  
    21.  
    22. echo "<th>Total</th>";
    23. echo "<th>Pourcentage</th>";
    24. echo "<tr>";
    25. $total = 0;
    26. for ($k=0; $k<$req3; $k++)
    27. {
    28.  
    29. $ser = mysql_fetch_assoc($requete3);
    30. $nom_serv=($ser['nom_service']);
    31. echo "<td align=\"center\">$nom_serv";
    32.  
    33. echo "</td>";
    34.  
    35. $total += $sum;
    36.  
    37. echo "<td align=\"center\">$total";
    38.  
    39. echo "</td>";
    40. echo "</tr>";
    41. }
    42.  
    43. echo "</table>";



    J'ai fais ça...
    m
    0
    l
    a c 232 L Programmation
    6 Décembre 2010 11:51:15

    Ca correspond à quoi $sum ? On ne voit pas son initialization.
    m
    0
    l
    6 Décembre 2010 13:13:35

    OmaR a dit :
    Ca correspond à quoi $sum ? On ne voit pas son initialization.

    1. <?php
    2. include("fonction.php");
    3. if (isset($_POST['submit']))
    4. {//$service=$_POST['service'];
    5.  
    6.  
    7.  
    8. $cnx = mysql_connect( "localhost", "root", "" ) ;
    9.  
    10. //sélection de la base de données:
    11. $db = mysql_select_db( "fichetemps" ) ;
    12.  
    13. //récupération de la variable d'URL,
    14. //qui va nous permettre de savoir quel enregistrement supprimer:
    15.  
    16.  
    17. //requête SQL:
    18. $num = $_SESSION['id_user'];
    19. $sql1 = "SELECT DISTINCT nom_service from service WHERE id_user='$num'";
    20.  
    21. //exécution de la requête:
    22. $requete = mysql_query( $sql1, $cnx ) ;
    23.  
    24.  
    25.  
    26. $req1 = mysql_num_rows($requete);
    27.  
    28.  
    29. echo "</br>";
    30. $date=$_POST['date'];
    31.  
    32. echo "<p><br><br>Date sélectionnée: $date</p>";
    33.  
    34.  
    35. //Tableau des noms et des pourcentages des projets
    36.  
    37.  
    38.  
    39. for ($i=0; $i<$req1; $i++)
    40. {
    41. $req = mysql_fetch_array($requete);
    42.  
    43. $service = $req['nom_service'];
    44.  
    45.  
    46.  
    47. $res1=faire_requete("select pourcentage.nom_projet, pourcentage.valeur_pourcentage from pourcentage, projet WHERE projet.nom_projet = pourcentage.nom_projet and projet.nom_service='$service' and pourcentage.date = '$date';","fichetemps");
    48. $nl1 = mysql_num_rows($res1);
    49.  
    50.  
    51.  
    52. echo "<table id='grille' border='1'>";
    53.  
    54. echo $service;
    55.  
    56. echo "<th>Nom projet</th>";
    57. echo "<th>Pourcentage</th>";
    58. echo "<tr>";
    59.  
    60. for ($j=0; $j<$nl1; $j++)
    61. {
    62.  
    63. $pro = mysql_fetch_assoc($res1);
    64. $nom_projet=($pro['nom_projet']);
    65. echo "<td align=\"center\">$nom_projet";
    66.  
    67. echo "</td>";
    68.  
    69.  
    70. $valeur_pourcentage=($pro['valeur_pourcentage']);
    71.  
    72. echo "<td align=\"center\">$valeur_pourcentage";
    73.  
    74.  
    75. echo "</td>";
    76. echo "</tr>";
    77.  
    78.  
    79.  
    80. }
    81.  
    82.  
    83. echo "<th>Total</th>";
    84.  
    85.  
    86. //connection au serveur:
    87. $cnx = mysql_connect( "localhost", "root", "" ) ;
    88.  
    89. //sélection de la base de données:
    90. $db = mysql_select_db( "fichetemps" ) ;
    91.  
    92. //récupération de la variable d'URL,
    93. //qui va nous permettre de savoir quel enregistrement supprimer:
    94.  
    95.  
    96. //requête SQL:
    97. $sql2 = "SELECT SUM(valeur_pourcentage) FROM pourcentage, projet WHERE projet.nom_projet = pourcentage.nom_projet and projet.nom_service='$service' and pourcentage.date = '$date'";
    98.  
    99. //exécution de la requête:
    100. $requete2 = mysql_query( $sql2, $cnx ) ;
    101.  
    102.  
    103.  
    104.  
    105. list($sum) = mysql_fetch_row($requete2);
    106.  
    107.  
    108. echo "<td align=\"center\">$sum";
    109.  
    110. echo "</td>";
    111.  
    112.  
    113.  
    114.  
    115.  
    116. }
    117.  
    118.  
    119. echo "</table>";
    120.  
    121. //connection au serveur:
    122. $cnx = mysql_connect( "localhost", "root", "" ) ;
    123.  
    124. //sélection de la base de données:
    125. $db = mysql_select_db( "fichetemps" ) ;
    126.  
    127. //récupération de la variable d'URL,
    128. //qui va nous permettre de savoir quel enregistrement supprimer:
    129.  
    130.  
    131. //requête SQL:
    132. $num1 = $_SESSION['id_user'];
    133.  
    134. echo "<table id='grille1' border='1'>";
    135. $sql3 = "SELECT DISTINCT nom_service from service WHERE id_user='$num'";
    136. //exécution de la requête:
    137. $requete3 = mysql_query( $sql3, $cnx ) ;
    138. $req3 = mysql_num_rows($requete3);
    139.  
    140.  
    141.  
    142. echo "<th>Total</th>";
    143. echo "<th>Pourcentage</th>";
    144. echo "<tr>";
    145. $total = 0;
    146. for ($k=0; $k<$req3; $k++)
    147. {
    148.  
    149. $ser = mysql_fetch_assoc($requete3);
    150. $nom_serv=($ser['nom_service']);
    151. echo "<td align=\"center\">$nom_serv";
    152.  
    153. echo "</td>";
    154.  
    155. $total += $sum;
    156.  
    157. echo "<td align=\"center\">$total";
    158.  
    159. echo "</td>";
    160. echo "</tr>";
    161. }
    162.  
    163. echo "</table>";
    164. }
    165.  
    166. ?>




    $sum correspond au total de mes pourcentages, en fait je voudrais faire la somme de tous ces totaux, c'est pour cela que j'ai additionné mes $sum mais ça ne marche pas car cela me fais récupère juste la valeur de mon dernier total, or moi je veux récupérer tous mes totaux et en faire la somme..
    m
    0
    l
    a c 232 L Programmation
    6 Décembre 2010 14:51:13

    T'as l'air de rien comprendre de ce que tu fais en tout cas...

    J'ai essayé de retaper ça un peu correctement...

    Edit: suppression
    m
    0
    l
    6 Décembre 2010 15:17:13

    Je comprends ce que je fais, c'est plutôt toi qui ne comprend pas, je demande un peu d'aide sur une chose et toi tu ne fais que récopier mon programme en l'indentant, c'est pas ça qui va me servir à résoudre mon problème. Peut etre me suis-je mal exprimé... C'est possible.
    m
    0
    l
    a c 232 L Programmation
    6 Décembre 2010 16:12:06

    Non tu ne comprends pas ce que tu fais.
    Quand on fait plusieurs connexion à la base de données dans la même page, quand on récupère plusieurs fois la même variable de session, qu'on fait des copier/coller de choses qu'on ne comprend pas, dont des commentaires qui n'ont rien à voir avec ce qui se passe juste en dessous, on ne comprend pas ce qu'on fait.
    Et il suffit de voir ton code pour voir que tu ne comprends rien à ce que tu fais. Car vu la tête de ton code, avec des <th> qui n'étaient pas dans des <tr>, des <tr> qui sont ouverts avant les boucles et fermés dans la bouche, des <table> ouvert dans une boucle et fermé après la boucle...

    Mais bon, ça doit être moi certainement. J'ai fait beaucoup plus qu'indenter ton code.

    Mais vu comment tu le prends, je vais supprimer ce que j'ai fait, et tu t'amuseras à trouver quelqu'un d'autre pour t'aider.
    m
    0
    l
    6 Décembre 2010 17:04:54

    OmaR a dit :
    Non tu ne comprends pas ce que tu fais.
    Quand on fait plusieurs connexion à la base de données dans la même page, quand on récupère plusieurs fois la même variable de session, qu'on fait des copier/coller de choses qu'on ne comprend pas, dont des commentaires qui n'ont rien à voir avec ce qui se passe juste en dessous, on ne comprend pas ce qu'on fait.
    Et il suffit de voir ton code pour voir que tu ne comprends rien à ce que tu fais. Car vu la tête de ton code, avec des <th> qui n'étaient pas dans des <tr>, des <tr> qui sont ouverts avant les boucles et fermés dans la bouche, des <table> ouvert dans une boucle et fermé après la boucle...

    Mais bon, ça doit être moi certainement. J'ai fait beaucoup plus qu'indenter ton code.

    Mais vu comment tu le prends, je vais supprimer ce que j'ai fait, et tu t'amuseras à trouver quelqu'un d'autre pour t'aider.



    Fallait le dire si tu ne savais pas faire ce que je te demandais au lieu de t'emporter parce que excuse moi mais mon code marchait très bien avant tes modifications (t'as juste changé mes for en while c'est tout), ma question ne portait pas sur cette partie du code sinon je te l'aurait demandé. Je le prends pas mal c'est plutôt toi qui t'emporte un peu trop vite. Ok je suis débutante c'est pour cela que je demande de l'aide or toi tu me rabaisse, c'est paradoxale tu ne trouve pas?
    m
    0
    l
    a c 232 L Programmation
    6 Décembre 2010 17:33:52

    Ca m'étonnerait que ton code marchait très bien et que les tableaux générés soient corrects, vu l'emplacement de tes <table>, <tr>, <th>, <td> qui étaient positionnés n'importe comment, dont même certaines données qui étaient mises dans le tableau mais pas dans un <td> ou <th>.
    Et je n'ai pas juste changé tes for en while, j'ai supprimé tout le code superficiel, j'ai supprimés des requêtes qui n'étaient pas nécessaires (le moins il y a de requêtes, le plus vite ça va aller), surtout que tu pouvais récupérer ces données sans faire de requête supplémentaire (ce que je t'ai indiqué dans une réponse précédemment):
    Citation :
    Hmm, plutôt que de refaire une 2ème requête pour récupérer le total, tu peux calculer le total en PHP directement, ça évite de faire des requêtes supplémentaires sur la base de données.
    Dans ta boucle for, tu additionnes la valeur de ton pourcentage.


    Et la preuve que ton code ne marchait pas, c'est que tu es venue encore demander de l'aide.


    Après, c'est possible que le code que je t'ai fourni ne marche pas (je ne l'ai pas testé), mais il corrigeait ton code en le rendant plus clair et en supprimant plein de choses qui n'étaient pas nécessaires.

    Et je ne te rabaisse pas, je t'ai seulement dit que tu n'avais pas l'air de comprendre ce que tu fais (ni ce que je t'ai dit comme remarque).

    Enfin bref...
    m
    0
    l
    7 Décembre 2010 09:14:50

    En fait je pense que tu n'as pas compris ce que je voulais faire, mon code marchait très bien avant tes modifications, j'ai demandé ton aide pour rajouté un tableau qui me permettrai de faire la somme de mes totaux calculer dans mes différents services, c'est pour ça que j'ai demandé de l'aide, donc je pense qu'on s'est mal compris...
    m
    0
    l
    a c 232 L Programmation
    7 Décembre 2010 09:27:19

    Et est-ce que tu avais testé mon code ?
    m
    0
    l
    7 Décembre 2010 09:48:01

    OmaR a dit :
    Et est-ce que tu avais testé mon code ?



    oui je l'ai testé et il fait la même chose que le mien
    m
    0
    l
    a c 232 L Programmation
    7 Décembre 2010 10:54:34

    Sauf que le tien ne fonctionnait pas vu que tu n'as pas réussi à faire la somme des pourcentages :sarcastic: 
    m
    0
    l
    7 Décembre 2010 11:25:10

    OmaR a dit :
    Sauf que le tien ne fonctionnait pas vu que tu n'as pas réussi à faire la somme des pourcentages :sarcastic: 


    Je sais pas si tu as vu mais quand je t'ai envoyé mon code, il y avait deux tableaux, le premier permettait l'affichage des projets pour chaque service et calculait sa somme (mon code marchait très bien) et le deuxième tableau permettait l'affichage des services avec leurs totaux (c'est ce tableaux dont j'ai eu des problème or toi tu m'as donné un code qui permettait l'affichage que du premier tableau or j'en avais pas besoins. Bref on s'est mal compris, je pense, je te remercis toute fois de ton aide pour les pécédents problème que j'ai eu, cela m'a beaucoup aidé. Merci
    m
    0
    l
    a c 232 L Programmation
    7 Décembre 2010 12:15:55

    Hmm... en effet j'ai mal du comprendre ton dernier problème. Je pensais que tu voulais mettre le total dans le même tableau. C'est pour ça que je t'avais dit de ne pas utiliser de 2nde requête SQL et plutôt de calculer manuellement avec PHP, vu que les requêtes SQL sont des opérations lourdes. Désolé du coup, j'ai pas tout compris.

    Bref... là aussi on doit pouvoir se passer de faire encore plein de requêtes SQL:
    1. <?php
    2. include("fonction.php" );
    3. if (isset($_POST['submit']))
    4. {
    5. $cnx = mysql_connect( "localhost", "root", "");
    6. //sélection de la base de données:
    7. $db = mysql_select_db( "fichetemps");
    8.  
    9. $num = $_SESSION['id_user'];
    10. $sql1 = "SELECT DISTINCT nom_service from service WHERE id_user='$num'";
    11. //exécution de la requête:
    12. $requete = mysql_query($sql1, $cnx);
    13.  
    14. echo "</br>";
    15. $date=$_POST['date'];
    16. echo "<p><br><br>Date sélectionnée: $date</p>";
    17. //Tableau des noms et des pourcentages des projets
    18. while($req = mysql_fetch_array($requete))
    19. {
    20. $service = $req['nom_service'];
    21. $res1=faire_requete("select pourcentage.nom_projet, pourcentage.valeur_pourcentage from pourcentage, projet WHERE projet.nom_projet = pourcentage.nom_projet and projet.nom_service='$service' and pourcentage.date = '$date';","fichetemps" );
    22.  
    23. echo $service;
    24. echo "<table id='grille' border='1'>";
    25. echo "<tr>";
    26. echo "<th>Nom projet</th>";
    27. echo "<th>Pourcentage</th>";
    28. echo "</tr>";
    29.  
    30. $total = 0;
    31. while($pro = mysql_fetch_assoc($res1))
    32. {
    33. $nom_projet=($pro['nom_projet']);
    34. $valeur_pourcentage=($pro['valeur_pourcentage']);
    35. $total += $valeur_pourcentage;
    36.  
    37. echo "<tr>";
    38. echo "<td align=\"center\">$nom_projet</td>";
    39. echo "<td align=\"center\">$valeur_pourcentage</td>";
    40. echo "</tr>";
    41. }
    42.  
    43. // We save the total value for the specified service
    44. $totalByService[$service] = $total;
    45.  
    46. echo "<tr>";
    47. echo "<th>Total</th>";
    48. echo "<td align=\"center\">$total</td>";
    49. echo "</tr>";
    50. echo "</table>";
    51. }
    52.  
    53. // We return to the start of the query results
    54. mysql_data_seek($requete, 0);
    55.  
    56. echo "<table id='grille1' border='1'>";
    57. echo "<tr>";
    58. echo "<th>Service</th>";
    59. echo "<th>Total</th>";
    60. echo "</tr>";
    61. while($row = mysql_fetch_assoc($requete))
    62. {
    63. echo "<tr>";
    64. $nom_serv=($row['nom_service']);
    65. echo "<td align=\"center\">$nom_serv</td>";
    66. $total = $totalByService[$nom_serv];
    67. echo "<td align=\"center\">$total</td>";
    68. echo "</tr>";
    69. }
    70.  
    71. echo "</table>";
    72. }
    73. ?>


    (Je n'ai pas testé, mais ça devrait le faire)


    Edit: au passage, normalement il ne faut pas donner le même id à plusieurs éléments. Si tu veux mettre des styles CSS identiques, utilise une classe plutôt qu'un id, et sinon, supprime complètement les id='grille1'
    m
    0
    l
    7 Décembre 2010 13:38:55

    Merci beaucoup, le programme fonctionne parfaitement. J'étais sur que tu ne m'avais pas bien comprise... Je vais suivre ton conseil en remplaçant mes id par des classes. Et encore merci, j'espère ne plus avoir de problème par la suite....
    m
    0
    l
    a c 232 L Programmation
    7 Décembre 2010 13:59:20

    Pas de soucis. Et mince je me suis même pas rendu compte que j'avais mis les commentaires en anglais, trop l'habitude, désolé :p  Si tu as besoin de détails sur ce qui est fait, n'hésites pas.
    m
    0
    l
    7 Décembre 2010 15:19:34

    OmaR a dit :
    Pas de soucis. Et mince je me suis même pas rendu compte que j'avais mis les commentaires en anglais, trop l'habitude, désolé :p  Si tu as besoin de détails sur ce qui est fait, n'hésites pas.



    ok merci beaucoup
    m
    0
    l
    7 Décembre 2010 16:26:54

    J'ai une dernière question... Est ce possible de creer des digrammes (camembert) à partir des valeurs de la base de données. Parceque j'ai cherché sur le net, et j'ai vu que les valeurs affiché sur le diagramme étaient que des valeurs en dur. Donc voilà je voulais savoir si c'était possible de faire ce genre de chose
    m
    0
    l
    a c 232 L Programmation
    7 Décembre 2010 16:40:51

    Tu ne dois pas pouvoir faire ça directement avec PHP, mais tu dois pouvoir utiliser des librairies, tu as pChart qui te permet de faire ça gratuitement
    m
    0
    l
    10 Décembre 2010 11:24:51

    Rebonjour, j'ai encore un petit problème mais cette fois-ci avec des graphiques, pour afficher des graphiques j'ai choisis d'utiliser la librairie jpGraph. Et pour générer ce graphique j'utilise des valeurs qui proviennent de ma base de données. Mon problème c'est que j'ai une erreur qui s'affiche: Erreur 'Illegal Pie Plot. Sum of all data is zero for Pie.'
    Je sais pourquoi cette erreur s'affiche mais je sais pas comment le résoudre. Ce que je veux créer c'est un camembert qui permet d'afficher la répartition de mes projets en fonction du service choisis (en l'occurence le service est analyse). CErtes il y a des projets qui n'appartiennent pas au service, mais comment afficher juste les projets qui appartiennent à ce service?
    Voici le code que j'ai fait pour l'instant:

    1. <?php
    2. include ("/jpgraph/jpgraph.php");
    3. include ("/jpgraph/jpgraph_pie.php");
    4. include ("/jpgraph/jpgraph_pie3d.php");
    5.  
    6. define('MYSQL_HOST', 'localhost');
    7. define('MYSQL_USER', 'root');
    8. define('MYSQL_PASS', '');
    9. define('MYSQL_DATABASE', '*');
    10.  
    11. $tableauService = array();
    12. $tableauProjet = array();
    13.  
    14. // *****************************************************
    15. // Extraction des données dans la base de données
    16. // **************************************************
    17.  
    18. $sql = <<<EOF
    19. SELECT
    20. nom_service, nom_projet FROM `projet` WHERE nom_service = 'analyse'
    21.  
    22. EOF;
    23.  
    24. $mysqlCnx = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Pb de connxion mysql');
    25.  
    26. @mysql_select_db(MYSQL_DATABASE) or die('Pb de sélection de la base');
    27.  
    28. $mysqlQuery = @mysql_query($sql, $mysqlCnx) or die('Pb de requête');
    29.  
    30. while ($row = mysql_fetch_array($mysqlQuery, MYSQL_ASSOC)) {
    31. // Ajouter année devant, c'est pour la légende
    32. $tableauProjet[] = "projet " . $row['nom_projet'];
    33. $tableauService[] = $row['nom_service'];
    34. }
    35.  
    36. // **************************************
    37. // Création du graphique
    38. // *****************************************
    39.  
    40. // On spécifie la largeur et la hauteur du graph
    41. $graph = new PieGraph(1200,600);
    42.  
    43. // Ajouter une ombre au conteneur
    44. $graph->SetShadow();
    45.  
    46. // Donner un titre
    47. $graph->title->Set("Répartition des projets par service");
    48.  
    49. // Quelle police et quel style pour le titre
    50. // Prototype: function SetFont($aFamily,$aStyle=FS_NORMAL,$aSize=10)
    51. // 1. famille
    52. // 2. style
    53. // 3. taille
    54. $graph->title->SetFont(FF_GEORGIA,FS_BOLD, 12);
    55.  
    56. // Créer un camembert
    57. $pie = new PiePlot3D($tableauProjet);
    58.  
    59. // Quelle partie se détache du reste
    60. $pie->ExplodeSlice(2);
    61.  
    62. // Spécifier des couleurs personnalisées... #FF0000 ok
    63. $pie->SetSliceColors(array('red', 'blue', 'green'));
    64.  
    65. // Légendes qui accompagnent le graphique, ici chaque projet avec sa couleur
    66. $pie->SetLegends($tableauProjet);
    67.  
    68. // Position du graphique (0.5=centré)
    69. $pie->SetCenter(0.4);
    70.  
    71. // Type de valeur (pourcentage ou valeurs)
    72. $pie->SetValueType(PIE_VALUE_ABS);
    73.  
    74. // Personnalisation des étiquettes pour chaque partie
    75. $pie->value->SetFormat('%d nom_projet');
    76.  
    77. // Personnaliser la police et couleur des étiquettes
    78. $pie->value->SetFont(FF_ARIAL,FS_NORMAL, 9);
    79. $pie->value->SetColor('blue');
    80.  
    81. // ajouter le graphique PIE3D au conteneur
    82. $graph->Add($pie);
    83.  
    84. // Provoquer l'affichage
    85. $graph->Stroke();
    86.  
    87. ?>


    Voilà, merci d'avance
    m
    0
    l
    a c 232 L Programmation
    10 Décembre 2010 12:11:23

    Le problème c'est qu'avec tes 2 tableaux, tu lui donnes des noms de projets et des noms de service. Il n'y a aucune donnée pour faire un graphique avec ça.
    Il faut lui passer des valeurs.
    m
    0
    l
    10 Décembre 2010 13:13:15

    C'est pas ce que je fais dans le boucle while?
    m
    0
    l
    10 Décembre 2010 14:23:28

    j'ai réussit en faisant un nouveaux programme
    1. <?php // content="text/plain; charset=utf-8"
    2. require_once ('jpgraph/jpgraph.php');
    3. require_once ('jpgraph/jpgraph_pie.php');
    4. // Some data
    5.  
    6.  
    7. //connection au serveur:
    8. $cnx = mysql_connect( "localhost", "root", "" ) ;
    9.  
    10. //sélection de la base de données:
    11. $db = mysql_select_db( "fichetemps" ) ;
    12.  
    13.  
    14. $service=$_POST['service'];
    15. /*requete sql*/
    16. $query = "select nom_projet, nom_service from projet where nom_service='$service'";
    17. /* EXECUTION DE LA REQUETE QUERY*/
    18. $result = mysql_query($query);
    19. //$ydonnees = array();
    20. while($row = mysql_fetch_array($result)){
    21.  
    22. $ydonnees[] = $row["nom_projet"];
    23. }
    24.  
    25. //$data = array(40,21,17,14,23);
    26.  
    27. // Create the Pie Graph.
    28. $graph = new PieGraph(350,250);
    29.  
    30. $theme_class="DefaultTheme";
    31. //$graph->SetTheme(new $theme_class());
    32.  
    33. // Set A title for the plot
    34. $graph->title->Set("A Simple Pie Plot");
    35. $graph->SetBox(true);
    36.  
    37. // Create
    38. $p1 = new PiePlot($ydonnees);
    39. $graph->Add($p1);
    40. $p1->SetLegends($ydonnees);
    41. $p1->ShowBorder();
    42. $p1->SetColor('black');
    43.  
    44. $graph->Stroke();
    45.  
    46. ?>


    J'aurais peut etre d'autre problème à l'avenir.... lol
    m
    0
    l
    a c 232 L Programmation
    10 Décembre 2010 14:33:41

    Bah dans ta boucle while, tu initialisais 2 tableaux: $tableauProject et $tableauService.
    A moins que tes titres soient trompeurs, $tableauProject et $tableauService ne contiennent que des chaines de caractères (les noms des projets et les noms de services).
    Comment tu veux faire des graphiques de données avec des noms ? :) 
    m
    0
    l
    10 Décembre 2010 14:42:28

    finalement j'ai réussi
    m
    0
    l
    13 Décembre 2010 14:09:06

    Est ce que c'est possible d'afficher plusieurs graphique sur une même page sur un meme thème mais avec des données différentes?
    m
    0
    l
    a c 232 L Programmation
    13 Décembre 2010 16:01:11

    Je ne connais pas la librairie que tu as utilisé, mais ça ne devrait pas poser de problème du tout.
    Il suffit de créer plusieurs PieGraph et tout ce qui va avec, en leur donnant les données que tu veux.
    m
    0
    l
    20 Décembre 2010 11:28:47

    Et concernant les export de php vers excel, tu t'y connais? Parceque là je suis en grosse difficulté...
    m
    0
    l
    Tom's guide dans le monde
    • Allemagne
    • Italie
    • Irlande
    • Royaume Uni
    • Etats Unis
    Suivre Tom's Guide
    Inscrivez-vous à la Newsletter
    • ajouter à twitter
    • ajouter à facebook
    • ajouter un flux RSS