Categories > TinyButStrong general (FR) >

Double condition AND

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: zeflex
Date: 2011-09-26
Time: 18:27

Double condition AND

Hello,

Je souhaiterai que la fonction "disabled" soit affichée si
- la valeur de input.val n'est pas nulle
et
- la valeur  de blk1.val soit égal à "username".

J'ai ceci actuellement mais ca ne fonctionnes pas , comment faire svp ? Merci.


                <dd><input type="text" name="[blk1.val;block=dl]" id="" size="50" value="[input.val;block=dl]" [input.val; if '[val]-[blk1.val]' != '-username'; then 'disabled="disabled"']/></dd>
By: Skrol29
Date: 2011-09-26
Time: 20:59

Re: Double condition AND

Bonjour,

Il faut que tu t'assures que "blk1" est fusionné avant "input".
By: zeflex
Date: 2011-09-29
Time: 22:06

Re: Double condition AND

Salut,

J'ai ceci actuellement et ca ne fonctionnes pas :


$txtfields = array('Username (email)'=>'username','First name'=>'fname','Last Name'=>'name','Password'=>'pwd1','Password (confirm)'=>'pwd2');
$TBS->MergeBlock('blk1',$txtfields);

$radiofields = array('Users'=>"",'Titles'=>"",'Data Import'=>"",'Report'=>"",'Admin'=>"");
$TBS->MergeBlock('blk2',$radiofields);

if ( !empty($_GET['userid']) ) {
    $sql = mysql_query("SELECT * FROM users WHERE user_id = $userid");
    $row = mysql_fetch_array($sql);
    $TBS->MergeBlock('input',array($row['username'],$row['fname'],$row['name'],'',''));
    $TBS->MergeBlock('radio',array($row['rights_users'],$row['rights_titles'],$row['rights_data_import'],$row['rights_report'],$row['rights_admin']));
} else {
    $TBS->MergeBlock('input',array("","","","",""));
    $TBS->MergeBlock('radio',array("","","","",""));
}

Une idée ?
By: zeflex
Date: 2011-10-04
Time: 00:12

Re: Double condition AND

Une idée peut etre ? Merci.
By: Skrol29
Date: 2011-10-04
Time: 00:36

Re: Double condition AND

Salut,

Peux-tu en dire plus sur ton morceau de modèle ?
On y voit un élément <dd> mais deux blocs définis sur <d1>. Ca peut déjà être un problème.
On dirait que tu compte faire une fusion synchronisée en fusionnant "blk1" et "input" sur la même section. Mais ça ne peut pas marcher comme ça.

Après je vois dans ton code PHP que tu fusionnes "blk1" avec un tableau clé/valeur qui semble inversé. Est-ce voulu ?
En fait, que souhaites-tu obtenir comme résultat final ?
By: zeflex
Date: 2011-10-04
Time: 00:46

Re: Double condition AND

Salut,

