Erreur PhpMyAdmin

Rechercher

Erreur PhpMyAdmin

Par paintbox  -  37 reponses  -  Le 08/05/2011 17:38  -  Editer  - 

Hello Cyrano,

le projet sur lequel je travaille esr hébergé chez OVH. Je suis toujours avec mes tracé de graphiques.

Je rencontre le problème suivant. PhpMyAdmin me renvoie le message d'erreur suivant:

 

Fatal error: require() [function.require]: Failed opening required './' (include_path='.:/usr/local/lib/php') in /home/phpMyAdmin-3.3.8.1-all-languages/sql.php on line 318

C'est étrange parce que

  • ce même script fonctionne parfaitement en local
  • ce sript est quasi identique à un autre qui fonctionne (juste une différence de date)

J'ai été voir le fichier sql.php en ligne 318. Mais je ne comprend pas trop et n'ose pas y toucher.

La ligne en question est la suivante :

require './' . PMA_securePath($goto);

 

Aurais-tu une idée , une piste ?

Merci

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 08/05/2011 19:54  -  Haut de page  - 

Salut Paintbox,

effectivement c'est bizarre, mais il est possible que le path système ne pointe pas vers le bon répertoire. Si tu peux accéder au fichiers, j'en déduis que tu as instalé ton propre phpMyAdmin : il n'est pas inclus dans ton interface client ?

Enfin bon à priori l'erreur tendrait à indiquer que la variable $goto n'est pas initialisée. As-tu bien configuré l'accès à ta base en créant unfichier config.inc.php ?

Et sinon effectivement il vaut mieux éviter de modifier le code original de phpMyAdmin, tu risques de le rendre définitivement inopérant.

 
Par Cyrano  -  Le 08/05/2011 20:04  -  Haut de page  - 

Tien, ça pourrait être utile, je viens de toruver ça : http://guide.ovh.com/InstallPhpMyAdmin

 
Par Cyrano  -  Le 08/05/2011 20:12  -  Haut de page  - 

Accessoirement il y a aussi ça, encore mieux parce que tu n'abesoin de rien installer du tout : https://phpmyadmin.ovh.net/

 
Par paintbox  -  Le 09/05/2011 10:40  -  Haut de page  - 

Hello Cyrano,

merci pour ton aide.

Oui effectivement chez OVH j'ai du installer mon propre phpMyAdmin (celui qu'ils conseillent), j'ai suivi les recommandation du lien que tu m'a donné.

En fait, ton mon site tourne correctement, j'accède à ma base correctement.

Comme je te l'ai dit, je suis sur la partie statistiques. J'ai repris le script (statistiques annuelles) pour lequel je t'avais demandé ton aide lors du précédent post. Je l'ai donc adapté pour des statistiques mensuelles. En fait il m'affiche mes données correctement pour les toutes les catégories confondues. J'affiche également sur ce graph là la quantité total par catégorie. Puis j'ai un second graph où l'on peut choisir pour un mois précis la catégorie que l'on souhaite analyser. Et c'est là que j'ai mon soucis.

Il ne m'indique qu'une seule référence (la dernière) et le total affiché ne correspond pas à celui affiché pour toutes les catégories confondues.

C'est en fait suite à ce problème que j'ai essayé d'affiche le résultat de mes requêtes directement dans PhpMyAdmin et c'est à ce moment là que j'ai eu ce message d'erreur.

Je crois que le plus simple est de te montrer mon code :

Voici le code pour toutes les catégories confondues pour un mois précis

