pb avec résultat d'un formulaire

pb avec résultat d'un formulaire - PHP - Programmation

Marsh Posté le 03-01-2004 à 23:33:49    

:) salut,
je me suis lancé dans le monde du php hier et ma foi ca m'a l'air intéréssant, mais j'ai quand mm un pb (lol)
voila j'ai 3 fichiers : form.html, calcul.php, graph.php.
donc on complete mon formulaire on clik sur validez et hop ca affiche le resultat. avec le mm formulaire si je remplacer action="calcul.php" par "graph.php" impec ca me genere mon graph (avec jpgraph). vous me voyez venir (j'espere), je voudrais que kan on clik sur validez, ca envoi les variables au 2 pages php é ke ca mafiche sur une page le calcul é le graph.
j'ai ésséyé sur la page de calcul dincorporé le code du graph mais ca marche pas j'ai un mess d'erreur que voila
 
JpGraph Error: HTTP headers have already been sent.  
Explanation:
HTTP headers have already been sent back to the browser indicating the data as text before the library got a chance to send it's image HTTP header to this browser. This makes it impossible for the library to send back image data to the browser (since that would be interpretated as text by the browser and show up as junk text).
Most likely you have some text in your script before the call to Graph::Stroke(). If this texts gets sent back to the browser the browser will assume that all data is plain text. Look for any text, even spaces and newlines, that might have been sent back to the browser.  
 
For example it is a common mistake to leave a blank line before the opening "<?php".

 

Code :
  1. <HTML>
  2. <HEAD>
  3.   <TITLE>Test calcul en PHP</TITLE>
  4.   <STYLE>
  5.   table.coin
  6. {
  7.   border: none;
  8.   border-collapse: collapse;
  9. }
  10. table.coin td
  11. {
  12.   border: 2px black solid;
  13. }
  14. table.coin td.coin
  15. {
  16.   border: none;
  17.   border-bottom: 2px black solid;
  18. }
  19.   </STYLE>
  20. </HEAD>
  21. <BODY bgcolor="#FFFFCC">
  22.   <MARQUEE><font size="6" color="green"><b>Test calcul</b></font>
  23.   </MARQUEE> 
  24.   <HR>
  25.   <FORM action="calcul.php" method="post">
  26.   <center><TABLE class="coin" cellspacing="0" cellpadding="5">
  27.    <tr>
  28.     <td class="coin"></td>
  29.     <td bgcolor="#CCFFCC" align="center"><b>Note</b></td>
  30.     <td bgcolor="#CCFFCC" align="center"><b>Coefficient</b></td>
  31.    </tr>
  32.    <tr bgcolor="#CCFFCC">
  33.    <td colspan="2"><font color="blue"><b>TITRE</b></font></td>
  34.    <td></td>
  35.    </tr>
  36.    <tr bgcolor="#CCFFCC">
  37.     <td><b>A</b></td>
  38.     <td>
  39. <select name="note1">
  40. <option value="1">1
  41. <option value="2">2
  42. <option value="3">3
  43. <option value="4">4
  44. </select>
  45.     </td>
  46.     <td>
  47. <select name="coeff1">
  48. <option value="1">1
  49. <option value="2">2
  50. <option value="3">3
  51. <option value="4">4
  52. </select>
  53.    </td>
  54.    </tr>
  55.    <tr bgcolor="#CCFFCC">
  56.     <td><b>B</b></td>
  57.     <td>
  58. <select name="note2">
  59. <option value="1">1
  60. <option value="2">2
  61. <option value="3">3
  62. <option value="4">4
  63. </select>
  64.     </td>
  65.     <td>
  66. <select name="coeff2">
  67. <option value="1">1
  68. <option value="2">2
  69. <option value="3">3
  70. <option value="4">4
  71. </select>
  72.     </td>
  73.    </tr>
  74.    <tr bgcolor="#CCFFCC">
  75.     <td><b>C</b></td>
  76.     <td>
  77. <select name="note3">
  78. <option value="1">1
  79. <option value="2">2
  80. <option value="3">3
  81. <option value="4">4
  82. </select>
  83.     </td>
  84.     <td>
  85. <select name="coeff3">
  86. <option value="1">1
  87. <option value="2">2
  88. <option value="3">3
  89. <option value="4">4
  90. </select>
  91.     </td>
  92.    </tr> 
  93.   </TABLE>
  94. <BR>
  95. <HR>
  96. <center><input type="submit" value="Validez">
  97. <HR>
  98. </BODY>
  99. </HTML>


 

Code :
  1. <?php
  2. // Récupération des variables du formulaire
  3. $note1 = $_POST['note1'];
  4. $note2 = $_POST['note2'];
  5. $note3 = $_POST['note3'];
  6. $coeff1 = $_POST['coeff1'];
  7. $coeff2 = $_POST['coeff2'];
  8. $coeff3 = $_POST['coeff3'];
  9. // Ensuite on calcule le score
  10. $score =( $note1 * $coeff1 + $note2 * $coeff2 + $note3 * $coeff3 ) / ($coeff1 + $coeff2 + $coeff3);
  11. // Et on donne le résultat en fonction du score obtenu
  12. echo "Votre score est de " . $score . "";
  13. if ($score < 2) {
  14.   echo "<p>lol</p>";
  15. } elseif ($score < 3) {
  16.   echo "<p>bof</p>";
  17. } else {
  18.   echo "<p>koul</p>";
  19. }
  20. ?>


 

Code :
  1. <?php
  2. $note1 = $_POST['note1'];
  3. $note2 = $_POST['note2'];
  4. $note3 = $_POST['note3'];
  5. include ("jpgraph14/jpgraph.php" );
  6. include ("jpgraph14/jpgraph_radar.php" );
  7.    
  8. // Some data to plot  
  9. $data = array($note1,$note2,$note3);
  10.    
  11. // Create the graph and the plot  
  12. $graph = new RadarGraph (800,600);
  13. $plot = new RadarPlot ($data);
  14. $graph->SetScale('lin',0,4);
  15. $graph->yscale-> ticks->Set(1 ,0);
  16. $graph->SetTitles(array("A","B","C" ));
  17. // Add the plot and display the graph  
  18. $graph->Add( $plot);
  19. $graph->Stroke();
  20. ?>


Message édité par $man le 03-01-2004 à 23:45:38
Reply

Marsh Posté le 03-01-2004 à 23:33:49   

Reply

Marsh Posté le 04-01-2004 à 02:18:41    

Ben le message d'erreur est pourtant clair, tu ne peux pas faire de sortie (un echo par exemple) avant l'appel à $graph->Stroke();
 
Je suppose que tu devrais essayer l'include de calcul.php après l'execution de graph.php :)