J'ai besoin de rendre le champs input en question "disabled" si il y'a une valeur présente pour le username ($row['username'] si $_GET['user_id'] n'est pas nul).

Je penses que c'est ma portion
[input.val; if '[val]-[blk1.val]' != '-username'; then 'disabled="disabled"']
qui est foireuse en fait. Là de ce que j'écris ; dans ma tête ca dit :
Si il y'a une valeur pour input (value="xyz") et que blk1 est username (name="username"), alors on affiche la syntaxe disabled.

Est ce plus compréhensible ?

Merci à toi.


By: Skrol29
Date: 2011-10-04
Time: 09:18

Re: Double condition AND

Salut,

Cette portion me semble bonne, elle devrait marcher même si tu as des apostrophes dans les valeurs de "input". Pour lever le doute, tu peux inverser l'expression
if '[val]-[blk1.val]' != '-username'
en
if '-username'!='[val]-[blk1.val]'

Par contre il y a quelque chose d'autre qui ne va pas : quand "blk1" est fusionné, l’élément <dd> qui contient plusieurs [input.val;block=dl] est multiplié, et du coup le bloc "input" se retrouve avec plusieurs sections.
Elles seront utilisées comme es sections alternées, c'est le principe de TBS. C'est probablement ce que tu dois obtenir.

> qui est foireuse en fait.

Tu ne dis toujours pas ce qui ne vas pas, on ne sait pas ce que tu obtiens.

> J'ai besoin de rendre le champs input en question "disabled"

Ok, mais ce n'est pas assez complet comme description, parce qu'à cause des deux blocs "blk1" et "input" qui se marchent sur les pieds, il faut connaitre la résultat attendu sur <dd>.

By: zeflex
Date: 2011-10-04
Time: 16:11

Re: Double condition AND

Salut,

Alors pour les essais entre les deux portions différentes que tu m'as donné le résultat est bien le même mais pas celui que j'attends.
Donc pour mieux comprendre un peu le tout, je te mets ici les portions complètes :
HTML
        <form id="add_user" action="#" method="post" onsubmit="return false;" class="niceform">
            <h2>Settings</h2>
            <fieldset>
                <dl>
                <dt><label>[blk1.key;block=dl] :</label></dt>
                <dd><input type="text" name="[blk1.val;block=dl]" id="" size="50" value="[input.val;block=dl]" [input.val; if '[val]-[blk1.val]' != '-username'; then 'disabled="disabled"']/></dd>
                </dl>
            <h2>Rights</h2>
                <dl>
                <dt><label>[blk2.key;block=dl] :</label></dt>
                <dd>
                    <input type="radio" name="[blk2.key;block=dl]" id="" value="1" [radio.val; block=dl; if [val] = '1'; then 'checked="checked"'; else '']/><label class="check_label">All</label>
                    <input type="radio" name="[blk2.key;block=dl]" id="" value="2" [radio.val; block=dl; if [val] = '2'; then 'checked="checked"'; else '']/><label class="check_label">Read only</label>
                    <input type="radio" name="[blk2.key;block=dl]" id="" value="3" [radio.val; block=dl; if [val] = '3'; then 'checked="checked"'; else '']/><label class="check_label">Invisible</label>
                </dd>
                </dl>
            <dl class="submit">
                <input type="submit" name="submit" id="submit" value="Submit" />
                <input type="button" name="cancel" id="" value="Cancel" onclick="window.location.href='users.php';"/>
            </dl>
            </fieldset>     
         </form>

PHP
$txtfields = array('Username (email)'=>'username','First name'=>'fname','Last Name'=>'name','Password'=>'pwd1','Password (confirm)'=>'pwd2');
$TBS->MergeBlock('blk1',$txtfields);

$radiofields = array('Users'=>"",'Titles'=>"",'Data Import'=>"",'Report'=>"",'Admin'=>"");
$TBS->MergeBlock('blk2',$radiofields);

if ( !empty($_GET['userid']) ) {
$sql = mysql_query("SELECT * FROM users WHERE user_id = $userid");
$row = mysql_fetch_array($sql);
$TBS->MergeBlock('input',array($row['username'],$row['fname'],$row['name'],'',''));
$TBS->MergeBlock('radio',array($row['rights_users'],$row['rights_titles'],$row['rights_data_import'],$row['rights_report'],$row['rights_admin']));
} else {
$TBS->MergeBlock('input',array("","","","",""));
$TBS->MergeBlock('radio',array("","","","",""));
}

Dans le cas actuel (ce qui se passe en ce moment) : - laissons tomber les input radio -
Si il y'a une valeur présente pour $_GET['user_id'] ; je ne peux rien éditer dans les champs textes (tout est disabled)
Si il n'y a pas de valeur pour $_GET['user_id'] ; je ne peux remplir que le champs username

Ce que je voudrais faire pour ma part :
Si il y'a une valeur présente pour $_GET['user_id'] ; je ne voudrais avoir que le champs username en disabled et le reste normal.
Si il n'y a pas de valeur présente pour $_GET['user_id'] ; je voudrais avoir tout les champs textes normaux ; remplissables.

Voilà, merci à toi.
By: zeflex
Date: 2011-10-05
Time: 22:59

Re: Double condition AND

Est ce que tu as une idée d'où pourrait venir le problème ?

Merci.
By: Skrol29
Date: 2011-10-06
Time: 00:33

Re: Double condition AND

Ok, c'est plus clair.

remplace ton :
<dd><input type="text" name="[blk1.val;block=dl]" id="" size="50" value="[input.val;block=dl]" [input.val; if '[val]-[blk1.val]' != '-username'; then 'disabled="disabled"']/></dd>
par :
<dd><input type="text" name="[blk1.val]" id="" size="50" value="[input.val;block=dl]" />[blk1.val;att=input#disabled;atttrue=[champ_desactive]]</dd>

Puis ajoute avant le $TBS->MergeBlock('blk1',...) :
$TBS->MergeField('champ_desactive', (empty($_GET['userid']) ? 'z' : 'username') );



By: zeflex
Date: 2011-10-07
Time: 22:47

Re: Double condition AND

Ca fonctionne merci.

A quoi corresponds le 'z' ? Je comprends pas là ... ?
By: Skrol29
Date: 2011-10-09
Time: 11:58

Re: Double condition AND

Le 'z' correspond à n’importe quelle valeur qui n'est pas un nom de colonne valable. Ça pourrait être 'zzz', 'xxx', ...