<?php// On démarre la sessionsession_start(); // Connexioninclude('../connex.inc.php');$idcom=connex('lampeslejsea11', 'myparam');mysql_query("SET NAMES utf8"); /*TRES IMPORTANT -> permet d'éviter les problèmes d'affichage d'accents*/ /**Page qui affiche l evolution des categories selon le mois choisit */ /* => Appel de functions  <= */include('_functions/_fr/function.inc.php');include('_functions/_fr/function.panier.inc.php');   include('_functions/_fr/function.office.inc.php'); // On recupere la date choisieif (isset($_SESSION['SelectedMonth']) AND (isset($_SESSION['SelectedYear']))){    $SelectedMonth = $_SESSION['SelectedMonth'];    $SelectedYear  = $_SESSION['SelectedYear'];}else{    $SelectedMonth = date('m');    $SelectedYear  = date('Y');}/* => On Calcul de total general pour etablir le pourcentage <= */$sql_total="SELECT SUM(dtc_quantite) AS total_general            FROM v_stat_commande            WHERE MONTH(dtc_date) ='".$SelectedMonth."'            AND YEAR(dtc_date) ='".$SelectedYear."' ";$total_general=mysql_query($sql_total) or die (mysql_error());$total_general=mysql_fetch_assoc($total_general); /* => Requete categories sur 1 mois <= */$sql2 = "SELECT SUM(dtc_quantite) AS total, ".        "dtc_led_categorie, ".        "dtc_date ".        "FROM v_stat_commande ".        "WHERE MONTH(dtc_date) ='".$SelectedMonth."' ".        "AND YEAR(dtc_date) ='".$SelectedYear."' ".        "GROUP BY dtc_led_categorie";$sql_stat = mysql_query($sql2) or die(mysql_error());$aStats = array();// On place les donnees recuperees de la requete dans un tableauwhile(false !== ($s = mysql_fetch_assoc($sql_stat))){    $aStats[] = $s;}$nbstats = count($aStats); // Calcul nombre de resultats obtenus // Création de l image avec dimensions donnees (largeur/hauteur)$largeurImage   = 600;$hauteurImage   = 400;$im             = ImageCreate ($largeurImage, $hauteurImage) or die ("Erreur lors de la création de l'image"); // Definition des couleurs qui seront utilisees$couleur_fond   = ImageColorAllocate ($im, 230, 230, 230);$noir           = ImageColorAllocate ($im, 0, 0, 0);$vert           = ImageColorAllocate ($im, 13, 151, 23);$coul_legendes  = ImageColorAllocate ($im, 11, 62, 43);$blanc          = ImageColorAllocate ($im, 255, 255, 255);// Couleur des barres du graphique   $coul_barre1  = ImageColorAllocate ($im, 42, 124, 94);    $coul_barre2  = ImageColorAllocate ($im, 0, 90, 94);   $coul_barre3  = ImageColorAllocate ($im, 0, 38, 131);  $coul_barre4  = ImageColorAllocate ($im, 100, 38, 131);   $coul_barre5  = ImageColorAllocate ($im, 165, 38, 131);  $coul_barre6  = ImageColorAllocate ($im, 165, 38, 131);  $coul_barre7  = ImageColorAllocate ($im, 165, 38, 131);  $coul_barre8  = ImageColorAllocate ($im, 165, 38, 131);  $coul_barre9  = ImageColorAllocate ($im, 100, 38, 131);   $coul_barre10 = ImageColorAllocate ($im, 100, 38, 131);    //Traçage de l'image de fondImageLine ($im, 50, 50, 50, $hauteurImage-30, $noir);                   //Axe VerticalImageLine ($im, 50, $hauteurImage-30, $largeurImage-40, $hauteurImage-30, $noir);        // Axe horizontalfor ($g = 10; $g <= 100; $g += 10){    Imagettftext($im, 10, 0,15,($hauteurImage-25)-($g*3),$coul_legendes,"arial.ttf",$g);     // Graduation verticale    ImageLine($im, 50, ($hauteurImage-30)-($g*3), 560, ($hauteurImage-30)-($g*3), $blanc);  // Lignes blanches    ImageLine($im, 45, ($hauteurImage-30)-($g*3), 50, ($hauteurImage-30)-($g*3), $noir);    // Traits graduation verticale} // Traçage des Bâtons et de leur valeurs$h      = 1;            // Décalage vertical$l      = 20;           // Décalage horizontal$mois   = 1;$font   = "arial.ttf";foreach($aStats as $s => $stat){    $resultat= round(($aStats[$s]['total']/$total_general['total_general'])*100, 0); // Calcul du Pourcentage     // On déclare les variables de position pour les batons    $im_rect_x1 = $l + 60;                           // En x1 la valeur est fixe    $im_rect_y1 = (($hauteurImage - 30) - ( ((int)($aStats[$s]['total'])/$total_general['total_general'])*100 )* 3); // En y1 la valeur depend de la BD    $im_rect_x2 = $l + 80;                          // En x2 la valeur est fixe        $im_rect_y2 = $hauteurImage - 30;                    // En y2 la valeur est fixe     // On déclare les variables de position pour le texte    $im_txt1_x   = $l + 60;    $im_txt1_y   = 200;    $im_txt2_x   = ($mois * 40) + 38;    $im_txt2_y   = $hauteurImage - 30;  $coul_barre  = ${'coul_barre'.$mois};    ImageFilledRectangle($im, $im_rect_x1, $im_rect_y1, $im_rect_x2, $im_rect_y2, $coul_barre);     // Commentaires    Imagettftext($im, 10,  0, $im_txt1_x, $im_txt2_y+20, $coul_legendes, $font, $resultat.'%');    Imagettftext($im, 9, 90, $im_txt2_x, $im_rect_y2, $coul_legendes, $font, $aStats[$s]['dtc_led_categorie'].' = '.$aStats[$s]['total'].' pcs');    $h++;    $l += 40;    $mois++;}    Imagettftext($im, 10, 0, 50, 30, $coul_legendes, $font,'Total des ventes :'.$total_general['total_general'].' pcs'); // Affichage de l imageheader ("Content-type: image/png");ImagePng ($im); ?>

 

Et voici le code pour une catégorie choisie pour le mois précédemment sélectionné :

<?phpsession_start(); include('../connex.inc.php');$idcom=connex('lampeslejsea11', 'myparam');mysql_query("SET NAMES utf8"); /*TRES IMPORTANT -> permet d'éviter les problèmes d'affichage d'accents*/ /* => Appel de functions  <= */include('_functions/_fr/function.inc.php');include('_functions/_fr/function.panier.inc.php');   include('_functions/_fr/function.office.inc.php'); /** On recupere les informations : categorie et mois chosis*/$categorie = $_SESSION['stat']['categorie'];if (isset($_SESSION['SelectedMonth'])){    $SelectedMonth = $_SESSION['SelectedMonth'];    $SelectedYear  = $_SESSION['SelectedYear'];}else{    $SelectedMonth = date('m');    $SelectedYear  = date('Y');}// Calcul du total des ventes pour la categorie selectionnnee$sql_total_categorie = "SELECT SUM(dtc_quantite) AS total_categorie,".                       " dtc_date,".                       " dtc_code_categorie".                       " FROM v_stat_commande".                       " WHERE dtc_code_categorie='".$categorie."' ".                       " AND MONTH(dtc_date) ='".$SelectedMonth."' ".                       " AND YEAR(dtc_date) ='".$SelectedYear."'".                       " GROUP BY dtc_date";           $total_categorie = mysql_query($sql_total_categorie) or die (mysql_error());$total_categorie = mysql_fetch_assoc($total_categorie); // Requete categories sur 1 an$sql2 = "SELECT SUM(dtc_quantite) AS total,".        " dtc_led_categorie,".        " dtc_date,".        " dtc_code_categorie, ".        " dtc_led_reference".        " FROM v_stat_commande".        " WHERE dtc_code_categorie='".$categorie."' ".        " AND MONTH(dtc_date) ='".$SelectedMonth."' ".        " AND YEAR(dtc_date) ='".$SelectedYear."'".          " GROUP BY dtc_led_reference";$sql_stat = mysql_query($sql2) or die(mysql_error());$aStats = array();// On place les donnees recuperees de la requete dans un tableauwhile(false !== ($s = mysql_fetch_assoc($sql_stat))){    $aStats[] = $s;}$nbstats = count($aStats); // Calcul nombre de resultats obtenus // Création de l image avec dimensions donnees (largeur/hauteur)$largeurImage   = 600;$hauteurImage   = 400;$im2             = ImageCreate ($largeurImage, $hauteurImage) or die ("Erreur lors de la création de l'image"); // On defini les couleurs qui seront utilisees$couleur_fond   = ImageColorAllocate ($im2, 230, 230, 230);$noir           = ImageColorAllocate ($im2, 0, 0, 0);$vert           = ImageColorAllocate ($im2, 13, 151, 23);$coul_legendes  = ImageColorAllocate ($im2, 11, 62, 43);$blanc          = ImageColorAllocate ($im2, 255, 255, 255);// Couleur des barres du graphique   $coul_barre1  = ImageColorAllocate ($im2, 42, 124, 94);    $coul_barre2  = ImageColorAllocate ($im2, 0, 90, 94);   $coul_barre3  = ImageColorAllocate ($im2, 0, 38, 131);  $coul_barre4  = ImageColorAllocate ($im2, 100, 38, 131);   $coul_barre5  = ImageColorAllocate ($im2, 165, 38, 131);  $coul_barre6  = ImageColorAllocate ($im2, 165, 38, 131);  $coul_barre7  = ImageColorAllocate ($im2, 165, 38, 131);  $coul_barre8  = ImageColorAllocate ($im2, 165, 38, 131);  $coul_barre9  = ImageColorAllocate ($im2, 100, 38, 131);   $coul_barre10 = ImageColorAllocate ($im2, 100, 38, 131);   /** * Traçage de l'image de fond */ImageLine ($im2, 50, 50, 50, $hauteurImage-30, $noir);                   //Axe VerticalImageLine ($im2, 50, $hauteurImage-30, $largeurImage-40, $hauteurImage-30, $noir);        // Axe horizontalfor ($g = 10; $g <= 100; $g += 10){    Imagettftext($im2, 10, 0,15,($hauteurImage-25)-($g*3),$coul_legendes,"arial.ttf",$g);     // Graduation verticale    ImageLine($im2, 50, ($hauteurImage-30)-($g*3), 560, ($hauteurImage-30)-($g*3), $blanc);  // Lignes blanches    ImageLine($im2, 45, ($hauteurImage-30)-($g*3), 50, ($hauteurImage-30)-($g*3), $noir);    // Traits graduation verticale}// Calcul du total de pieces vendues pour 1 categorieif (!empty($total_categorie['total_categorie'])){    $total_vendu = $total_categorie['total_categorie'];}else{    $total_vendu = 0;} // Traçage des Bâtons et de leur valeurs$h      = 1;            // Décalage vertical$l      = 20;           // Décalage horizontal$mois   = 1;$font   = "arial.ttf";foreach($aStats as $s => $stat){    // On déclare les variables de position pour les batons    $im2_rect_x1 = $l + 60;                           // En x1 la valeur est fixe    $im2_rect_y1 = (($hauteurImage - 30) - ((int)$aStats[$s]['total']) * 3); // En y1 la valeur depend de la BD    $im2_rect_x2 = $l + 80;                          // En x2 la valeur est fixe        $im2_rect_y2 = $hauteurImage - 30;                    // En y2 la valeur est fixe     // On déclare les variables de position pour le texte    $im2_txt1_x   = $l + 60;    $im2_txt1_y   = 200;    $im2_txt2_x   = ($mois * 40) + 38;    $im2_txt2_y   = $hauteurImage - 30;  $coul_barre  = ${'coul_barre'.$mois};     ImageFilledRectangle($im2, $im2_rect_x1, $im2_rect_y1, $im2_rect_x2, $im2_rect_y2, $coul_barre);     // Commentaires    Imagettftext($im2, 10,  0, $im2_txt1_x, $im2_txt2_y+20, $coul_legendes, $font, $aStats[$s]['total'].'%');    Imagettftext($im2, 9, 90, $im2_txt2_x, $im2_rect_y2, $coul_legendes, $font, $aStats[$s]['dtc_led_reference'].' = '.$aStats[$s]['total'].' pcs');    $h++;    $l += 40;    $mois++;}    Imagettftext($im2, 9, 0, 50, 30, $coul_legendes, $font, 'Total mensuel vendu : '.$total_vendu.' pcs'); /** * header déplacé pour permettre un débogage en amont. */header ("Content-type: image/png");ImagePng ($im2); ?>

 

Vois-tu une erreur ou as-tu une explication au fait qu'il ne m'affiche qu' une référence et en plus la dernière?

Merci

 
Par Cyrano  -  Le 09/05/2011 11:02  -  Haut de page  - 

Salut,

le premier problème est que tu aurais soulevé un bug dansphpMyAdmin avec une requête particulière, c'est assez inattendu.

Pour ton code maintenant, je relève ceci :

//...
    $total_categorie = mysql_query($sql_total_categorie) or die (mysql_error());
    $total_categorie = mysql_fetch_assoc($total_categorie);
//...

tu utilises la mêmevariable que tu ré-initialise en la transformant... pas terrible ça. Théoriquement ça marche mais je me suis toujours méfié de ce type de méthode de programmation. Donc j'aurais tendance à corriger comme ceci :

//...
    $exec = mysql_query($sql_total_categorie) or die (mysql_error());
    $total_categorie = mysql_fetch_assoc($exec);