Reply

Marsh Posté le 04-01-2004 à 12:29:47    

oki doki, je test ca, bien qu'il me semble que j'ai deja éssayer mais j'avais juste le graph et pas le calcul en dessou
merci  :)
 
EDIT:ca ne marche pas, j'ai bien le graphique mais en dessous il écrit pas le résultat
 
voici mon code :
 

Code :
  1. <?php
  2. // Récupération des variables du formulaire  
  3. $note1 = $_POST['note1'];
  4. $note2 = $_POST['note2'];
  5. $note3 = $_POST['note3'];
  6. $coeff1 = $_POST['coeff1'];
  7. $coeff2 = $_POST['coeff2'];
  8. $coeff3 = $_POST['coeff3'];
  9. include ("jpgraph14/jpgraph.php" ); 
  10. include ("jpgraph14/jpgraph_radar.php" ); 
  11.    
  12. // Some data to plot   
  13. $data = array($note1,$note2,$note3); 
  14.    
  15. // Create the graph and the plot   
  16. $graph = new RadarGraph (800,600);
  17. $plot = new RadarPlot ($data); 
  18. $graph->SetScale('lin',0,4);
  19. $graph->yscale-> ticks->Set(1 ,0);
  20. $graph->SetTitles(array("A","B","C" ));
  21. // Add the plot and display the graph   
  22. $graph->Add( $plot); 
  23. $graph->Stroke();
  24. // Ensuite on calcule le score  
  25. $score =( $note1 * $coeff1 + $note2 * $coeff2 + $note3 * $coeff3 ) / ($coeff1 + $coeff2 + $coeff3);
  26. // Et on donne le résultat en fonction du score obtenu  
  27. echo "Votre score est de " . $score . "";
  28. if ($score < 2) {
  29. echo "<p>lol</p>";
  30. } elseif ($score < 3) {
  31. echo "<p>bof</p>";
  32. } else {
  33. echo "<p>koul</p>";
  34. }
  35. ?>


Message édité par $man le 04-01-2004 à 12:39:30
Reply

Marsh Posté le 04-01-2004 à 17:12:10    

Ah voui, en lisant la doc de jpgraph en vitesse, je vois qu'il envoit un MIME-TYPE pour l'image, ce qui t'empêche donc d'afficher quoi que ce soit en html après

Reply

Marsh Posté le 04-01-2004 à 17:34:08    

naceroth a écrit :

Ah voui, en lisant la doc de jpgraph en vitesse, je vois qu'il envoit un MIME-TYPE pour l'image, ce qui t'empêche donc d'afficher quoi que ce soit en html après


 
il n'y a donc aucune solution a mon pb ?
 :hello:

Reply

Marsh Posté le 04-01-2004 à 19:41:22    

Si, j'ai pu le faire avec une iframe, tu mets le script qui crée le graph dans l'iframe et celui qui calcule le score à l'extérieur :
 

Code :
  1. <html>
  2. <head>
  3. <title></title>
  4. </head>
  5. <body>
  6. <iframe src="graph.php" height="600px" width="800px"></iframe>
  7. <?php
  8. $note1 = $_POST['note1']; 
  9. $note2 = $_POST['note2']; 
  10. $note3 = $_POST['note3']; 
  11. $coeff1 = $_POST['coeff1']; 
  12. $coeff2 = $_POST['coeff2']; 
  13. $coeff3 = $_POST['coeff3'];
  14. // Ensuite on calcule le score   
  15. $score =( $note1 * $coeff1 + $note2 * $coeff2 + $note3 * $coeff3 ) / ($coeff1 + $coeff2 + $coeff3); 
  16.  
  17.   // Et on donne le résultat en fonction du score obtenu   
  18.   echo "Votre score est de " . $score . ""; 
  19.   if ($score < 2) { 
  20.      echo "<p>lol</p>"; 
  21.     } elseif ($score < 3) { 
  22.      echo "<p>bof</p>"; 
  23.     } else
  24.      echo "<p>koul</p>"; 
  25.   } 
  26. ?>
  27. </body>
  28. </html>


 
A moins que tu puisses ajouter du texte sur l'image du graph lui même, j'ai pas mieux à proposer :)

Reply

Marsh Posté le 04-01-2004 à 20:24:50    

merci bcp je vais tester ca.
mais comment je fais pour que mon formulaire envoi les variables a calcul et graph ? dan action je peu mettre calcul et formulaire ?
merci bcp de ton aide  :jap:

Reply

Marsh Posté le 04-01-2004 à 20:40:06    

En supposant que le fichier avec l'iframe soit calcul.php (ce qui me semble le plus logique puisque c'est l'autre qui pose problème :)), tu mets dans ton formulaire action="calcul.php".
 
La récupération des variables, bon, j'avoue que j'ai fait le test avec des variables fixes :D
Tu vas de toutes façons devoir les récupérer dans les deux scripts, pas de problème pour calcul, mais faudra peut être les passer dans le source de l'iframe, genre :

Code :
  1. <?php
  2. $note1 = $_POST['note1']; 
  3. $note2 = $_POST['note2']; 
  4. $note3 = $_POST['note3'];
  5. echo "<iframe src=\"graph.php?note1=$note1&note2=$note2&note3=$note3\" height=\"600px\" width=\"800px\"></iframe>";
  6. ?>


 
et les récuperer avec un $_GET dans graph.
 
A essayer donc :)

Reply

Marsh Posté le 04-01-2004 à 20:45:09    

mici monsieur je test ca  :)  
ce que je comprend pas c'est comment graph.php va pouvoir récupéré lé variable ? en tapan le code que tu m'a donné dans calcul.php ?
 :hello:
 
EDIT : avec la iframe, c'est bon j'ai le graph inclu dans la page calcul -> super  :)  
mais le graphique n'a pas recu les variables donc ma kestion posé avant est tj valable  :hello:


Message édité par $man le 04-01-2004 à 21:03:05
Reply

Marsh Posté le 04-01-2004 à 23:59:52    

Oui donc, comme je le supposais plus haut, faut les passer dans l'url de la source de l'iframe en remplacant le iframe html par le code donné plus haut, et là, ça roule, testé et approuvé :)
 
(ah oui, faut récupérer les variables dans graph avec le $_GET aussi bien sur :))

Reply

Marsh Posté le 04-01-2004 à 23:59:52   

Reply

Marsh Posté le 05-01-2004 à 20:33:47    

salut
impec ce que tu ma donné, pour faire la fine bouche, on peut enlever les ascenseurs sur la fenetre du graph ?
 :hello:

Reply

Marsh Posté le 06-01-2004 à 00:07:21    

réduit la taille de l'image pour qu'elle n'excéde pas celle de la frame ou mets scrolling="no" dans le <iframe...> :)

Reply

Marsh Posté le 06-01-2004 à 09:07:09    

je te remercie infiniment de ton aide  :jap:  
c'est exactement ca que je voulais et ça marche  :)  
maintenant je ne t'embete plus avec mes kestions de noob... enfin juskau prochain probleme je suppose  :lol:  
 :hello: et bonne année au fait !

Reply

Marsh Posté le 06-01-2004 à 20:55:37    

Erf, le pire c'est que je viens de voir qu'il y avait nettement plus simple, mettre graph.php en source d'une balise <img> aurait donné le même résultat :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed