Categories > TinyButStrong general (FR) >

[fr][pb] recocher les cases deja scocher par un utilisateur

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: ManuReva
Date: 2006-07-06
Time: 15:10

[fr][pb] recocher les cases deja scocher par un utilisateur

Bonjour,

j'ai decouvert tbs il y a quelques jours et j'avoue avoir quelques lacunes pour certains pb et apres avoir fouiller dans le forum je n'ai pas trouvé de solution a mon pb.

Je cherche a ce que lorque mon formulaire contient des erreurs de saisie celui-ci se recharge avec les memes cases deja cocher auparavant, cela fonctionne tres bien avec les champs mais avec les checkbox et radio je seche.

voici ma partie html
    <fieldset class="radio">
        <legend>Présence</legend>
        <table>
            <tr>
                <td ></td><td>
                    <label for="tous">
                        <input type="checkbox" name="tous" value="tous" id="tous" [var.post_tous] onclick="select_all()"/>Tous
                        <!--this.form.matin.value,this.form.aprem.value,this.form.midi.value,this.form.soir.value-->
                    </label>

                </td>
            </tr>
            <tr>
                <td>
                    [date1.jour;block=tr] [date1.mois;block=tr] [date1.annee;block=tr]
                </td>
                <td>

                    <label for="matin-[date1.jour]-[date1.mois]">
                        <input type="checkbox" name="matin[]" id="matin-[date1.jour]-[date1.mois]" value="matin-[date1.jour]-[date1.mois]" [var.val0; if [var.ctrl_deb]=[date1.jour]; then [var.val1]]> [var.post_matin;ope=html;select=matin[];selbounds=input] matin</input>
                    </label>
                </td>
                <td>
                    <label for="midi-[date1.jour]-[date1.mois]">
                        <input type="checkbox" name="midi[]" id="midi-[date1.jour]-[date1.mois]" value="midi-[date1.jour]-[date1.mois]" [var.val0; if [var.ctrl_deb]=[date1.jour]; then [var.val2]] [post_midi.c2]/>midi
                    </label>

                </td>
                <td>
                   
                    <label for="aprem-[date1.jour]-[date1.mois]">
                        <input type="checkbox" name="aprem[]" id="aprem-[date1.jour]-[date1.mois]" value="aprem-[date1.jour]-[date1.mois]" [var.val0; if [var.ctrl_fin] = [date1.jour]; then [var.val3]] [post_aprem.c3]/> apres midi
                    </label>
                </td>
                <td>
                    <label for="soir-[date1.jour]-[date1.mois]">
                        <input type="checkbox" name="soir[]" id="soir-[date1.jour]-[date1.mois]" value="soir-[date1.jour]-[date1.mois]" [dis.val;block=tr] [post_soir.c4]/>soir
                    </label>

                </td>
            </tr>
        </table>   
    </fieldset>


ainsi que la partie php

    if(isset($_POST['matin'])) {
        $post_matin = $_POST['matin'];
    }

je precise que je débute dans le domaine donc si vous pouviez m'eclairer cela m'arrangerais beaucoup ;)

Merci d'avance
By: Skrol29
Date: 2006-07-06
Time: 15:27

Re: [fr][pb] recocher les cases deja scocher par un utilisateur

Salut,

"selbounds=input" ne peut pas marcher car "selbounds" a besoin de balises ouvrantes:fermantes. Je te conseille de mettre ton [var.post_matin;...] dans la table mais en dehors du bloc "date1" (par exemple sur la première ligne) de sorte qu'il ne soit pas répété. Puis tu mets "selbounds=table" pour faire une selection sur tous les items placés dans <table></table>.

Vérifie aussi que tu as bien chargé le plug-in HTML.

Autre remarque : il n'est pas utile de répter "block=tr" sur chaque champ du bloc. Une seule fois suffit. par exemple :
[date1.jour;block=tr]
[date1.mois]
[date1.annee]
By: ManuReva
Date: 2006-07-06
Time: 16:45

Re: [fr][pb] recocher les cases deja scocher par un utilisateur

En effet c'etait tout bêtement un pb de positionnement.

Merci bcp et bravo pour la disponibilité.


J'aurais egalement voulu avoir une petite precision: existe t'il le meme systeme que ce select mais avec l'etat "disabled", je m'explique:
j'ai une une table qui me renseigne si oui ou non ces cases doivent etre active ou pas et pour le moment j'ai bidouillé quelque chose avec un tableau qui m'ajoute
disabled = "disabled"
si cela est necessaire,cela fonctionne mais le probleme est que les double quotes coté php sont interprété en &quot coté html ce qui a pour effet de ne plus rendre la page a la norme w3c. Il ya de forte chance que je m'y prenne mal et j'aurais donc besoin de vos lumieres :p

Merci d'avance.
By: Skrol29
Date: 2006-07-06
Time: 17:23

Re: [fr][pb] recocher les cases deja scocher par un utilisateur

Y'a rien encore de prévu en natif pour le disabled.
Moi je fais un truc comme ça :
<input ... [var.grisé;if [val]=1;then 'disabled="disabled"';else ''] ...>

Et là pas de problème pour les guillemets. Sinon, pour conserver les guillemets, il suffit d'ajouter le paramètre "protect=no".

By: Manureva
Date: 2006-07-17
Time: 13:46

Re: [fr][pb] recocher les cases deja scocher par un utilisateur

tout d'abord merci pour tes solutions qui fonctionnent en 10 secondes ^^

mais je rencontre une nouvelle difficultée et pourtant je ne comprend pas du tout pourquoi vu que le pb est identique au premier, a savoir que les coches ne se place pas apres avoir valider mon formulaire

le html
<fieldset class="radio">
        <legend>Nuitées</legend>
        <table>[var.post_nuit_simple;ope=html;select=nuit_simple[];selbounds=table][var.post_nuit_double;ope=html;select=nuit_double[];selbounds=table]
            <tr>
                <td>
                </td>
                <td>
                    <label for="nuit_simple0">
                        <input type="radio" name="nuit" value="nuit_simple" id="nuit_simple0" [var.post_simple;htmlconv=esc] onclick="checkchambre()"/>chambre simple
                    </label>
                </td>
                <td>
                    <label for="nuit_double0">
                        <input type="radio" name="nuit" value="nuit_double" id="nuit_double0" [var.post_double;htmlconv=esc] onclick="checkchambre()"/>chambre double
                    </label>
                </td>
                <td rowspan="5">
                    <label for="info_hebergement">Infos Hébergement
                        <textarea name="info_hebrgement" cols="35" rows="7" id="info_hebergement" readonly="readonly"></textarea>
                    </label>
                </td>
            </tr>
            <tr>
                <td>
                    [date3.jour;block=tr] [date3.mois;block=tr] [date3.annee;block=tr] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    &nbsp;&nbsp;
                </td>
                <td>
                    <label for="simple-[date3.jour]-[date3.mois]">
                        <input type="checkbox" name="nuit_simple[]" id="simple-[date3.jour]-[date3.mois]" value="simple-[date3.jour]-[date3.mois]"/>chambre simple
                    </label>
                </td>
                <td>
                    <label for="double-[date3.jour]-[date3.mois]">
                        <input type="checkbox" name="nuit_double[]" id="double-[date3.jour]-[date3.mois]" value="double-[date3.jour]-[date3.mois]"/>chambre double</label>
                </td>
            </tr>
            <tr>
                 <td>
                </td>
                <td>
                </td>
                <td>
                    <label for="coloc" class="champ_obligatoire">Colocataire
                        <input type="text" name="coloc" value="[var.post_coloc]" id="coloc" disabled="disabled"/>
                    </label>
                </td>
            </tr>
        </table>
    </fieldset>
</fieldset>

le php
$post_nuit_simple = array();
$post_nuit_double = array();

if (isset($_POST['nuit_simple'])) {
    $post_nuit_simple = $_POST['nuit_simple'];
}

if (isset($_POST['nuit_double'])) {
    $post_nuit_double = $_POST['nuit_double'];
}

etant donner que la solution proposer plus haut fonctionne parfaitement et que si je ne me trompe j'ai reutilisé la meme séquence, je ne comprend pas du tout mon pb.

autre incohérence rencontrée
le code php suivant:
if (isset($_POST['nuit'])) {
    if ($_POST['nuit'] == "nuit_simple") {
        $post_simple = 'checked = "checked" onfocus="checkchambre()"';
    }
    if ($_POST['nuit'] == "nuit_double") {
        $post_double = 'checked = "checked" onfocus="checkchambre()"';
    }
}
plus precisement le "onfocus" (appel fct javascript) qui fonctionne parfaitement egalement avec la portion de code du precedent post, ne fonctionne lui non plus. meme si je peut me tromper je pense que ces 2 disfonctionnement sont liés d'une maniere ou d'une autre.

Merci d'avance ;)
By: ManuReva
Date: 2006-07-18
Time: 11:47

Re: [fr][pb] recocher les cases deja scocher par un utilisateur

aaarrrggg !!!!!

j'ai beau tout essayer rien ne fonctionne :(, un coup de pousse ne serais pas de refus :p
By: Skrol29
Date: 2006-07-18
Time: 12:17

Re: [fr][pb] recocher les cases deja scocher par un utilisateur

Salut,

Je ne vois pas de problème dans ton modèle ni dans ton code PHP. J'ai peut être loupé quelque chose, mais tu devrais commencer par vérifier les valeurs et les mécanismes.

Par exemple, tu pourrais remplacer "ope=html" par "ope=list" dans
[var.post_nuit_simple;ope=html;select=nuit_simple[];selbounds=table]
de sorte que TBS affiche les valeurs qu'il cherche à sélectionner dans le modèle (bien sûr la sélection sera désactivée). Vérifie aussi que ces valeurs sont bien des valeurs existantes après fusion pour la balise nommé "nuit_simple[]".

Si tu n'arrive à rien, envoie moi un jeu de valeur pour le bloc "date3" et pour $date1 pour que je puisse reproduire le problème.
By: ManuReva
Date: 2006-07-18
Time: 13:49

Re: [fr][pb] recocher les cases deja scocher par un utilisateur

rien n'y fait, en changeant en "ope=list" les données transmise s'affiche correctement donc je ne vois vraiment pas ce qui cloche.

la page de base affichée est bien conforme a ce que je demande, le pb viens juste du fait qu'apres validation du formulaire les coches disparaissent et que la fonction javascript refuse obstinement de s'executer, les données sont bien transmisent correctement en cas d'acceptation du formulaire ...

Je t'envoie donc un jeu de donnée en espérant que tu puisse m'aider a y voir plus clair :)
By: Skrol29
Date: 2006-07-18
Time: 15:17

Re: [fr][pb] recocher les cases deja scocher par un utilisateur

Ok, j'ai trouvé.
C'est à cause du codage des balises INPUT.
Tu as codé:
<input ... value="xxx"/>
Mais TBS a analysé la valeur comme étant {"xxx"/} au lieu de {xxx}
Il faudrait coder :
<input ... value="xxx" />

L'espace avant le "/" fait partie de la norme XML, bien que cela ne pose aucun pb pour les navigateurs quand il est absent. Il faudrait que je regarde s'il est facile de corriger TBS pour qu'il puisse faire de même. En attendant, voilà la soluce.
By: ManuReva
Date: 2006-07-18
Time: 15:24

Re: [fr][pb] recocher les cases deja scocher par un utilisateur

franchement bien vue, je ne sait pas comment tu as trouvé cela vu que la portion precedente sans espace fonctionne correctement mais bon le principal c'est que cela fonctionne a present (hormis le javascript mais je vais trafiquer ^^ )

encore une bien belle analyse et une reponse qui fonctionne en moins de 10 sec et du premier coup ;)

merci encore.