//...

Tu as le même truc dans les deux codes montrés plus haut.

Un autre point rapidement, tu as écrit ceci :

//..
if (isset($_SESSION['SelectedMonth']))
{
    $SelectedMonth = $_SESSION['SelectedMonth'];
    $SelectedYear  = $_SESSION['SelectedYear'];
}
else
{
    $SelectedMonth = date('m');
    $SelectedYear  = date('Y');
}
//.

Que va-t-il se passer si $_SESSION['SelectedYear'] n'est pas définie ?

Suggestion de remplacement :

//...
$SelectedMonth = (isset($_SESSION['SelectedMonth'])) ? $_SESSION['SelectedMonth'] : date('m');
$SelectedYear  = (isset($_SESSION['SelectedYear']))  ? $_SESSION['SelectedYear']  : date('Y');

Vérifie déjà si à partir de là tu as toujours exactement la même requête générée que celle que tu as testée dans phpMyAdmin qui a généré une erreur. Au besoin, affiche-moi ici la requête générée.

 

 

 

 
Par paintbox  -  Le 09/05/2011 11:17  -  Haut de page  - 

Qu'entends tu par la requete générée? Ma page HTML dans mon navigateur ?

 
Par fred1975  -  Le 09/05/2011 19:27  -  Haut de page  - 

bonsoir,

premiere fois dans un forum.

Je suis moi aussi chez OVH et j'essaye d'installer sur mon site les provinces espagnoles pour les livraison.

j'ai telecharger un fichier et le message d'erreur est le suivant:

Fatal error: require() [function.require]: Failed opening required './' (include_path='.:/usr/local/lib/php') in /home/phpMyAdmin-3.3.8.1-all-languages/sql.php on line 318

j'ai tapé ça dans google et j'ai atterri dans votre discusion, aurier vous une idée svp?si je suis hors sujet pardonner moi.

merci

 
Par Cyrano  -  Le 09/05/2011 21:08  -  Haut de page  - 

@Paintbox : ça veut dire que tu fais un var_dump de la requête SQL de façon à afficher ce qui est réellement envoyé à MySQL.

@fred1975 : Salut Fred, tu aurais du ouvrir un nouveau sujet. Pas grave mais penses-y la prochaine fois. Mais on dirait que le problème est identique.

Je n'ai pas vérifié un détail mais peut-être aurez-vous l'un comme l'autre soulevé un bug de phpMyAdmin. Question à deux francs : pouvez-vous vérifier la version de phpMyAdmin que vous avez mis sur OVH et vérifier la version de PHP par la même occasion, ça sent l'erreur de version trop récente de phpMyAdmin pour une version pas trop à jour de PHP...

Et en question subsidiaire, avez-vos testé, l'un comme l'autre, le phpMyAdmin mis à disposition par OVH (Lien dans une de mes réponses précédentes) ? Le cas échéant, obtenez-vous la même erreur ?

 
Par paintbox  -  Le 10/05/2011 11:12  -  Haut de page  - 

Bonjour Cyrano et Fred1975,

lorsque je fais un var_dump, il y a visiblement une erreur parce que mon image n'apparaît pas et la requête générée n'apparait pas.

La version de PHPMyAdmin que j'ai installé est celle conseillée par OVH qui est 3.3.10

 
Par Cyrano  -  Le 10/05/2011 11:20  -  Haut de page  - 

Pour mettre ton var_dump, mets ça comme ceci :

echo("<pre>\n");
var_dump($sql);
echo("</pre>\n");die();

Le die() est fait exprès, c'est juste pour voir la requête générée, après ça tu mets le bloc en commentaires quand tu n'en s plus besoin.

Et tu n'as pas répondu à la dernière question : as-tu testé le phpMyAdmin fourni par OVH ?

 
Par paintbox  -  Le 10/05/2011 11:44  -  Haut de page  - 

Pour la dernière question, oui oui j'ai installé le PhpMyAdmin fourni par OVH sa version est 3.3.10

Pour le var_dump, c'est ce que j'avais fait. Mais rien ne s'affiche pas même mon graph. Voici mon code

