Wrong parameter count for trigger_error() !! La prise de tête !

demi_michoco Messages postés 3 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 23 juin 2008 - 23 juin 2008 à 15:42
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 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)));

Merci d'avance

4 réponses

Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
23 juin 2008 à 16:20
Tu mets %s et %d, et tu lui passes 1 seul parametre.
(tes parenthèses sont surement mal mises...
0
demi_michoco Messages postés 3 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 23 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)));
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
23 juin 2008 à 16:36
D'après php.net :
trigger_error — Déclenche une erreur utilisateur

Description

booltrigger_error
( string<tt class="parameter">$error_msg</tt>
[, int<tt class="parameter">$error_type</tt>
] )

La fonction prend 2 parametres, tu lui en passes plus, ca fonctionnera pas.
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
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)

}

trigger_error_msg('test', E_USER_WARNING);
trigger_error_msg('test %s %s', E_USER_WARNING, 'msg1', 'msg2');
trigger_error_msg('test %s %s', E_USER_WARNING, array('msg1', 'msg2'));

// trigger_error_msg($error_msg [,  $error_type = E_USER_NOTICE [, (array or midex)$parse_msg]]);

<hr />Si ma reponse te convient, merci de l'accepter ! 
0
Rejoignez-nous