Page 1 sur 3
probleme avec une fonction
Posté : 31 août 2009, 10:59
par tipi
Bonjour,
Je suis en train de faire un site marchand. J'ai un soucis dès le lancement de mon application, j'ai l'erreur suivante:
Notice: Undefined index: module in C:\Program Files\EasyPHP 3.0\www\nbijoux\classe_boutique.php on line 360
Voici un extrait du script qui appelle la fonction recup_variable:
// initialisation de la classe boutique
require_once("classe_boutique.php");
$boutique = new nbijoux();
$page_html = file_get_contents($maquette);
// création du tableau des blocs
$tab_blocs = $boutique->lire_tableau_blocs($page_html);
// appel du module principal
$module=$boutique->recup_variable('module','GP');
if (!$module)
$module='accueil';
Voici la fonction placée dans la classe:
function recup_variable($nom, $order="GPC")
{
for ($i=0; $i<strlen($order);$i++)
{
$x = strtoupper(substr($order, $i, 1));
echo $x;
if (phpversion() < "4.1.0")
{
if ($x == "G" && !isset($valeur))
$valeur = $GLOBALS['GET_VARS']["$nom"];
if ($x == "P" && !isset($valeur))
$valeur = $GLOBALS['POST_VARS']["$nom"];
if ($x == "C" && !isset($valeur))
$valeur = $GLOBALS['COOKIE_VARS']["$nom"];
if ($x == "S" && !isset($valeur))
$valeur = $GLOBALS["$nom"];
}
else
{
if ($x == "G" && !isset($valeur))
$valeur = $_GET["$nom"];
if ($x == "P" && !isset($valeur))
$valeur = $_POST["$nom"];
if ($x == "C" && !isset($valeur))
$valeur = $_COOKIE["$nom"];
if ($x == "S" && !isset($valeur))
$valeur = $_SERVER["$nom"];
}
}
return $valeur;
}
Voilà je ne vois pas le problème.
Merci pour votre aide
[php]
[/php]
Re: probleme avec une fonction
Posté : 31 août 2009, 11:03
par Cobaye
Modération :
Afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).
Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.
Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ
Re: probleme avec une fonction
Posté : 31 août 2009, 12:29
par tipi
quelqu'un aurait une petit idée du problème??
Merci de vos réponses.
Re: probleme avec une fonction
Posté : 31 août 2009, 12:47
par SpintroniK
Salut,
Déjà, la variable $valeur n'est jamais définie, donc pourquoi la tester à chaque fois avec un !isset($valeur) ?
Ensuite, ce message d'erreur est assez clair : si, tu récupères ta variable grâce à _GET par exemple, c'est tout simplement que $_GET['module'] n'est pas définie... Pareil si c'est avec _POST... As tu essayé en ajoutant ?module=1 à la fin de l'url de ta page ?
Re: probleme avec une fonction
Posté : 31 août 2009, 12:55
par tipi
Voici mon programme je ne vois pas ou je dois le mettre:
<?php
// variable pour debogage
$debug = 0;
// gestion des erreurs en mode de débogage
if($debug)
ini_set('display_errors', 'On');
// fichier de configuration
file_get_contents("C:\Program Files\EasyPHP 3.0\conf_files\php.ini");
// langue courante
$langue_courante = 'fr';
// traductions
$fichier = 'traductions_' .$langue_courante. '.php';
include($fichier);
// initialisation de la classe boutique
require_once("classe_boutique.php");
$boutique = new nbijoux();
// lecture de la maquette
$maquette = "module_boutique.html";
if(!file_exists($maquette) && $debug)
echo "Maquette<b>$maquette</b>inexistante<br>";
$page_html = file_get_contents($maquette);
// création du tableau des blocs
$tab_blocs = $boutique->lire_tableau_blocs($page_html);
// appel du module principal
$module=$boutique->recup_variable("module","GP");
if (!$module)
$module='accueil';
$file='module_'.$module.'.php';
if (file_exists($file))
include($file);
// programme de traitement des blocs
include_once("gestion_blocs.php");
// métabalises par défaut
if (!$tab_blocs['meta_title'])
$tab_blocs['meta_title']=$boutique->get_parametre('meta_title');
if (!$tab_blocs['meta_description'])
$tab_blocs['meta_description']=$boutique->get_parametre('meta_description');
if (!$tab_blocs['meta_keywords'])
$tab_blocs['meta_keywords']=$boutique->get_parametre('meta_keywords');
//remplacement des blocs dans la maquette originale
reset($tab_blocs);
while (list($code_blocs,$text_blocs)=each($tab_blocs))
{
$cle='<'.$code_blocs.'>';
$page_html=str_replace($cle,$text_blocs,$page_html);
}
// affichage de la page
echo $page_html;
// enregistrement des statistiques
$boutique-> update_stats_trafic();
?>
Merci pour ton aide
Re: probleme avec une fonction
Posté : 31 août 2009, 14:21
par tipi
quelqu'un pourrait m'aider????
Merci
Re: probleme avec une fonction
Posté : 31 août 2009, 15:13
par tipi
Ce script devrait me permettre d'insérer le module que je souhaite selon le contexte. Le module à inclure est précisé dans l'URL. Si aucun module n'est précisé, c'est le cas sur la page d'accueil alors il faut que j'inclus le module_accueil.php.
Voilà plus précision sur ce que je veux faire.
Merci
Re: probleme avec une fonction
Posté : 31 août 2009, 16:56
par SpintroniK
En un mot : bizarre...
Elle est pas un peu inutile la ligne de " configuration " ?
Re: probleme avec une fonction
Posté : 31 août 2009, 17:40
par tipi
C'est bon j'ai résolu le problème. J'ai été dans le fichier php.ini et j'ai modifié le error_reporting, j'ai mis E_ALL~E_NOTICE. Voilà....
Merci pour votre aide
Re: probleme avec une fonction
Posté : 31 août 2009, 18:17
par Sékiltoyai
Tu ne crois pas que c'est une façon quelque peu sale de "régler" le problème ?
Re: probleme avec une fonction
Posté : 31 août 2009, 18:22
par tipi
Je ne sais pas si c'est une façon sale de régler le problème. J'ai simplement un bouquin qui m'aiguille et qui me notifie de faire cette manipulation.
Est ce que tu aurais une idée?
Merci
Re: probleme avec une fonction
Posté : 31 août 2009, 18:48
par Sékiltoyai
Quel est ce bouquin ?
Cette manipulation masque les erreurs, elle ne les résoud pas comme par magie. En réalité, tu as une erreur assez explicite qui te dit que l'indice d'un tableau n'est pas fixé. Dans ce cas il faut se demander pourquoi, en l'occurence :
- Est-ce normal que l'indice n'existe pas ? Auquel cas il faut tester si la valeur existe et en spécifier une par défaut si ce n'est pas le cas.
- Est-ce que au contraire cela dénote une erreur sous-jacente. Dans ce cas, il faut détecter la source de l'erreur et la régler.
Plus généralement, il faut maîtriser le contenu de ses tableaux. Lorsqu'un tableau a été créé par toi, il faut être sûr de connaître son organisation à tout moment. Lorsque le tableau vient de l'"extérieur" de ton code, notamment les super-globales $_POST qui viennent d'un formulaire, dans ce cas, il faut assigner des valeurs par défaut quand les champs ne sont pas assignés, voire générer une erreur à destination de l'utilisateur.
Je t'invite donc vivement à répondre aux questions de SpintroniK qui a commencé à t'aider.
Re: probleme avec une fonction
Posté : 31 août 2009, 18:54
par tipi
Le bouquin c'est site web marchand en php/mysql.
Justement lorsque je fais appelle à la fonction je mets une valeur en dur dans les paramètres, donc il ne devrait pas me spécifier cette erreur.
Merci
Re: probleme avec une fonction
Posté : 31 août 2009, 19:00
par tipi
Spintronik,
Pourquoi tu me dis que ma ligne configuration sert à rien? Je lance un fichier avec des paramètres d'environnement. Quel rapport avec mon problème de d'inx non définie?
Merci pour ton aide
Re: probleme avec une fonction
Posté : 31 août 2009, 19:03
par Sékiltoyai
Bah on va faire simple, il y a quoi dans les alentours de la ligne 360 ?