[SPIP Zone] cfg : n_array() [function.in-array]: Wrong datatype for second argument

Bonjour,

Depuis quelques commit ce type d’erreur se produit :

Warning: in_array() [function.in-array]: Wrong datatype for second argument in**/…/ecrire/public/composer.php(42) : eval()'d code** on line42

C’est ce type de syntaxe qui est en cause :

bla bla #SET{selected,#CONFIG{xzx/pa/grtext,#ARRAY}} [[(#RANG). ](#TITRE|couper{80})][ id=(#ID_GROUPE)]

Parfois aussi un bout de code passe dans l’url à la fin
&id_rub_spe1=Array

générant le même type d’erreur et empéchant l’array de se remplir.

y at il une solution ?

pierre

Confirmation :
je profite d'une presence sur la liste pour expliquer une petite
interrogation :

Erreur dans l'appel a la page d'interface privée Configuration / CFG
Version : 1.10.0 | stable
Répertoire : cfg

un nombre -variable- d'erreurs toutes identiques///
- 2 entre le titre (Configuration des modules..) et les <div
onmouseover="changeclass(this, 'onglet_on');"
- 4 en plus avant le debut d'affichage de la page si je choisis Test simple
pour le plugin Cfg

Warning: in_array() [function.in-array]: Wrong datatype for second argument
in C:\www\aSpiPerso\ecrire\public\composer.php(48) : eval()'d code on line
100

SPIP 1.9.2d [11132]
(meme en desactivant tous autres plugins..)
Yx
"Pierre Fiches" <pierre.fiches@free.fr> a écrit dans le message de news:
271B0E08-2A60-4E75-9891-AC6A30C10F4D@free.fr...
Bonjour,

Depuis quelques commit ce type d'erreur se produit :

Warning: in_array() [function.in-array]: Wrong datatype for second argument
in/.../ecrire/public/composer.php(42) : eval()'d code on line42

C'est ce type de syntaxe qui est en cause :
<div class="form-item"><label for="xzx_grtext">bla bla</label>
#SET{selected,#CONFIG{xzx/pa/grtext,#ARRAY}}
<select name="grtext[]" id="xzx_grtext" multiple="multiple" size="5"
class="enligne forml">
<BOUCLE_gr7(GROUPES_MOTS){tables_liees=articles}>
<option value="#ID_GROUPE"[(#ID_GROUPE|in_array{#GET{selected}}|?{'
selected="selected"'})]>[[(#RANG). ](#TITRE|couper{80})][
id=(#ID_GROUPE)]</option>
</BOUCLE_gr7>
</select>
</div>
</B_gr7>

Parfois aussi un bout de code passe dans l'url à la fin
&id_rub_spe1=Array

générant le même type d'erreur et empéchant l'array de se remplir.

y at il une solution ?

pierre

Pierre Fiches a écrit :

*
Bonjour,

Depuis quelques commit ce type d'erreur se produit :

Warning*: in_array() [function.in-array <http://www.renault-cournon.com/ecrire/function.in-array&gt;\]: Wrong datatype for second argument in*/.../ecrire/public/composer.php(42) : eval()'d code* on line*42*
*
C'est ce type de syntaxe qui est en cause :
<div class="form-item"><label for="xzx_grtext">bla bla</label>
#SET{selected,#CONFIG{xzx/pa/grtext,#ARRAY}}
<select name="grtext" id="xzx_grtext" multiple="multiple" size="5" class="enligne forml">
<BOUCLE_gr7(GROUPES_MOTS){tables_liees=articles}>
<option value="#ID_GROUPE"[(#ID_GROUPE|in_array{#GET{selected}}|?{' selected="selected"'})]>[[(#RANG). ](#TITRE|couper{80})][ id=(#ID_GROUPE)]</option>
</BOUCLE_gr7>
</select>
</div>
</B_gr7>

Parfois aussi un bout de code passe dans l'url à la fin
&id_rub_spe1=Array

générant le même type d'erreur et empéchant l'array de se remplir.

y at il une solution ?

Je pense...

* Pour le in_array(), ça veut dire que #CONFIG{xzx/pa/grtext,#ARRAY} renvoie quelque chose d'autre qu'un array() justement, et donc que xzx/pa/grtext existe mais n'est pas un array(). Confirmes-tu avec #CFG_ARBO{xzx/pa/grtext} ?

2 solutions : soit en amont empecher que xzx/pa/grtext soit autre chose qu'un array, soit utiliser à la place de |in_array{} la fonction SPIP |in_any{} qui évite ces erreurs.

* Pour le &id_rub_spe1= en fin d'url, cela provient de SPIP : toute variable envoyée en POST commençant par "id_" est ajoutée à l'url.

Solution : renommer la variable pour ne pas qu'elle commence par "id_", par exemple _id_rub_spe1.

--
MM.

Le 12 août 08 à 16:05, Matthieu Marcillaud a écrit :

Pierre Fiches a écrit :

Bonjour,

Depuis quelques commit ce type d’erreur se produit :

Warning*: in_array() [function.in-array <http://www.renault-cournon.com/ecrire/function.in-array>]: Wrong datatype for second argument in*/…/ecrire/public/composer.php(42) : eval()'d code* on line42

C’est ce type de syntaxe qui est en cause :

bla bla

#SET{selected,#CONFIG{xzx/pa/grtext,#ARRAY}}

<BOUCLE_gr7(GROUPES_MOTS){tables_liees=articles}>

[[(#RANG). ](#TITRE|couper{80})][ id=(#ID_GROUPE)]

</BOUCLE_gr7>

</B_gr7>

Parfois aussi un bout de code passe dans l’url à la fin

&id_rub_spe1=Array

générant le même type d’erreur et empéchant l’array de se remplir.

y at il une solution ?

Je pense…

  • Pour le in_array(), ça veut dire que #CONFIG{xzx/pa/grtext,#ARRAY} renvoie quelque chose d’autre qu’un array() justement, et donc que xzx/pa/grtext existe mais n’est pas un array(). Confirmes-tu avec #CFG_ARBO{xzx/pa/grtext} ?

Merci 1000 fois pour ta réponse.

J’ai tenté cela sans succès :
#CONFIG{xzx/pa/grtext,#ARRAY{0,0}}

#CFG_ARBO{xzx/pa/grtext} donne 0 = 5
ce qui est correct.
et dans le squelette cette écriture fonctionne :

[(#ID_GROUPE|in_array{#GET{grtext}}|?{

  • #TYPE : #TEXTE
  • ,
  • #TYPE : #TITRE
  • })]

    Par contre le [(#ID_GROUPE|in_array{#GET{selected}}|?{’ selected=« selected »'})] de la boucle _gr7 ci-dessus ne fonctionne pas : le groupe 5 n’est pas en état « selected ».

    ceci fonctionne mais ne peut pas être utilisé ici à moins de pouvoir remplacer le 0 par une variable[(#ID_GROUPE|=={#CONFIG{xzx/pa/grtext}|table_valeur{0}}|?{’ selected=« selected »'})]

    [(#ID_GROUPE|in_any{#GET{selected}}|?{’ selected=« selected »',‹ non ›})] donne toujours non même pour #ID_GROUPE = 5. Cette syntaxe est-elle correcte ?

    2 solutions : soit en amont empecher que xzx/pa/grtext soit autre chose qu’un array, soit utiliser à la place de |in_array{} la fonction SPIP |in_any{} qui évite ces erreurs.

    • Pour le &id_rub_spe1= en fin d’url, cela provient de SPIP : toute variable envoyée en POST commençant par « id_ » est ajoutée à l’url.

    oups effectivement le renommage est efficace.
    mais il y a quand même peut être un petit quelque chose puisque ça ne le fait pas qu’en cas d’enregistrements successifs 3 pour être précis.

    Solution : renommer la variable pour ne pas qu’elle commence par « id_ », par exemple _id_rub_spe1.