<?phpsession_start(); include('../connex.inc.php');$idcom=connex('lampeslejsea11', 'myparam');mysql_query("SET NAMES utf8"); /*TRES IMPORTANT -> permet d'éviter les problèmes d'affichage d'accents*/ /* => Appel de functions  <= */include('_functions/_fr/function.inc.php');include('_functions/_fr/function.panier.inc.php');   include('_functions/_fr/function.office.inc.php'); /** On recupere les informations : categorie et mois chosis*/$categorie = $_SESSION['stat']['categorie']; $SelectedMonth = (isset($_SESSION['SelectedMonth'])) ? $_SESSION['SelectedMonth'] : date('m');$SelectedYear  = (isset($_SESSION['SelectedYear']))  ? $_SESSION['SelectedYear']  : date('Y'); // Calcul du total des ventes pour la categorie selectionnnee$sql_total_categorie = "SELECT SUM(dtc_quantite) AS total_categorie,".                       " dtc_date,".                       " dtc_code_categorie".                       " FROM v_stat_commande".                       " WHERE dtc_code_categorie='".$categorie."' ".                       " AND MONTH(dtc_date) ='".$SelectedMonth."' ".                       " AND YEAR(dtc_date) ='".$SelectedYear."'".                       " GROUP BY dtc_date";           $exec = mysql_query($sql_total_categorie) or die (mysql_error());$total_categorie = mysql_fetch_assoc($exec); echo("<pre>Total_categorie :\n");var_dump($total_categorie);echo("</pre>\n"); // Requete categories sur 1 an$sql2 = "SELECT SUM(dtc_quantite) AS total,".        " dtc_led_categorie,".        " dtc_date,".        " dtc_code_categorie, ".        " dtc_led_reference".        " FROM v_stat_commande".        " WHERE dtc_code_categorie='".$categorie."' ".        " AND MONTH(dtc_date) ='".$SelectedMonth."' ".        " AND YEAR(dtc_date) ='".$SelectedYear."'".          " GROUP BY dtc_led_reference";$sql_stat = mysql_query($sql2) or die(mysql_error());$aStats = array();// On place les donnees recuperees de la requete dans un tableauwhile(false !== ($s = mysql_fetch_assoc($sql_stat))){    $aStats[] = $s;}$nbstats = count($aStats); // Calcul nombre de resultats obtenus  echo("<pre>Categorie mois :\n");var_dump($aStats);echo("</pre>\n");die();  // Création de l image avec dimensions donnees (largeur/hauteur)$largeurImage   = 600;$hauteurImage   = 400;$im2            = ImageCreate ($largeurImage, $hauteurImage) or die ("Erreur lors de la création de l'image"); // On defini les couleurs qui seront utilisees$couleur_fond   = ImageColorAllocate ($im2, 230, 230, 230);$noir           = ImageColorAllocate ($im2, 0, 0, 0);$vert           = ImageColorAllocate ($im2, 13, 151, 23);$coul_legendes  = ImageColorAllocate ($im2, 11, 62, 43);$blanc          = ImageColorAllocate ($im2, 255, 255, 255);// Couleur des barres du graphique   $coul_barre1  = ImageColorAllocate ($im2, 42, 124, 94);    $coul_barre2  = ImageColorAllocate ($im2, 0, 90, 94);   $coul_barre3  = ImageColorAllocate ($im2, 0, 38, 131);  $coul_barre4  = ImageColorAllocate ($im2, 100, 38, 131);   $coul_barre5  = ImageColorAllocate ($im2, 165, 38, 131);  $coul_barre6  = ImageColorAllocate ($im2, 165, 38, 131);  $coul_barre7  = ImageColorAllocate ($im2, 165, 38, 131);  $coul_barre8  = ImageColorAllocate ($im2, 165, 38, 131);  $coul_barre9  = ImageColorAllocate ($im2, 100, 38, 131);   $coul_barre10 = ImageColorAllocate ($im2, 100, 38, 131);   /** * Traçage de l'image de fond */ImageLine ($im2, 50, 50, 50, $hauteurImage-30, $noir);                   //Axe VerticalImageLine ($im2, 50, $hauteurImage-30, $largeurImage-40, $hauteurImage-30, $noir);        // Axe horizontalfor ($g = 10; $g <= 100; $g += 10){    Imagettftext($im2, 10, 0,15,($hauteurImage-25)-($g*3),$coul_legendes,"arial.ttf",$g);     // Graduation verticale    ImageLine($im2, 50, ($hauteurImage-30)-($g*3), 560, ($hauteurImage-30)-($g*3), $blanc);  // Lignes blanches    ImageLine($im2, 45, ($hauteurImage-30)-($g*3), 50, ($hauteurImage-30)-($g*3), $noir);    // Traits graduation verticale}// Calcul du total de pieces vendues pour 1 categorieif (!empty($total_categorie['total_categorie'])){    $total_vendu = $total_categorie['total_categorie'];}else{    $total_vendu = 0;} // Traçage des Bâtons et de leur valeurs$h      = 1;            // Décalage vertical$l      = 20;           // Décalage horizontal$mois   = 1;$font   = "arial.ttf";foreach($aStats as $s => $stat){    // On déclare les variables de position pour les batons    $im2_rect_x1 = $l + 60;                           // En x1 la valeur est fixe    $im2_rect_y1 = (($hauteurImage - 30) - ((int)$aStats[$s]['total']) * 3); // En y1 la valeur depend de la BD    $im2_rect_x2 = $l + 80;                          // En x2 la valeur est fixe        $im2_rect_y2 = $hauteurImage - 30;                    // En y2 la valeur est fixe     // On déclare les variables de position pour le texte    $im2_txt1_x   = $l + 60;    $im2_txt1_y   = 200;    $im2_txt2_x   = ($mois * 40) + 38;    $im2_txt2_y   = $hauteurImage - 30;  $coul_barre  = ${'coul_barre'.$mois};     ImageFilledRectangle($im2, $im2_rect_x1, $im2_rect_y1, $im2_rect_x2, $im2_rect_y2, $coul_barre);     // Commentaires    Imagettftext($im2, 10,  0, $im2_txt1_x, $im2_txt2_y+20, $coul_legendes, $font, $aStats[$s]['total'].'%');    Imagettftext($im2, 9, 90, $im2_txt2_x, $im2_rect_y2, $coul_legendes, $font, $aStats[$s]['dtc_led_reference'].' = '.$aStats[$s]['total'].' pcs');    $h++;    $l += 40;    $mois++;}    Imagettftext($im2, 9, 0, 50, 30, $coul_legendes, $font, 'Total mensuel vendu : '.$total_vendu.' pcs'); /** * header déplacé pour permettre un débogage en amont. */header ("Content-type: image/png");ImagePng ($im2); ?>

 

 
Par Cyrano  -  Le 10/05/2011 11:49  -  Haut de page  - 

Tu n'as donc pas tout lu et pas compris ma question : j'avais écrit : «* Accessoirement il y a aussi ça, encore mieux parce que tu n'abesoin de rien installer du tout : https://phpmyadmin.ovh.net/ * »

Ensuite pour le var_dump, je t'ai indiqué d'ajouter un die() pour stopper l'exécution imméditatement après affichage de la requête, sinon la construction de l'image continue et tout plante à cause du var_dump et rien ne s'affiche.

 
Par paintbox  -  Le 10/05/2011 12:04  -  Haut de page  - 

Désolé, je crois que je ne saisi pas ce que tu souhaites.

Est-ce que tu veux que je lance ma requête directement dans PHPMyAdmin via le lien que tu m'as donné (*https://phpmyadmin.ovh.net/) ? *Suivi du var_dump? (Je crois que je sors une grosse bêtise là)

Ce que moi j'ai fait c'est directement intégrer le var_dump sur ma page en ligne.

 
Par Cyrano  -  Le 10/05/2011 12:25  -  Haut de page  - 

Ça commence à ressembler à un dialogue de sourds notre affaire.

Reprennons : tu as écrit au départ « *Je rencontre le problème suivant. PhpMyAdmin me renvoie le message d'erreur suivant: * » suivi du message d'erreur. Visiblement, la version de phpMyAdmin que tu as installé présente un défaut. Donc j'ai suggéré que tu utilisesle phpMyAdmin fourni par OV pour effectuer le même test et vérifier si tu obtiens la même erreur ou non.

Le résultat est indépendant de l'exécution de la création de ton image, mais si tu rencontres un problème en ligne pour créer cette image, tu dois pouvoir tester ta requête, or tu arrives sur un second problème avec phpMyAdmin... c'est un autre problème. Donc, commence par résoudre le problème phpMyAdmin en testant celui d'OVH et quand tu auras une réponse, on pourra avancer vers la résolution du problème de l'image.

 
Par paintbox  -  Le 10/05/2011 12:36  -  Haut de page  - 

On va y arriver :-)

Le PHPMyAdmin que j'ai installé est bien celui fourni par OVH.

J'ai obtenu le message d'erreur (mentionné plus haut) lorsque j'ai testé ma requete directement dans PHPMyAdmin à l'adresse https://phpmyadmin.ovh.net/ .

Par contre sur ma page web, je n'ai pas de message d'erreur mais comme je te l'ai expliqué plus haut, le résulta qu'il m'affiche pour une catégorie et un mois sélectionnés par l'utilisateur ne correspond pas au total de produits de cette catégorie. De plus il ne m'affiche que le dernier produit de cette catégorie alors que j'en ai par exemple 6 produits.

 
Par Cyrano  -  Le 10/05/2011 14:05  -  Haut de page  - 

La journée va être longue....

Il faudrait savoir : tu as dit au début que tu as installé ton propre phpMyAdmin en utilisant la versionrecommandée par OVH, j'en déduis que l'url de ce phpMyAdmin doit ressembler à ton-site.com/phpmyadmin/ ou quelque chose dans ce goût là. À la suite de quoi tu as obtenu une erreur. Maintenant tu m'annonces que tu as testé ta requête dans le phpMyAdmin fourni à l'adresse phpmyadmin.ovh.net et que tu y obtiens une erreur : si je résume, tu as donc la même erreur dns les deux adresses de phpMyAdmin, c'est bien ça ?

Quant à ta requête, as-tufini par réussir à la faire afficher en ajoutant un die() ou non ? Ton code ressemble-t-il à

// Calcul du total des ventes pour la categorie selectionnnee
$sql_total_categorie = "SELECT ".
                       "  SUM(dtc_quantite) AS total_categorie, ".
                       "  dtc_date, ".
                       "  dtc_code_categorie ".
                       "FROM v_stat_commande ".
                       "WHERE dtc_code_categorie = '".$categorie."' ".
                       "  AND MONTH(dtc_date)    = '".$SelectedMonth."' ".
                       "  AND YEAR(dtc_date)     = '".$SelectedYear."' ".
                       "GROUP BY dtc_date";
$exec = mysql_query($sql_total_categorie) or die (mysql_error());
$total_categorie = mysql_fetch_assoc($exec);
echo("<pre>Total_categorie :\n");
var_dump($total_categorie);
echo("</pre>\n");die();

?

Et quel est le résultat ?

 
Par Cyrano  -  Le 10/05/2011 14:25  -  Haut de page  - 

Tiens, j'ai trouvé autre chose ici :

// On definit les couleurs qui seront utilisees
$couleur_fond   = ImageColorAllocate ($im2, 230, 230, 230);
$noir           = ImageColorAllocate ($im2,   0,   0,   0);
$vert           = ImageColorAllocate ($im2,  13, 151,  23);
$coul_legendes  = ImageColorAllocate ($im2,  11,  62,  43);
$blanc          = ImageColorAllocate ($im2, 255, 255, 255);
// Couleur des barres du graphique
$coul_barre1    = ImageColorAllocate ($im2,  42, 124,  94);
$coul_barre2    = ImageColorAllocate ($im2,   0,  90,  94);
$coul_barre3    = ImageColorAllocate ($im2,   0,  38, 131);
$coul_barre4    = ImageColorAllocate ($im2, 100,  38, 131);
$coul_barre5    = ImageColorAllocate ($im2, 165,  38, 131);
$coul_barre6    = ImageColorAllocate ($im2, 165,  38, 131);
$coul_barre7    = ImageColorAllocate ($im2, 165,  38, 131);
$coul_barre8    = ImageColorAllocate ($im2, 165,  38, 131);
$coul_barre9    = ImageColorAllocate ($im2, 100,  38, 131);
$coul_barre10   = ImageColorAllocate ($im2, 100,  38, 131);
/**
 * Traçage de l'image de fond
 */
//... etc...

Tu as pas l'impression qu'il manque un truc ? Je t'affirme pourtant qu'il manque quelque chose et ça génère un warning plus loin, warning que tu nevois pas en ligne mais que tu devrais voir en local, à condition toutefois d'avoir bien configuré ton environnement :

display_error = ON;
error_reporting = E_ALL | E_STRICT;

Vérifie ta configuration, corrige au besoin et refais le test en local.

 

 
Par paintbox  -  Le 10/05/2011 14:28  -  Haut de page  - 

