IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problèmes avec checkboxes


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Par défaut Problèmes avec checkboxes
    Bonjour.

    Voilà mes "soucis".

    J'ai un formulaire comprenant des checkboxes (certains affichent d'autres via JS et les autres sont là pour des valeurs) et voici les "soucis" que ça m'amène :
    1 - Quand je vérifie le formulaire, je ne sais pas comment récupérer l'état (checked ou unchecked) pour que l'utilisateur n'est pas à les recocher en cas d'erreur.
    2 - Si le page se recharge s'il y a une erreur, mes "menus checkbox" se retrouve à nouveau masquer. Y-a-til une solution à cela ?

    Voilà un morceau de mon formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <form name="forml" method="post" action="<?php echo $_SERVER['PHP_SELF'].'?lang='.$lang; ?>">		
    [...]
    <input type="checkbox" onclick="toggle('gene')"><label>Devis conception générale</label>
    <fieldset id="gene" style="display:block;" class="cll"><legend>conception générale</legend>   
    	<input type="checkbox" name="cg1" value="logo"><label><?php echo logo; ?></label>
    	<input type="checkbox" name="cg2" value="chartegraphique"><label><?php echo charte_grap; ?></label>
    	<input type="checkbox" name="cg3" value="info" onclick="toggle('mess1')" class="cll">
    	<label>Informations</label>
    	<textarea name="mess1" cols="70" rows="6" id="mess1" style="display:none;"><?php echo $mess1 ; ?></textarea>
    </fieldset>
    [...]
    	<?php	
    	if($_POST['action'] == 'submitted') {
    	if((empty($nom ))
    	||(empty($prenom ))
    	||(empty($sujet2 ))
    	||(empty($mess ))
    	||(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$",$email)))
    	echo error;
    	else
    	{
    	$adress = "web@strix.fr";
    	$sujet = "$_POST[sujet2]";
    	$from = "From: ".$_POST[email]."\n";			$from .= "MIME-version: 1.0\n";
    	$from .= "Content-type: text/html; charset= iso-8859-1\n";
    	$message="
    	$_POST[nom] $_POST[prenom]<br>
    	$_POST[societe]<br>
    	$_POST[email]<br><br>
    	$_POST[sujet2]<br>
    	$_POST[mess]";
    	mail($adress, $sujet, $message, $from);
    	echo ok;
    	echo '<meta http-equiv="Refresh" content="0; URL=accueil.php?lang=' . $lang . '">';
    	}
    	}			
    ?>
    </form>
    Le JS si ça peut vous donnez des pistes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script type="text/javascript">
     function toggle (idDetail) {
    	var style = document.getElementById(idDetail).style;
    	style.display = (style.display == "none") ? "" : "none";
    	}
    </script>
    Merci d'avance

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut

    Pour revalider une checkbox qui était validée avant rechargement du formulaire, tu peux faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="checkbox" name="cb1" value="valeur" 
      <?php if (isset($_POST['cb1'])) echo "checked"; ?> 
    >
    Evidemment, ça n'est pas très subtil
    Pour les menus, en revanche je ne sais pas.

    Bon courage !
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre chevronné Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Par défaut
    Thanks.

    Pour les menus je sens que ça va être à coup de if, else, display & Cie...


    Bon ça avance...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <input type="checkbox"  name="paog" value="paog" <?php if (isset($_POST['paog'])) { echo "checked"; } else { echo "onclick="toggle('pao')""; } ?>><label>Devis PAO</label>
    <fieldset id="pao" <?php if (isset($_POST['paog'])) echo 'style="display:block;"'; ?> class="cll"><legend>PAO</legend>   
    	<input type="checkbox" name="pao1" value="CD-DVD" <?php if (isset($_POST['pao1'])) echo "checked"; ?>><label><?php echo jaquette_CD_DVD; ?></label>
    	<input type="checkbox" name="pao2" value="Cartes de visite" <?php if (isset($_POST['pao2'])) echo "checked"; ?>><label><?php echo Carte_de_visite; ?></label>
    	<input type="checkbox" name="pao3" value="Flyer" <?php if (isset($_POST['pao3'])) echo "checked"; ?>><label><?php echo fly; ?></label>
    	<input type="checkbox" name="pao4" value="Catalogue" <?php if (isset($_POST['pao4'])) echo "checked"; ?>><label><?php echo cat; ?></label>
    	<input type="checkbox" name="pao5" value="Affiche" <?php if (isset($_POST['pao5'])) echo "checked"; ?>><label><?php echo aff; ?></label>
    	<input type="checkbox" name="pao6" value="Infos" onclick="toggle('mess2')" class="cll">
    	<label>Informations</label>
    	<textarea name="mess2" cols="70" rows="6" id="mess2" style="display:none;"><?php echo $mess2 ; ?></textarea>
    </fieldset>
    Mais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "onclick="toggle('pao')"";
    Il me dit qu'il y a une erreur. Je pense que c'est un niveau des guillemets car quand je supprime ceux autour de pao, plus de problèmes (enfin si puisque du coup c'est JS qui marche plus ).
    Comment parer cette erreur ?

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 215
    Par défaut
    Mais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "onclick="toggle('pao')"";
    Il me dit qu'il y a une erreur. Je pense que c'est un niveau des guillemets car quand je supprime ceux autour de pao, plus de problèmes (enfin si puisque du coup c'est JS qui marche plus ).
    Comment parer cette erreur ?
    et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "onclick=\"toggle('pao')\" ";

  5. #5
    Membre chevronné Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Par défaut
    Salut.

    Je viens de le faire Et ça marche. en tout cas la requête passe mais mon menu ne reste pas ouvert après vérif...

  6. #6
    Membre chevronné Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Par défaut
    Résolu !

    En fait c'est au niveau de body onload qu'il fallait joué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <body onload="<?php if (isset($_POST['geneg'])) {echo "";}else{ echo "toggle('gene');";}?>
    	<?php if (isset($_POST['paog'])) {echo "";}else{ echo "toggle('pao');";}?>
    	<?php if (isset($_POST['webg'])) {echo "";}else{ echo "toggle('web');";}?>
    	<?php if (isset($_POST['photog'])) {echo "";}else{ echo "toggle('photo');";}?>">
    Voilà !

    A bientôt je pense

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème avec checkbox - cases cochées par défaut avec formulaire
    Par kenjiendo dans le forum PHP & Base de données
    Réponses: 65
    Dernier message: 21/08/2011, 14h36
  2. Problème avec checkbox
    Par allergique dans le forum VB.NET
    Réponses: 3
    Dernier message: 21/10/2009, 21h44
  3. problème avec checkbox
    Par srt101 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/11/2008, 20h36
  4. Problème avec CheckBox
    Par zanzan212 dans le forum Struts 1
    Réponses: 6
    Dernier message: 11/01/2008, 16h07
  5. problème avec checkbox
    Par azur_34 dans le forum Struts 1
    Réponses: 1
    Dernier message: 14/05/2007, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo