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

PHP & Base de données Discussion :

Problème avec checkbox - cases cochées par défaut avec formulaire


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 93
    Par défaut Problème avec checkbox - cases cochées par défaut avec formulaire
    Bonjour à tous,

    J'aimerais que les cases de mes checkbox restent cochées même si le formulaire n'a pas été complètement validé de manière à ce que l'utilisateur n'ait pas à les cocher une seconde fois.

    J'ai appliqué la fonction mysql_fetch_assoc qui permet qu'à chaque nouvelle entrée dans la base de donnée une nouvelle case dans la checkbox se créée.

    Par exemple, si je rentre dans ma table "demande" les attributs "id" = "1" et "nom" = "site internet", le formulaire créé automatiquement la case à cocher avec le nom correspondant.

    Pour réaliser ce que je veux il me semble nécessaire de mettre une "value" pour chaque case de la checkbox de manière à pouvoir les distinguer chacune mais pour mon cas on ne peut attribuer de value qu'à une seule ligne (voir fichier formulaire.php ci dessous). Je pense pouvoir résoudre mon problème avec une boucle "for" mais je ne sais pas comment l'intégrer à la fonction mysql_fetc_assoc.

    Voici des extraits de mes deux fichiers

    Fichier formulaire.php

    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
     
    	<fieldset style="margin:25px">
    	<legend><b>Vos informations</b></legend>
    	<table>
     
    		<tr>
    			<td width="250"><label for="site[]">Comment avez vous connu le site ?</label></td>
    			<td>
    			<?php while($aData = mysql_fetch_assoc($qSite)){ ?>
    				<input type="checkbox" name="site[]" value="<?php echo $aData['id']; ?>" /> <label><?php echo $aData['n_site']; ?></label>
    			<?php } 
    				if (empty($aSite)) {
    				echo "  => Veuillez préciser comment vous avez connu le site!"."</br>";
    			}?>
    			</td>
    		</tr>
     
    		<tr>
    			<td width="250"><label for="demande[]">Quelles sont vos demandes de site ?</label></td>
    			<td>
    			<?php while($aData = mysql_fetch_assoc($qDemande)){ ?>
    				<input type="checkbox" name="demande[]" value="<?php echo $aData['id']; ?>" <?php if(!empty($aDemande)) echo 'checked="checked"'; ?>/> <label><?php echo $aData['n_demande']; ?></label>
    			</td>
    			<?php } 
    				if (empty($aDemande)) {
    				echo "</br>"."  => Veuillez préciser votre demande de site!"."</br>";
    			}?>
    		</tr>
     
    	</table>
    	</fieldset>
    Fichier traitement.php

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    <?php
     
    //------------------------------------------------------
    		//Déclaration des variables à poster dans le formulaire
     
     
    		$aSite=$_POST['site'];
    			if(isset($aSite)){array_map("htmlentities", $aSite);}
     
    		$aDemande=$_POST['demande'];
    			if(isset($aDemande)){array_map("htmlentities", $aDemande);}
     
    		// Traitement des données du formulaire
     
    	/**
         * 
         * Si formulaire posté Alors
         * 		Si données valide Alors
         * 			enregistrer en base de donnée et dire que ça marche uniquement le message, le formulaire doit disparaitre ! 
         * 		Sinon
         * 			Afficher le formulaire avec les valeurs que l'utilisateur a inscrite + message que tous les champs ne sont pas valides
         * 		Fin Si
         * Fin Si
         * 
         */
     
     
    			if(isset($_POST['valider'])){
     
    			if (isset($aSite) && isset($aDemande)){
     
    				$etat='envoi'; // envoi des données à la bdd avec message de validation
    			}
     
    //----------------------------------------------------------------------------
    			// Gestion affichage des checkbox site et demande dans formulaire et dans bdd
     
    				//site
     
    	    	$sSQL = "SELECT n_site FROM site ORDER BY n_site" ;
    			$qSite = mysql_query($sSQL);
     
     
    			$sSQLSite = "SELECT * FROM site ORDER BY n_site";
    			$qSite = mysql_query($sSQLSite);
     
     
    				//demande
     
        		$sSQL = "SELECT n_demande FROM demande ORDER BY n_demande" ;
    			$qDemande = mysql_query($sSQL);
     
    			$sSQLDemande = "SELECT * FROM demande ORDER BY n_demande";
    			$qDemande = mysql_query($sSQLDemande);
     
    //----------------------------------------------------------------------------
    			// Cas état envoi
     
    	if($etat=='envoi'){ // si toutes les données sont remplies et valides
           //Requetes pour insertion des données dans la base si elles sont toutes valides
     
    		    $sql = "INSERT INTO formulaire(id, nom, prenom, adresse, code_postal, ville, telephone, fax, email, devis, contact) 
    	    	VALUES('','$nom','$prenom','$adresse','$code_postal','$ville','$telephone','$fax','$email', '$devis', '$contact')";
    	   		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
     
    		  	$id_formulaire = mysql_insert_id();// on récupère l'id_formulaire qui vient d'être généré
     
     
    		if(isset($aSite)){
    			foreach($aSite as $n_site){
     
    	        $sql = "INSERT INTO siteformulaire(id_formulaire, id_site) VALUES ('$id_formulaire','$n_site')";
    	        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    				}
    			}
     
    		if(isset($aDemande)){
    			foreach($aDemande as $n_demande){
     
    			$sql = "INSERT INTO demandeformulaire(id_formulaire, id_demande) VALUES ('$id_formulaire','$n_demande')";
    	        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    				}
    			}
     
              echo "les données ont été envoyées à la base de données";
              ?></br><a href="index.php?page=p_accueil.php">Revenir à l'accueil</a><?php
     
              }
     
    	}
     
    ?>
    Remarque : j'ai complété le code concernant la deuxième checkbox de formulaire.php (avec $aDemande) sans pouvoir dégager le moindre résultat si ce n'est que lorsque l'on coche par exemple une case ou deux sur les trois présentes, toutes sont finalement cochées par défaut lorsque l'on souhaite valider le formulaire. Par contre, j'ai laissé telle qu'elle la première checkbox de formulaire.php (avec $aSite).

    N'hésitez pas à me dire ce que vous en pensez car je ne suis pas sûr que cela soit réalisable qu'avec php. Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tes explications sont trop compliquées ...
    donne un exemple simple.

    1/ comment fabriques-tu la liste des checkbox ?
    -> d'une table de la Bd ? nom + structure + contenu (exemple de contenu) ?

    2/ pour chaque utilisateur, tu enregistre quoi ? $aData['n_demande'] contient quoi ?

Discussions similaires

  1. Problème d'encodage par défaut avec Eclipse/Pydev
    Par Tryph dans le forum Eclipse
    Réponses: 2
    Dernier message: 12/07/2014, 23h48
  2. Problème de test par défaut avec Maven
    Par Smix007 dans le forum Maven
    Réponses: 10
    Dernier message: 12/05/2012, 05h05
  3. Réponses: 1
    Dernier message: 27/01/2010, 12h00
  4. Bouton par défaut avec MessageDlg ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/04/2005, 19h28
  5. Réponses: 9
    Dernier message: 12/01/2005, 17h00

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