En fait, chez OVH il faut installer sur son espace hébergement (dans le dossier qui contiendra ton site) une version de PHP. Cela se fait via FTP.

Ensuite, pour se connecter à sa base de données, il suffit d'aller à l'adresse https://phpmyadmin.ovh.net/, d'y indiquer son nom d'utilisateur, son mot de passe, le choix du serveur.

Je crois qu'on ne sait pas directement accéder à la version de PHPMyAdmin qui se trouve sur notre serveur avec une adresse du type site.com/phpmyadmin/ (comme tu se mentionne). Je pense que l'accès se fait via https://phpmyadmin.ovh.net/ et en indiquant les différents paramètres.

Donc pour résumer, j'ai uniquement tester ma requete sur https://phpmyadmin.ovh.net/ (ou j'ai eu mon erreur) car je n'ai pas accès (directement) auPHPMyAdmin qui est sur mon serveur.

Est-ce plus clair ?

Oui mon code ressemble bien à celui que tu donnes. Mais non, je n'ai pas réussi à le faire fonctionner.

 
Par paintbox  -  Le 10/05/2011 14:32  -  Haut de page  - 

Ceci doit être corrigé où ? Dans mon fichier PHP.ini ?

display_error = ON;error_reporting = E_ALL | E_STRICT;

 

 
Par Cyrano  -  Le 10/05/2011 14:43  -  Haut de page  - 

tout juste

 
Par paintbox  -  Le 10/05/2011 14:53  -  Haut de page  - 

Grrr j'ai fais la modif dans mon fichier php.ini en local et je n'ai aucun message d'erreur. En local mon graph est correct.

Je ne vois pas ce qu'il manque dans la partie que tu précises. J'y indique les différentes couleurs qui seront utilisées.

Devrais-je changer aussi le php.ini qui est en ligne ?

 
Par Cyrano  -  Le 10/05/2011 15:00  -  Haut de page  - 

En ligne, à moins d'avoir un serveur dédié, tu ne pourras même pas accéder au php.ini.

Pour ce qui manque, je te l'avais pourtant fait observer dans un autre post sur le sujet. Un indice : si tu maintiens ce code, c'est qu'on utilise pas les mêmes calendriers et ton année est plus courte ou alors tu as des mois plus longs... ;)

 
Par Cyrano  -  Le 10/05/2011 15:01  -  Haut de page  - 

Un détail : as-tu redémarré ton serveur Apache après avoir modifié ton php.ini local ? Sinon les changement ne seront pas pris en compte.

 
Par paintbox  -  Le 10/05/2011 15:19  -  Haut de page  - 

Est-ce que c'est le fait que mes variables $coul_barre s'arretent à 10 alors qu'il y 12 mois dans l'année?

 
Par paintbox  -  Le 10/05/2011 15:20  -  Haut de page  - 

Oui j'ai redémarré mon serveur et c'est pareil pas de message d'erreur, mais en local cela fonctionne correctement.

 
Par Cyrano  -  Le 10/05/2011 15:22  -  Haut de page  - 

« Est-ce que c'est le fait que mes variables $coul_barre s'arretent à 10 alors qu'il y 12 mois dans l'année? »

Précisément : que se passe-t-il selon toi si le mois traité est 11 ou 12 ?

 
Par paintbox  -  Le 10/05/2011 15:24  -  Haut de page  - 

il n'a pas de couleur pour ce mois donc il cale.

 
Par Cyrano  -  Le 10/05/2011 15:35  -  Haut de page  - 

Donc... ? ;) Si une erreur est générée, elle envoie un en-tête vers la sortie standard, donc le navigateur, du coup, le header en fin de page sensé envoyer une image génère une erreur aussi.

Ceci étant, ça ne résoud pas ton problème de SQL : à part via phpMyAdmin, qu'as-tu tenté pour vérifier que ta requête se déroule normalement ou bien retourne une erreur ? Si tu n'as rien tenté de particulier, réfléchis à la question : tu es dans une situation où un outil est indisponible ou bien il y a une erreur qui génère un effet de bord inattendu, bref, tu ne peux pas l'utiliser efficacement : quelle alternative reste-t-il ?

 
Par paintbox  -  Le 10/05/2011 15:44  -  Haut de page  - 

J'ai uniquement testé ma requête dans PHPMyAdmin.

Quel autre outil utiliser hum

Passer à une autre version de PHPMyAdmin ?

 
Par Cyrano  -  Le 10/05/2011 20:19  -  Haut de page  - 

Et un var_dump dans ton code directement, en laissant Filezilla ouvert pour remettre le fichier sans les lignes de débogage dès que tu auras vu ce que tu veux voir... ?

Faut pas chercher midi à 14h00, en général, les solution simples peuvent marcher aussi ;) Pas toujours trèsélégant mais bon. Il reste que je trouve curieux que ton appli fonctionne en local et pas en ligne surtout si tu as configuré ton environnement en mode développement et que tout se passe bien...

 
Par paintbox  -  Le 10/05/2011 22:59  -  Haut de page  - 

Heu suis encore moins sûr de comprendre.

"un var_dump dans ton code directement" tu veux dire dans mon fichier qui est en ligne ?

"en laissant Filezilla ouvert" D'après mes recherches, Filezilla est un client FTP

En gros je fais mon var_dump sur le fichier qui est sur mon serveur ? C'est ce que j'ai déjà fait.

 
Par Cyrano  -  Le 10/05/2011 23:11  -  Haut de page  - 

 

L'idée de Filezilla, c'est pour gagner du temps, tu fais ton test, et dès que tu as vu le résultat avec le var_dump, tu bascules sur Filezilla pour remettre le fichier sans le var_dump() tout simplement, histoire de pas laisser en ligne trop longtemps un fichier qui afficherai des erreurs.

