Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3112 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [php] Problème d'include et génération d'image (résolu)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[php] Problème d'include et génération d'image (résolu)

n°1970137
Tangrim
Des bisous et des nounours !
Posté le 01-03-2010 à 11:32:34  profilanswer
 

Bonjour à vous,
 
je vais vous exposer un petit probème en php.
Le décor: j'ai une page avec deux div, une à gauche qui contient un formulaire, et qui fera office de menu, et l'autre qui traitera les données de ce formulaire, ça a cette tronche là:
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  3. <head>
  4.  <title>FlexStat</title>
  5.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
  6.  <link rel="stylesheet" media="screen" type="text/css" title="Flexstat" href="design.css" />
  7. </head>
  8. <body>
  9.  <div id="form">
  10.   <?php include("form.php" ); ?> <!-- Le formulaire est généré en php -->
  11.         </div>
  12.  <div id="graph">
  13.   <?php
  14.    $user = "false";
  15.    $mois = "false";
  16.    if (isset($_POST["user"])){
  17.     $user = $_POST["user"];}
  18.    if (isset($_POST["mois"])){
  19.     $mois = $_POST["mois"];}
  20.    if ($mois != "false" ) {
  21.     include("include/affichage_month.php" );
  22.     }
  23.   ?>
  24.  </div>
  25. </body>
  26. </html>


 
Et le formulaire:
 

Code :
  1. <div>
  2. <?php
  3. include_once("../controle/definitions.php" ); //avec les fonctions mysql
  4. ?>
  5. <!--form method="POST" action="include/affichage_month.php" enctype="multipart/form-data"-->
  6. <form method="POST" action="index.php" enctype="multipart/form-data">
  7.  <label>Statistiques par mois : </label>
  8.  <br />
  9.  <select name="mois">
  10.   <option value="1">Janvier</option>
  11.   <option value="2">Fevrier</option>
  12.   <option value="3">Mars</option>
  13.   <option value="4">Avril</option>
  14.   <option value="5">Mai</option>
  15.   <option value="6">Juin</option>
  16.   <option value="7">Juillet</option>
  17.   <option value="8">Aout</option>
  18.   <option value="9">Septembre</option>
  19.   <option value="10">Octobre</option>
  20.   <option value="11">Novembre</option>
  21.   <option value="12">Décembre</option>
  22.  </select>
  23.  <br />
  24.  <label>Utilisateur</label>
  25.  <select name="user">
  26.   <option value="tous">Tous</option>
  27.    <?php SQL_user_form();  //on genere la liste des utilisateurs  
  28.                                  ?>
  29.  </select>
  30.  <input type="submit" name="envoyer" value="générer">
  31. </form>
  32. </div>


 
Ca semble assez simple: si on envoie le formulaire, la page index est rechargée en affichant include/affichage_month.php dans la DIV graph.
Mais j'ai l'erreur suivante qui s'affiche (en pleine page):
L'image "http://localhost/monsite/index.php" ne peut être affichée car elle contient des erreurs.
Si j'enregistre cette image, j'ai un fichier index.php.png qui contient le code html de ma page index, avec la DIV "graph" complètement vide.
 
A noter que dans le fichier de formulaire, si dans action j'appelle action="include/affichage_month.php" (en décommentant la ligne commentée et en commentant celle en dessous), le résultat de mon formulaire est bien appelé, et j'ai mon image, en pleine page.
 
Voici la page affichage_month, au cas où ça servirait (c'est un grpah créé grâce à libchart):
 

Code :
  1. <div>
  2. <?php
  3. include_once("../controle/definitions.php" );
  4. $user = $_POST["user"];
  5. $mois = $_POST["mois"];
  6. $listdate=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31);
  7. $listjeton=array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
  8. $listjetonacc=array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
  9. for ($i = 1; $i<32; $i++){
  10.  $jetonvar=SQL_graph_jeton_month($user, $mois, $i);
  11.  if (count($jetonvar)!=0){
  12.  $listjeton[$i-1]=$jetonvar[0];
  13.  }
  14. }
  15. for ($i = 1; $i<32; $i++){
  16.  $jetonvar=SQL_graph_jeton_month_acc($user, $mois, $i);
  17.  if (count($jetonvar)!=0){
  18.  $listjetonacc[$i-1]=$jetonvar[0];
  19.  }
  20. }
  21. include "../libchart/classes/libchart.php";
  22. header("Content-type: image/png" );
  23. $chart = new VerticalBarChart(1000, 500);
  24. $serie1 = new XYDataSet();
  25. $count = count($listdate);
  26. for ($i = 0; $i < $count; $i++) {
  27.  $serie1->addPoint(new Point($listdate[$i], $listjeton[$i]));
  28.  }
  29. $serie2 = new XYDataSet();
  30. $count = count($listdate);
  31. for ($i = 0; $i < $count; $i++) {
  32.  $serie2->addPoint(new Point($listdate[$i], $listjetonacc[$i]));
  33.  }
  34. $dataSet = new XYSeriesDataSet();
  35. $dataSet->addSerie("Graphique 1", $serie1);
  36. $dataSet->addSerie("Graphique 2", $serie2);
  37. $chart->setDataSet($dataSet);
  38. $chart->setTitle("$user" );
  39. $chart->getPlot()->setGraphCaptionRatio(0.62);
  40. $chart->render();
  41. ?>
  42. </div>


 
J'ai aussi essayé de mettre cela dans ma page index:

Code :
  1. <?php
  2. if ($mois != "false" ) {
  3.        echo "<img src=\"include/affichage_month.php\" alt=\"Graph\" \/>";
  4.        }
  5. ?>


 
Et j'ai... Le mot "Graph" d'affiché, mais pas mon image :s
 
Le code <img src="include/affichage_month.php" alt="Graph" /> est quant à lui bien affiché dans le code source de la page.  
 
 
Voila, je ne sais vraiment plus où regarder pour trouver ce qui cloche, si vous avez une idée, je suis dessus depuis un moment et je ne vois pas mon erreur.
 
Merci beaucoup pour vos réponses.

Message cité 1 fois
Message édité par Tangrim le 01-03-2010 à 16:16:50

---------------
Des Bisous et des nounours ! | Internet 2025 | Dungeon-Generator
mood
Publicité
Posté le 01-03-2010 à 11:32:34  profilanswer
 

n°1970141
skeye
Posté le 01-03-2010 à 11:50:52  profilanswer
 

Tangrim a écrit :


Code :
  1. <?php
  2. if ($mois != "false" ) {
  3.        echo "<img src=\"include/affichage_month.php\" alt=\"Graph\" \/>";
  4.        }
  5. ?>


 
Et j'ai... Le mot "Graph" d'affiché, mais pas mon image :s
 
Le code <img src="include/affichage_month.php" alt="Graph" /> est quant à lui bien affiché dans le code source de la page.  


 
C'est normal, ton script affichage_month.php attend des variables dans $_POST, que tu ne fournis pas dans ce cas. D'où une erreur php, et un fichier image invalide.
Et la première option ne peut pas marcher non plus, tu fais un header() dans affichage_month.php alors que tu as déjà commencé à envoyer ta page.
La solution est amha celle quoté ci-dessus, mais en repassant les paramètres dans l'url ou la session.
 
...et attention à la sécurité là-dedans, je n'ai pas l'impression que tu vérifies grand chose de l'input utilisateur...
 


---------------
Can't buy what I want because it's free -
n°1970145
Tangrim
Des bisous et des nounours !
Posté le 01-03-2010 à 12:01:21  profilanswer
 

skeye a écrit :


 
C'est normal, ton script affichage_month.php attend des variables dans $_POST, que tu ne fournis pas dans ce cas. D'où une erreur php, et un fichier image invalide.
Et la première option ne peut pas marcher non plus, tu fais un header() dans affichage_month.php alors que tu as déjà commencé à envoyer ta page.
La solution est amha celle quoté ci-dessus, mais en repassant les paramètres dans l'url ou la session.
 
...et attention à la sécurité là-dedans, je n'ai pas l'impression que tu vérifies grand chose de l'input utilisateur...
 


Oh merci, je suis en train de chercher comment passer les paramètres dans l'url avec un formulaire, je ne sais le faire qu'avec un lien.
 
Pour la sécurité, la liste utilisateur est générée en prenant les utilisateurs dans la base de donnée.


