Wrong parameter count for trigger_error() !! La prise de tête !
demi_michoco
Messages postés3Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention23 juin 2008
-
23 juin 2008 à 15:42
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 2010
-
23 juin 2008 à 21:42
Bonjour, voilà j'ai fait un système de backoffice (en quelques sorte) en php pour pouvoir changer du xml, j'ai l'impression que tout marche, mais il me donne une erreur de type "Wrong parameter count for trigger_error()"
J'ai beau chercher et tenter plein de trucs .. ma foi rien ..
Quelqu'un saurait me dire d'ou sa vient ?
voici mon code :
$parse = xml_parse($this->parser, $data);
if(!$parse)
return trigger_error('XML Error : %s at line %d.',E_USER_ERROR),
array(xml_error_string(xml_get_error_code($this->parser)),
xml_get_current_line_number($this->parser)));
demi_michoco
Messages postés3Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention23 juin 2008 23 juin 2008 à 16:32
Yes effectivement,
Les % ne sont pas génant vu qu'ils sont dans une chaine de caractere ...
mais en fait y'a une parenthèse qui se balade la je ne sais pas trop pourquoi (mauvais copié/collé) ... donc en fait c'est plutot sa :
$parse = xml_parse($this->parser, $data);
if(!$parse)
return trigger_error('XML Error : %s at line %d.',E_USER_ERROR,
array(xml_error_string(xml_get_error_code($this->parser)),
xml_get_current_line_number($this->parser)));
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 23 juin 2008 à 21:42
Salut
Tu dois tuliser la fonction sprintf (ou vsprintf) pour pouvoir te sortir de cette erreur. Trigger_error() ne prend pas des arguments de ce type (%s, %d, %f, ...)
Voilà une petite fonction ;)
function trigger_error_msg($error_msg, $error_type E_USER_NOTICE, $args array())
{
// $args = array() c'est pour faire jolie (pour Zend par exemple) dans la doc.
$_args = array();
$error_message = $error_msg;
$args = func_get_args();
// On supprime les deux premiers arguments ($error_msg, $error_type)
array_shift($args);
array_shift($args);
foreach( $args as $val )
{
if( is_array($val) )
{
$_args = array_merge($_args, (array) $val);
}
else
{
$_args[] = $val;
}
}
// Onc crée un tableau avec tous les arguments
if( count($_args) <> 0 )
{
$error_message = vsprintf($error_msg, $_args);
}
// Si il y a au moins un argument, on parse le message
return trigger_error($error_message, $error_type);
// Enfin, on renvoie l'erreur (trigger_error)