Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates > Smarty
Smarty Forum d'entraide sur le moteur de templates Smarty. Avant de poster -> FAQ Smarty et Cours Smarty
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/09/2006, 14h00   #1
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Par défaut Checkbox VS Aspirine (mal de tête)

Bonjour,

Je viens de prendre de l'aspirine, mais rien n'y fait.

J'utilise des checkbox et pour les alimenter dans mon html avec smarty, je fais comme ceci :

Code :
1
2
3
4
5
			{if $pub_doc.pub_sel_domicile=="1"}
				<input type="checkbox" name="pub_sel_domicile" value="1" title="Cocher si vous voulez un choix sur le domicile du majeur" checked="checked">
			{else}
				<input type="checkbox" name="pub_sel_domicile" value="1" title="Cocher si vous voulez un choix sur le domicile du majeur">
			{/if}
Je trouve cela très moche mais je n'ai rien trouvé de mieux.

Si je ne check rien et que je valide, j'ai une erreur dans mon php

Citation:
Notice: Undefined variable: pub_sel_domicile in
Si je check tout va bien.

Est-ce normal qu'une checkbow non checké renvoie la non existence du champ dans $_POST ?

Merci d'avance
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2006, 14h08   #2
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Salut

Plutôt bizarre comment tu organises ta condition notemment au niveau des accolades.
Tu fermes à l'ouverture et tu les ouvres à la fermeture.
Y a pas comme des inversions ?
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2006, 14h41   #3
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
C'est normal, c'est smarty qui impose cette syntaxe.
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2006, 14h52   #4
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Bon, et bien je l'apprends. désolé !
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2006, 16h53   #5
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
En dehors de l'aspect Smarty, saurais-tu pourquoi le champ "name" d'une checkbox non checké est considéré comme non existant ?
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2006, 18h04   #6
Membre émérite
 
Avatar de alain31tl
 
Alain
Inscription : novembre 2005
Messages : 897
Détails du profil
Informations personnelles :
Nom : Alain
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2005
Messages : 897
Points : 910
Points : 910
Je me trompe peut-être encore une fois n'étant pas initié à smarty mais ce qui me choque , c'est ceci :

Code :
1
2
3
4
5
6
7
 
 
$pub_doc.pub_sel_domicile
 
alors que name fait référence à 
 
pub_sel_domicile
Encore une particularité du moteur de template ?
__________________
Ce n'est pas parce que les choses sont difficiles qu'on n'ose pas les entreprendre.
C'est parce qu'on n'ose pas les entreprendre qu'elles sont difficiles.
alain31tl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2006, 18h14   #7
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Le problème c'est qu'en mettant l'html généré, cela n'a plus aucune signification, donc je mets le source tel qu'il est.

Bon en fait, si j'atais en PHP, j'aurai ceci :
Code :
$pub_doc["pub_sel_domicile"]
à la place de :

Code :
$pub_doc.pub_sel_domicile
En php cela donnerait ceci :

Code :
1
2
3
4
5
6
7
8
if ($pub_doc["pub_sel_domicile"]=="1")
{
echo '<input type="checkbox" name="pub_sel_domicile" value="1" title="Cocher si vous voulez un choix sur le domicile du majeur" checked="checked">':
}
else
{
echo '<input type="checkbox" name="pub_sel_domicile" value="1" title="Cocher si vous voulez un choix sur le domicile du majeur">';
}
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2006, 18h31   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Ta checkbox est envoyée par formulaire, par conséquent elle se trouve dans $_POST, pas dans $pub_doc (qui est, je présume, le name de ton formulaire).

Pour rappel, nous avons un super tuto qui couvre de nombreuses choses sur les formulaires : Les formulaires et PHP.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2006, 20h23   #9
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
$pub_doc est le tableau issu de ma requête mysql sur ma table de la base de données.

Donc
Code :
$pub_doc["pub_sel_domicile"]
est le champ contenant la valeur de la sélection.

J'enregistre la sélection dans la base et je peux revenir dessus plus tard pour la modifier.

J'ai 5 champs de sélection qui définissent par leur choix des traitements qui seront réalisés plus tard.

Dans l'excellent tuto que j'avais lu, je n'ai rien trouvé sur l'initialisation des checkbox en fonction de la base de données et rien n'explique pourquoi si une checkbox dans mon cas n'est pas checker, le champ du formulaire ne se retrouve pas dans $_POST.

Bon, je vais creuser, creuser, creuser, ....
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2006, 20h32   #10
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Une checkbox n'est pas transmise si elle n'est pas cochée. C'est un comportement normal et logique.
Du moins, si elle n'est pas cochée, elle n'est pas transmise avec sa valeur mais vide. Dans ton cas, cela revient au même à cause de ton test.

[Edit] Peut-être cela dépend-il du navigateur mais Firefox 1.5.0.6 n'envoie pas une checkbox non cochée.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
 
if(isset($_POST['test']))
{
    echo '-'.$_POST['test'].'-';
}
 
?>
 
<form method="post" action="<?php basename(__FILE__); ?>">
    <input type="checkbox" name="test" value="bouh" />
    <input type="submit" />
</form>
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2006, 08h17   #11
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Voila ce que j'ai fait pour ne plus avoir le problème

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
			// Initialisation des checkbox si pas checké
			if(!isset($pub_sel_destinataire))
   			{
   				$pub_sel_destinataire=0;
   			}
			if(!isset($pub_sel_dest_compte))
   			{
   				$pub_sel_dest_compte=0;
   			}
			if(!isset($pub_sel_domicile))
   			{
   				$pub_sel_domicile=0;
   			}
   			if(!isset($pub_sel_tiers))
   			{
   				$pub_sel_tiers=0;
   			}
   			if(!isset($pub_sel_tiers_compte))
   			{
   				$pub_sel_tiers_compte=0;
   			}
   			if(!isset($pub_sel_mesure))
   			{
   				$pub_sel_mesure=0;
   			}
Et cela à l'air de fonctionner.

C'est la 1ère chose que je fais juste avant la mise à jour des ma table.
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2006, 11h52   #12
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Je te recommande d'utiliser les constantes TRUE et FALSE plutôt que des valeurs numériques, car leur sémantique est plus évidente.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2006, 12h08   #13
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Donc comme je veux que les champs existe, cela doit donner ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// Initialisation des checkbox si pas checké
			if(!isset($pub_sel_destinataire))
   			{
   				$pub_sel_destinataire=true;
   			}
			if(!isset($pub_sel_dest_compte))
   			{
   				$pub_sel_dest_compte=true;
   			}
			if(!isset($pub_sel_domicile))
   			{
   				$pub_sel_domicile=true;
   			}
   			if(!isset($pub_sel_tiers))
   			{
   				$pub_sel_tiers=true;
   			}
   			if(!isset($pub_sel_tiers_compte))
   			{
   				$pub_sel_tiers_compte=true;
   			}
   			if(!isset($pub_sel_mesure))
   			{
   				$pub_sel_mesure=true;
   			}
Est-ce correct ?
__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2006, 12h18   #14
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
juste à titre d'infos, pourquoi ne pas utiliser html_checkboxes pour générer tes checkbox ?
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2006, 13h21   #15
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Oui, j'avais regardé, mais je trouvais que cela ne correspondait pas à ce que je voulais faire

Voici ce que cela donne à l'écran

__________________
Y a pas, plus on fait, plus on sait. Plus on cherche, plus on sait chercher. Maintenant quant à trouver, c'est autre chose.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h43.


 
 
 
 
Partenaires

Hébergement Web