Si tu n'as toujours pas de résultat, c'est qu'une erreur non affichable se produit sur le serveur. Tu peux toujours essayer de forcer l'affichage des erreur si la fonction n'est pas bloquée par OVH : ini_set() et tu modifie le display_error en le mettant à ON et le error_reporting à E_ALL et ça devrait afficher les erreurs s'il y en a, probablement une undefined variable ou autre du même genre.

Sinon, à tout hasard, compare le phpinfo entre ta machine et le serveur et vérifie les versions de GD, ça pourrait venir de là aussi quoique ce soit peu probable mais je m'attends à tout.

Et coté MySQL, as-tu un autre fichier qui fonctionne comportant des requêtes ? Ça nous donnerait une bonne indication sur le bon fonctionnement de la connexion.

 
Par paintbox  -  Le 10/05/2011 23:36  -  Haut de page  - 

Alors je n'ai pas de fichier php.ini sur OVH.

J'ai en revanche regardé le phpinfo

La version en local est : PHP version 5.2.11

La version sur OVH est : PHP version 5.2.17

en local pour gd j'ai :

gd GD Support  enabledGD Version  bundled (2.0.34 compatible)FreeType Support  enabledFreeType Linkage  with freetypeFreeType Version  2.3.9T1Lib Support  enabledGIF Read Support  enabledGIF Create Support  enabledJPG Support  enabledPNG Support  enabledWBMP Support  enabledXBM Support  enabled

 

et le meme sur OVH

GD Support  enabledGD Version  bundled (2.0.34 compatible)FreeType Support  enabledFreeType Linkage  with freetypeFreeType Version  2.2.1T1Lib Support  enabledGIF Read Support  enabledGIF Create Support  enabledJPG Support  enabledPNG Support  enabledWBMP Support  enabledXPM Support  enabledXBM Support  enabled

 

Oui les autres graphes que j'ai fait avec requete sql fonctionnent parfaitement

 
Par Cyrano  -  Le 11/05/2011 06:50  -  Haut de page  - 

On aurait gagné du temps si tu avais commencé par préciser ce détail... parce que ça veut dire que l'erreur est dans le code de ce graphique là.

Et puis je reviens sur un autre détail : « En fait, chez OVH il faut installer sur son espace hébergement (dans le dossier qui contiendra ton site) une version de PHP. Cela se fait via FTP. » Ça, j'en doute fort, PHP est déjà installé sur les serveur de OVH, donc là, je ne sais pas de quoi tu parles. Or en décortiquant d'autres éléments, tu n'as nul besoin d'installer phpMyAdmin non plus puisqu'il est déjà fourni aussi. Quand on dit « installer », ça veut dire qu'on met en place le script ou l'application soi-même, qu'on en choisit la version et qu'on le configure soi-même, pas qu'on utilise celui qui est fourni.

Ce serait utile que tu réalises bien que si on utilise pas le même langage, on va avoir du mal à se comprendre.

Comme j'ai déjà dit, il n'est pas normal que ton code fonctionne sur ta machine et pas sur le serveur, d'autant moins si tu as bien configuré ton environnement en mode développement, donc en ajustant ton php.ini comme je te l'ai indiqué. Il y a donc forcément une différence entre ton application en local et celle en ligne, différence qu'il faut déterminer : ça peut être un problème d'inclusion de fichier par exemple : si un des fichier n'est pas trouvé et qu'il s'y trouve la valeur d'une variable utilisée dans le code de ton graphique, ça va planter. Resterait à savoir ce qui n'est pas défini et/ou pourquoi ta requête SQL ne retourne pas le résultat attendu. Je ne peux pas voir ce qui se passe durant tes tests. Lorsque tu fais un var_dump d'un élément quelconque, il serait utile que tu m'affiches tous les résultats obtenus ici : là par exemple, je n'ai vu aucune des requêtes générées, pas plus que je ne sais ce que tu as fait avec ce résultat...

On fait de la logique, pure et simple, pas de la divination. Donc tu as du brûler une étape quelque part.

 
Par paintbox  -  Le 11/05/2011 10:42  -  Haut de page  - 

Hello Cyrano,

 

Mon problème est résolu.

 

En fait j'avais commis quelques erreurs à plusieurs niveaux :

 

 

  1. Dans ma base de données : comme c'est pour l'instant en test, et que j'avais complété certains champs manuellement, j'ai fait quelques erreurs. En fait pour un même code catégorie j'avais 2 intitulés de catégorie différents. Ce qui faussait mon total.
  2. Dans mon code : je me suis trompé dans le calcul total. Ce qui explique les différences de total obtenus .

 

En fait j'ai resoumis ce matin mes requetes une par une et pris notes des résultats obtenus. Je me suis donc aperçus des anomalies obtenus.

 

Ce qui m'a induit en erreur au départ c'est ce fameux message d'erreur que j'obtenais (Fatal error) dans PHPMyAdmin.

 

Désolé de t'avoir fait perdre ton temps pour des erreurs aussi évidentes.

 

Encore merci pour ton aide et ta patience.

 
Par Cyrano  -  Le 11/05/2011 10:44  -  Haut de page  - 

Comme quoi, tu auras encore appris un truc : en programmation, il ne faut jamais se relâcher et toujours faire preuve de rigueur ;)

 
Par paintbox  -  Le 11/05/2011 10:52  -  Haut de page  - 

J'avais pourtant essayé d'éliminer une par une les différentes possibilités d'erreur. Mais je n'ai pas pensé aller voir directement si au niveau de ma base, je n'avais pas commis dèjà des erreurs.

Une bonne partie de mes erreurs vient encore de ma méthode de travail qui n'est pas encore assez méthodique.

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |