IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[PDF] Illegal double '2e761' value found during parsing


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut [PDF] Illegal double '2e761' value found during parsing
    Bonjour à tous,

    Dans le cadre de mon boulot, je développe une application en PHP permettant de générer des rapports personnalisés en tapant dans une base de données MYSQL.

    Concrètement, l'utilisateur va choisir les informations qu'il souhaite analyser et afficher dans le rapport et ensuite par le biais de requêtes SQL je vais chercher les infos. Je génère un fichier PDF en sortie grâce notamment à la libraire html2pdf. (transcription d'un script html en pdf)

    Il est possible de générer des rapports sur des valeurs en fonction du temps pour suivre l'évolution de la donnée. C'est sur cette génération de rapport que j'obtiens l'erreur
    "Illegal double '2e761' value found during parsing".
    Bizarrement cette erreur est apparue "toute seule", avant elle n'était pas présente. Elle n'empêche pas non plus l'exécution du script par contre je ne sais pas si elle génère des résultats erronés.

    Voici le bout code qui va générer des graphiques temporels sur les données choisies (transformer en image jpeg). J'ai parcouru plusieurs forums et internet mais je n'ai malheureusement rien trouvé concernant mon souci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
        <?php
     
        if (isset($_GET['d']) && isset($_GET['f'])){
     
        //entrées utilisateur, dates et informations filtrées spécifiques
        $debut = $_GET['d'];
        $fin = $_GET['f'];   
        $filtre = $_SESSION['filtre'];
        $_filtre = $_SESSION['_filtre']; 
     
     
        $indicateursL1 = $_SESSION['indicateursL1'];
     
        //création du graphique pour chaque données
        for ($i = 0 ; $i<20 ; $i++){
            if (!empty($indicateursL1[$i])){
     
            $keycrypt = sha1("labonnecléquivabien");                                  
            $sql_indic = mysql_query("SELECT AES_DECRYPT(".$indicateursL1[$i].",".$keycrypt.") FROM indicateurs_l1 WHERE $filtre = '".mysql_real_escape_string($_filtre)."' AND (date BETWEEN '".mysql_real_escape_string($debut)."' AND '".mysql_real_escape_string($fin)."') GROUP BY date")or die(mysql_error());
            $row_indic = mysql_num_rows($sql_indic);
     
     
                for ($compteur1=0 ; $compteur1<mysql_num_rows($sql_indic) ; $compteur1++)
                      {
                         if( ($tab_indic[$compteur1] = mysql_result($sql_indic , $compteur1 , $indicateursL1[$i]))== 0){
                            $tab_indic[$compteur1] == 0;
                          }else{
                          $tab_indic[$compteur1] = mysql_result($sql_indic , $compteur1 , $indicateursL1[$i])or die(mysql_error());
                          }                 
     
                          $graph = new Graph(1000,300);
                          $graph->img->SetMargin(40,30,50,40);
                          $graph->SetScale("textlin");
                          $graph->SetShadow();
                          $graph->title->Set("Evolution temporelle de l'indicateur entre : ".$debut." et ".$fin."");   
     
     
                          // Afficher la grille de l'axe des ordonnées
                          $graph->ygrid->Show();
                          // Fixer la couleur de l'axe (bleu avec transparence : @0.7)
                          $graph->ygrid->SetColor('blue@0.7');
                          // Des tirets pour les lignes
                          $graph->ygrid->SetLineStyle('dashed');
     
                          // Afficher la grille de l'axe des abscisses
                          $graph->xgrid->Show();
                          // Fixer la couleur de l'axe (rouge avec transparence : @0.7)
                          $graph->xgrid->SetColor('red@0.7');
                          // Des tirets pour les lignes
                          $graph->xgrid->SetLineStyle('dashed');
     
     
                          // Créer une courbes
                          $courbe = new LinePlot($tab_indic);
                          // Afficher les valeurs pour chaque point
                          $courbe->value->Show();
     
                          // Valeurs: Apparence de la police
                          $courbe->value->SetFont(FF_ARIAL,FS_NORMAL,9);
                          $courbe->value->SetFormat('%d');
                          $courbe->value->SetColor("red");
     
                          // Chaque point de la courbe ****
                          // Type de point
                          $courbe->mark->SetType(MARK_FILLEDCIRCLE);
                          // Couleur de remplissage
                          $courbe->mark->SetFillColor("green");
                          // Taille
                          $courbe->mark->SetWidth(5);
     
                          // Couleur de la courbe
                          $courbe->SetColor("blue");
                          $courbe->SetCenter();
     
                          // Paramétrage des axes
                          $graph->xaxis->title->Set("Date");
                          $graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD);
     
                          $sql_date = mysql_query("SELECT date FROM indicateurs_l1 WHERE $filtre = '".mysql_real_escape_string($_filtre)."' AND (date BETWEEN '".mysql_real_escape_string($debut)."' AND '".mysql_real_escape_string($fin)."') GROUP BY date");
     
                          for ($Compteur1=0 ; $Compteur1<mysql_num_rows($sql_date) ; $Compteur1++)
                              {
                                  $data1x[]=mysql_result($sql_date , $Compteur1 , "date");
                              }
     
                          $graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
                          $graph->xaxis->SetTickLabels($data1x);
     
                          // Ajouter la courbe au conteneur
                          $graph->Add($courbe);
                          $graph->SetImgFormat('jpeg',60);
     
                          $ind = $i + 1;
                          if (file_exists('./graph/temporel/indic_temp_L1_Ind'.$ind.'.jpeg'))
                            {
                               unlink('./graph/temporel/indic_temp_L1_Ind'.$ind.'.jpeg');
                            }
     
                          $graph->Stroke('./graph/temporel/indic_temp_L1_Ind'.$ind.'.jpeg');
     
                   }  
     
     
            }
      }
     
     
     
     
     }
     
     
    ?>

    Si vous avez déjà rencontré ce problème, si vous avez des éléments de solutions n'hésiter pas. Il se peut sûrement qu'une erreur dans le code ait généré ce
    "Illegal double '2e761' value found during parsing".
    Merci de votre aide par avance.

    Cordialement,

    Flogo

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    De quel type d'erreur s'agit-il ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Ben double est un type de variable primitif codé sur 8 octets il me semble (comme l'est float, integer en terme de variables primitives pas codés sur 8 octets ). La référence 2e761 de l'erreur je ne la trouve pas. Concrètement, le moteur ne doit pas arriver à parser à cause d'un type de variable non adapté. Cependant, je trouve cela étrange que cette erreur se soit révélée après plusieurs tests sur le script.
    Je pense qu'elle a pu apparaitre dès lors que j'ai chiffré les données de la base avec des AES_ENCRYPT et AES_DECRYPT ce qui fait que la valeur récupérée dans la base est vue comme "farfelue" pour le moteur. C'est une des pistes que je regarde actuellement entre autres.

    Cordialement,

    Flogo

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je demandais si c'etait une erreur PHP, un plantage apache, une erreur fournie par HTML2PDF ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    C'est clairement pas une erreur HTML2PDF déjà, la transformation n'intervient pas à ce niveau.
    C'est une erreur liée à PHP.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non mais c'est une erreur affichée par PHP ou par autre chose ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Humm, l'erreur apparaît après avoir cliqué sur un bouton "OK" quand l'utilisateur choisi les dates de début et de fin pour la génération du graphique.

    Le choix des dates se fait via un calendar en javascript. Vous m'avez fait penser que peut être l'erreur proviendrait de ce calendar en javascript lors de la validation des dates ...

    Pour informations dans le même fichier .php cité précédemment se trouve aussi ce bout de code au début :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     
    <script type="text/javascript">//<![CDATA[
    Calendar.setup({
        cont          : "calendar-container",
        weekNumbers   : true,
        selectionType : Calendar.SEL_MULTIPLE,
        selection     : Calendar.dateToInt(new Date()),
        showTime      : 12,
        onSelect      : function() {
            var count = this.selection.countDays();
            if (count == 1) {
                var date = this.selection.get()[0];
                date = Calendar.intToDate(date);
                date = Calendar.printDate(date, "%A, %B %d, %Y");
                $("calendar-info").innerHTML = date;
            } else {
                $("calendar-info").innerHTML = Calendar.formatString(
                    "${count:no date|one date|two dates|# dates} selected",
                    { count: count }
                );
            }
        },
        onTimeChange  : function(cal) {
            var h = cal.getHours(), m = cal.getMinutes();
            // zero-pad them
            if (h < 10) h = "0" + h;
            if (m < 10) m = "0" + m;
            $("calendar-info").innerHTML = Calendar.formatString("Time changed to ${hh}:${mm}", {
                hh: h,
                mm: m
            });
        }
    });
     
    //]]></script>
     
    <table style="float: left; margin: 0 1em 1em 0"><tr><td>
     
      <!-- element that will contain the calendar -->
      <div id="calendar-container">
                <tr>
                  <td class="label">
                    <label for="f_rangeStart">Debut&nbsp;:&nbsp;</label>
                  </td>
                  <td>
                    <!--<form method="POST">-->
                    <input id="f_rangeStart" name="f_rangeStart" value="2010-02-01"/>
                    <!--<input type="submit" value="valider" /> -->
                    <!--</form> </td><td>-->
                    <button id="f_rangeStart_trigger">...</button>
                    <button id="f_clearRangeStart" onclick="clearRangeStart()">effacer</button>
                    <script type="text/javascript">
                      new Calendar({
                              inputField: "f_rangeStart",
                              dateFormat: "%Y-%m-%d",
                              trigger: "f_rangeStart_trigger",
                              bottomBar: true,
                              onSelect: function() {
                                      var date = Calendar.intToDate(this.selection.get());
                                      LEFT_CAL.args.min = date;
                                      LEFT_CAL.redraw();
                                      this.hide();
                              }
                      });
                      function clearRangeStart() {
                              document.getElementById("f_rangeStart").value = "";
                              LEFT_CAL.args.min = null;
                              LEFT_CAL.redraw();
                      };
                    </script>
     
                  </td>
                </tr>
     
     
     
                 <tr>
                  <td class="label">
                    <label for="f_rangeEnd">Fin&nbsp;:&nbsp;</label>
                  </td>
                  <td>
                    <!--<form method="POST">-->
                    <input id="f_rangeEnd" name="f_rangeEnd" value=""/>
                    <!--<input type="submit" value="valider" /> -->
                    <!--</form> </td><td>-->
                    <button id="f_rangeEnd_trigger">...</button>
                    <button id="f_clearRangeEnd" onclick="clearRangeEnd()">effacer</button>
                    <script type="text/javascript">
                      new Calendar({
                              inputField: "f_rangeEnd",
                              dateFormat: "%Y-%m-%d",
                              trigger: "f_rangeEnd_trigger",
                              bottomBar: true,
                              onSelect: function() {
                                      var date = Calendar.intToDate(this.selection.get());
                                      LEFT_CAL.args.min = date;
                                      LEFT_CAL.redraw();
                                      this.hide();
                              }
                      });
                      function clearRangeEnd() {
                              document.getElementById("f_rangeEnd").value = "";
                              LEFT_CAL.args.min = null;
                              LEFT_CAL.redraw();
                      };
                    </script>
     
                  </td>
                </tr>
     
                <tr>
                <td>
                  <script type="text/javascript">
                function readDate(){
                  var fin = document.getElementById("f_rangeEnd");
                  var debut = document.getElementById("f_rangeStart");
                  top.document.location = "index.php?page=lapagequivabien&d="+debut.value+"&f="+fin.value;            
               }     
                </script>
                <input type="button" onclick="readDate()" value="OK">  
                </td>
                </tr>
     
              </div>

    Ce qui me met la puce à l'oreille c'est que devant le message d'erreur je ne vois pas de "notice", "warning" ou tout autre attribut d'affichage d'erreurs communes en PHP avec le numéro de la ligne. Généralement quand j'ai une erreur PHP, on obtient un truc du genre :
    Notice: Undefined offset on ligne xx.
    Dans ce cas, il y a seulement marqué à coté du bouton "OK" de validation
    "Illegal double '2e761' value found during parsing"
    pas de numéro de lignes non plus.

    Alala, je commence à m'embrouiller l'esprit avec toutes ces probables sources d'erreur. =)

    Cordialement,

    Flogo


    PS: le code js du calendar est un code disponible à tout utilisateur. Cela s'appelle jsCal2.

    [Edit] Un screen shot de l'apparition de l'erreur sur le GUI est disponible en pièce jointe.

    En fait, si vous voulez le fichier php complet où l'erreur se génère, veuillez me le demander par mp, je ne voudrais pas le diffuser entièrement comme ca directement sur le forum .
    Images attachées Images attachées  

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Après quelques tests, il s'avère que l'erreur proviendrait de la récupération des données chiffrées en base via la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql_indic = mysql_query("SELECT AES_DECRYPT(".$indicateursL1[$i].",".$keycrypt.") FROM indicateurs_l1 WHERE $filtre = '".mysql_real_escape_string($_filtre)."' AND (date BETWEEN '".mysql_real_escape_string($debut)."' AND '".mysql_real_escape_string($fin)."') GROUP BY date")or die(mysql_error());
    En effet, en testant sans AES_DECRYPT sur des données en claires, l'erreur n'apparait pas.
    A voir si cela n'est que temporaire mais c'est une piste à explorer.

    Cordialement,

    Flogo

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2010, 02h17
  2. PDF en double exemplaire?
    Par Michelk12 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 05/12/2008, 13h49
  3. Réponses: 3
    Dernier message: 05/04/2007, 10h05
  4. [Manipulations CSS] Error in parsing value for property 'top'
    Par ARRG dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 02/09/2006, 14h56
  5. Réponses: 8
    Dernier message: 11/05/2006, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo