incompatibilité de SPIP avec les checkbox

J'inclus dans un article (via un include dans le squelette, exemple ci-dessous) des cases à cocher, Spip accepte.

Mais si je coche une case et que je valide, l'avertissement suivant est affiché :

|Warning: rawurlencode() expects parameter 1 to be string, array given
in C:\Program Files\EasyPHP 2.0b1\www\spip 1-9-2-c\ecrire\inc\utils.php
on line 321

||(ce qui n'a d'ailleurs pas de conséquence sur la suite du déroulement, mais ce n'est pas joli)|
||

Si je comprends bien, les contenus des checkbox sont transmis sous forme de tableau et rawurlencode ne le supporte pas . Même avec un exemple minimalsite comme ci-dessous. Y a-t-il un bug, faut-il contourner
le fonctionnement normal des checkbox ? Merci de votre aide

|

|

|
||<script>
function valider(){ document.formulaire.submit() };
</script>
<form name="formulaire" action="#SELF" method="post" >
<input type='checkbox' name='id_domaine[]' value='probas'>Probabilités
<input type='checkbox' name='id_domaine[]' value='fct' >Fonctions
<input type='checkbox' name='id_domaine[]' value='mat' >Matrices
<input type='button' onClick='valider()' value='Valide'>;
</form>|

Pierre Veuillez a écrit :

Si je comprends bien, les contenus des checkbox sont transmis sous forme de tableau et rawurlencode ne le supporte pas .

as-tu essayé avec le formulaire en method="get" ?

imaginons que ta page est appelée par /?page=maths

<?php
if (isset($_GET)) {
   print_r($_GET);
}
?>
<form name="formulaire" action="#SELF" method="get" >
    <!-- ce champ (toujours placé en premier) -->
    <!-- est nécessaire pour un retour harmonieux -->
<input type="hidden" name="page" value="maths">
    <!-- ce qui sera récupéré sous forme de tableau -->
<input type='checkbox' name='id_domaine' value='probas'>Probabilités
<input type='checkbox' name='id_domaine' value='fct' >Fonctions
<input type='checkbox' name='id_domaine' value='mat' >Matrices
<input type='submit' name="valider" value='Valide'>;
</form>

le retour (avec 2 cases cochées) :

l'url affichée :
   /?page=maths&id_domaine=probas&id_domaine=mat&valider=Valide

Array (
   [page] => maths
   [id_domaine] => Array (
                       [0] => probas
                       [1] => mat
                     )
   [valider] => Valide
)

Pierre Veuillez a écrit :

|Warning: rawurlencode() expects parameter 1 to be string, array given
in C:\Program Files\EasyPHP 2.0b1\www\spip 1-9-2-c\ecrire\inc\utils.php
on line 321

Si je comprends bien, les contenus des checkbox sont transmis sous forme de tableau et rawurlencode ne le supporte pas . Même avec un exemple minimalsite comme ci-dessous. Y a-t-il un bug, faut-il contourner
le fonctionnement normal des checkbox ? Merci de votre aide

<input type='checkbox' name='id_domaine' value='probas'>Probabilités

Deux choses,
1) il me semble que ce petit bug est corrigé sur les versions à jour (1.9.2e je crois, et SPIP 2 beta2 certain)
2) ce bug provient (provenait) du fait que SPIP récupère automatiquement toute variable envoyée commençant par "id_" pour l'ajouter à l'environnement des squelettes. Renommer la variable en "idDomaine" ou "domaine_id" et ça devrait rouler.

--
MM.

Matthieu Marcillaud a écrit :

1) il me semble que ce petit bug est corrigé sur les versions à jour (1.9.2e je crois, et SPIP 2 beta2 certain)

pas vraiment (ce me semble):

ecrire/inc/utils.php [ligne 378 en 1.9.2d, 349 en 2.0]

// ajouter le cas echeant les variables _POST['id_...']
foreach ($_POST as $v => $c)
   if (substr($v,0,3) == 'id_')
     $url = parametre_url($url, $v, $c, '&');

denisb a écrit :

Matthieu Marcillaud a écrit :

1) il me semble que ce petit bug est corrigé sur les versions à jour (1.9.2e je crois, et SPIP 2 beta2 certain)

pas vraiment (ce me semble):

Je parle des tableaux dans rowurlencode, pas des id_ ajoutés. Ca c'est volontaire.

--
MM.

Merci pour voter aide. J’ai trouvé la cause de l’erreur :

c’est le nom du champ qui pose problème à SPIP.
« id_ … » doit être réservé :