Aller au contenu

Help! voici ce qui s'affiche "Warning: in_array() [function.in-array]: Wrong datatype for second argument "


Sujets conseillés

Posté

Bonjour à tous, j'ai un petit soucis sur mon site.

Voici quelques données:

Hebergement OVH

Site joomla 1.0.15

template terrantribune

code erreur s'affichant ( il y a 2 types d'erreurs)

Warning: Invalid argument supplied for foreach() in .../templates/rt_terrantribune/rt_rokmenu.php on line 200

Voici le code de la ligne 200 de ce fichier: ( la ligne est en gras)

function _getStartingChild() {

$child = $this->_menu_array;

foreach ($this->_active_path as $pathid) {

if ($pathid > 0 ) {

if ($child[$pathid]->level < $this->_start && $child[$pathid]->children) {

$this->_menu_name = $child[$pathid]->name;

$child = $child[$pathid]->children;

et la 2eme erreur qui apparait peu etre 100 fois en debut de page:

Warning: in_array() [function.in-array]: Wrong datatype for second argument in .../templates/rt_terrantribune/rt_rokmenu.php on line 236

Voici le code de la ligne 236 de ce fichier:

if (in_array($menuitem->id, $this->_active_path)) $class .= "active ";

Merci d'avance pour vos eclairage et aides precieuses, j'aimerai masquer ces warning car en dehors de ca, tout marche impeccable si on elimine cet affichage de ligne intempestif en debut d page

Posté

Quand il te dit que ce n'est pas un argument valide pour le foreach, c'est que probablement $this->_active_path est vide, et donc il ne peut pas boucler dessus.

Et pour le $this->_active_path c'est que le contenu de cette variable n'est pas valide pour la fonction in_array

Posté
Quand il te dit que ce n'est pas un argument valide pour le foreach, c'est que probablement $this->_active_path est vide, et donc il ne peut pas boucler dessus.

Et pour le $this->_active_path c'est que le contenu de cette variable n'est pas valide pour la fonction in_array

Merci DADOU pour cette explication.

Mon probleme est de faire disparaitre ces lignes d'erreurs, que dois je modifier pour y arriver?

D'ou peuvent venir ces erreurs? Je suis pas aussi avancé en codage php que l'ensemble des membres de ce site, merci d'avance

Posté

Voici le code php complet pour les 2 fonctions qui me renvoi des erreurs:

	function _getStartingChild() {

$child = $this->_menu_array;
foreach ($this->_active_path as $pathid) {
if ($pathid > 0 ) {

if ($child[$pathid]->level < $this->_start && $child[$pathid]->children) {
$this->_menu_name = $child[$pathid]->name;
$child = $child[$pathid]->children;
} else {
break;
}
}
}
return ($child);
}

function _renderList( &$children, $level ) {

$output = "";
$has_output = false;

if (is_array($children) && sizeof($children)>0) {

$ulstyle = "";
if($this->_start==$level) {
$ulstyle .= ' class="menu' . $this->_menu_sfx . '" ';
}
if($level==0) {
$ulstyle .= ' id="horiznav"';
}

$output .= "\n<ul" . $ulstyle . ">\n";
foreach ($children as $key => $value) {

$menuitem =& $children[$key];


$class = "";
if (in_array($menuitem->id, $this->_active_path)) $class .= "active ";
if ($menuitem->children) $class .= "parent ";

PS: ce fichier est lié au template terrantribune qui sert a la presentation

Posté

Tu ajoutes devant ton foreach : if(is_array($this->_active_path))

et

tu ajoutes devant ton if (in_array($menuitem->id, $this->_active_path)) $class .= "active "; un if(is_array($this->_active_path))

Posté
Tu ajoutes devant ton foreach : if(is_array($this->_active_path))

et

tu ajoutes devant ton if (in_array($menuitem->id, $this->_active_path)) $class .= "active "; un if(is_array($this->_active_path))

Genial ta proposition Petit Ourson, ca m'a reglé 99% des lignes d'erreurs, mais ca m'a permis de voir un 3eme type de ligne d'erreur apparaitre que je n'avais pas remarqué dans le flot , donc voici le nouveau defi:

il me reste plus qu'une seule ligne d'erreur qui apparait:

Warning: array_keys() [function.array-keys]: The first argument should be an array in ../templates/rt_terrantribune/rt_rokmenu.php on line 335

Donc voici le passage avec la fameuse ligne de code du fichier en gras:

function getColor() {

$keys = array_keys($this->_active_path);

$parent_id = $this->_active_path[$keys[1]];

$parent = $this->_menu_array[$parent_id];

if (isset($this->_menucolors[$parent->index])) {

return $this->_menucolors[$parent->index];

} else {

return $this->_defaultcolor;

}

Que faut il rajjouter pour faire disparaitre cette ligne d'erreur?

Merci d'avance à tous!

}

Posté
D'ou peuvent venir ces erreurs?

Cela vient du fait que celui qui a fait le code ne teste pas la validité des infos entrées, c'est sur un module de joomla l'erreur??

Pour ton erreur avec array_key, c'est pareil, cette fonction attend un tableau, si la variable envoyé n'en est pas un, ça part en sucette. Et toutes tes erreurs viennent du fait que le cas ou la variable est vide, le tableau n'existe pas, tout au long du code, cela n'a pas été testé par le dev.

En corrigeant cette erreur, on risque d'aller d'erreurs en erreurs

ta fonction corrigée

function getColor() {
if (is_array($this->_active_path)) {
$keys = array_keys($this->_active_path);
$parent_id = $this->_active_path[$keys[1]];
$parent = $this->_menu_array[$parent_id];

if (isset($this->_menucolors[$parent->index])) {
return $this->_menucolors[$parent->index];
} else {
return $this->_defaultcolor;
}
}

Posté
Cela vient du fait que celui qui a fait le code ne teste pas la validité des infos entrées, c'est sur un module de joomla l'erreur??

Pour ton erreur avec array_key, c'est pareil, cette fonction attend un tableau, si la variable envoyé n'en est pas un, ça part en sucette. Et toutes tes erreurs viennent du fait que le cas ou la variable est vide, le tableau n'existe pas, tout au long du code, cela n'a pas été testé par le dev.

En corrigeant cette erreur, on risque d'aller d'erreurs en erreurs

ta fonction corrigée

function getColor() {
if (is_array($this->_active_path)) {
$keys = array_keys($this->_active_path);
$parent_id = $this->_active_path[$keys[1]];
$parent = $this->_menu_array[$parent_id];

if (isset($this->_menucolors[$parent->index])) {
return $this->_menucolors[$parent->index];
} else {
return $this->_defaultcolor;
}
}

Alors j'ai essayé ton truc, ca me renvoi la code suivant:

Parse error: syntax error, unexpected ';', expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in ../templates/rt_terrantribune/rt_rokmenu.php on line 354

Voici les codes:( en gras la fameuse ligne 354)

function getColor() {

if (is_array($this->_active_path)) {

$keys = array_keys($this->_active_path);

$parent_id = $this->_active_path[$keys[1]];

$parent = $this->_menu_array[$parent_id];

if (isset($this->_menucolors[$parent->index])) {

return $this->_menucolors[$parent->index];

} else {

return $this->_defaultcolor;

}

}

function ismenu() {

if (strlen($this->_output) > 5) return true;

else return false;

}

}

?>

La carrement j'ai plus rien qui apparait a l'ecran à part cette ligne d'erreur.

C'est le template de joomla que j'utilise qui deconne semble t'il.

Donc je reviens un pas en arriere et j'attend vos eventuels conseils, soit retenter un nouveau code pour la fonction qui deconne soit corriger la correction?

Merci D'avance!

Posté

Dedieux, lis les message d'erreurs un peu, ça t'aide à comprendre ce qu'il ne va pas, la il te dis qu'il manque un ; ou une } en l'occurrence, ici une } tout a la fin

  • 3 months later...
Posté
Merci DADOU pour toute ton aide, je viens de regler le probleme.

Bonjour! j'ai le problème que toi DADOU et j'arrive pas a le résoudre, comment tu as fait?????

Merci!

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...