---------------
Des Bisous et des nounours ! | Internet 2025 | Dungeon-Generator
n°1970171
Tangrim
Des bisous et des nounours !
Posté le 01-03-2010 à 13:18:55  profilanswer
 

Je viens d'essayer avec les variables de session (en commentant mon graphe et en faisant des echo pour bien vérifier qu'elles passent), et j'ai toujours la même erreur :(

 

Et en enlevant le header, j'ai un truc qui commence comme ça:
�PNG  ��� IHDR���������!J�z�� �IDATx���{xT���'!��L5A�)�b1hJ1" �� ���"�)���nL1�") �"@��h-�E�l�[TN� 9B��ٝ7�$�5ǵ�{}?W�^a2�<��f=?��I�<�����l�v����@�������w���@��;��� @B�o�?!�w�+��� k_Z���]�Ν>d�⒒S�l�����;'1�N��ש�9������ �[e�EK?��� ����`��'5L�3q�Z\:��a�{^�{�;���`E-?q���_��_^�c�?C\|����� z�Ϯ�=g�����PV����_6..�cǎǎ5j��?�����R* ���8_�?qOi�퇓�z��OHz���U0����7O�������9o޼W_}���  4h�֭�<����zꩤ��nݺխ[w۶mݺu�����dɒ��Ŀ��o�^{�i�*?ުU���{�~�СC埸 oڴ)111??��ݳf�JOOOLLܲe˿��׾l���@l��'N��o��1������a<����>7t��^��R�� �Ν�x<]tQyy�;Ss����G�i޼�#�<�� ���+�'������]�p!..����xzzzYY���ILL��ϟ?�…������ݻw&&&�3檫 �2����ÄW*

 


C'est l'image en mode texte ? Je dois me rapprocher :)

 


Ca c'est avec le include, et en mettant la balise image comme celle que tu as quottée, j'ai les mêmes symptôme, juste Graph écris, et dans le code source:
<img alt="Graph" src="include/affichage_month.php" >


Message édité par Tangrim le 01-03-2010 à 13:59:12

---------------
Des Bisous et des nounours ! | Internet 2025 | Dungeon-Generator
n°1970241
Tangrim
Des bisous et des nounours !
Posté le 01-03-2010 à 16:16:35  profilanswer
 

En enregistrant l'image ça fonctionne, même si ça ne me parait pas très "propre".
 
Merci pour ta réponse skeye.


---------------
Des Bisous et des nounours ! | Internet 2025 | Dungeon-Generator
n°1970254
David Bori​ng
Posté le 01-03-2010 à 16:39:04  profilanswer
 

Pour info (je sais que je suis dans la partie php et que personne ne fait attention au html, mais bon) employer une balise label sans attribut for est dénué de sens, sauf si le input (select dans ce cas) se trouve dans la balise label.
Et encore, cela merde avec IE, donc toujours indiquer un for="id input"

n°1970359
Tangrim
Des bisous et des nounours !
Posté le 01-03-2010 à 20:25:14  profilanswer
 

David Boring a écrit :

Pour info (je sais que je suis dans la partie php et que personne ne fait attention au html, mais bon) employer une balise label sans attribut for est dénué de sens, sauf si le input (select dans ce cas) se trouve dans la balise label.
Et encore, cela merde avec IE, donc toujours indiquer un for="id input"


Merci, je vais modifier ça.


---------------
Des Bisous et des nounours ! | Internet 2025 | Dungeon-Generator

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [php] Problème d'include et génération d'image (résolu)

 

Sujets relatifs
problème avec itérator c++[edit] probleme de submit
[RESOLU]Afficher le plus grand ID de plusieurs sous_idimage à partir d'un backbuffer de device direct3D
[resolu] 1 menu pour toutes les pages d'un site ...[BATCH] Problème de manipulation de variables avec NIRCMD
[Résolu] Liste déroulante php/sql n'affichant pas toutes les données.[Résolu] Jointure entre deux tables
[Résolu] Date Picker : récupérer la valeur Datebesoin d'un coup de main pour affichage foireux dans IE6
Plus de sujets relatifs à : [php] Problème d'include et génération d'image (résolu)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR