Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 18/08/2011, 11h28   #1
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
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 :
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 :
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
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 17h39   #2
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
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 ?
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 18h07   #3
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Un extrait des tables serait plus clair que ce long discours ...

et on ne sait toujours pas : $aData['n_demande'] contient quoi ?
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 18h20   #4
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Voilà un exemple avec les trois tables concernées

Table "formulaire" (tient sur deux lignes)

id nom prenom adresse code_postal ville
1 robert jean-paul 58 routes de suippes 75000 PARIS


telephone fax email client devis contact
0396857896 0456985236 jean@gmail.fr 0 1 1



Table "demandeformulaire" (table intermédiaire)

id_formulaire id_demande
1 1
1 2
1 3




Table "demande"

id n_demande
1 promotionnel
2 site de pr&eacute;sentation
3 e-commerce
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 18h28   #5
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
et donc ... ?
quel résultat est-on censé obtenir à partir de ca ?
a quoi devrait ressembler le code html du formulaire généré ?

tu as 3 checkbox, cochée pour cet utilisateur, c'est ca ?
- checkbox cochée : promotionnel
- checkbox cochée : site de pr&eacute;sentation
- checkbox cochée : e-commerce

Donc, où est le problème ?


PS : je t'avais dit dans une autre discussion de mettre des noms explicite et sans équivoque (pour éviter les riques de confusion)
Dans tes tables, tu nommes 2 fois id
Ca ne va pas simplifier les explications ....
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 18h34   #6
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
et donc ... ?
quel résultat est-on censé obtenir à partir de ca ?
a quoi devrait ressembler le code html du formulaire généré ?
Excuse moi, je t'ai mis le résultat de toutes les tables lorsqu'un premier utilisateur valide ses données mais au départ il n'y a que la table demandeformulaire de préremplie, les autres tables mises ici se remplissent si tous les champs du formulaire sont validés sinon elles sont bien vides
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 18h37   #7
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Table "demande" : c'est la table de TOUTES les OPTIONS POSSIBLES ou pas ???

C'est à partir de cette table que tu affiches TOUTES les checkbox que tu proposes à l'utilisateur ?

Rappel :
Citation:
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 18h43   #8
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
et donc ... ?
quel résultat est-on censé obtenir à partir de ca ?
a quoi devrait ressembler le code html du formulaire généré ?

tu as 3 checkbox, cochée pour cet utilisateur, c'est ca ?
- checkbox cochée : promotionnel
- checkbox cochée : site de pr&eacute;sentation
- checkbox cochée : e-commerce

Donc, où est le problème ?


PS : je t'avais dit dans une autre discussion de mettre des noms explicite et sans équivoque (pour éviter les riques de confusion)
Dans tes tables, tu nommes 2 fois id
Ca ne va pas simplifier les explications ....
Oui les 3 checkbox sont bien cochées. Le problème vient que je souhaiterais remettre les cases des checkbox par défaut si elles sont déjà cochées même si le formulaire n'a pu être envoyé une première fois de manière à ce que l'utilisateur n'ait pas à les recocher une seconde fois. C'est facile d'obtenir ce résultat avec des radioboutons et des champs texte car chaque champ a une value mais dans mon cas les champs sont générés avec mysql_fetc_assoc.
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 18h45   #9
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
Table "demande" : c'est la table de TOUTES les OPTIONS POSSIBLES ou pas ???

C'est à partir de cette table que tu affiches TOUTES les checkbox que tu proposes à l'utilisateur ?

Rappel :
Oui c'est à partir d'elle que sont générées les checkbox "demande" du formulaire.
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 18h58   #10
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Puisqu'elle sont FORCEMENT COCHEE, tu rajoutes : checked="checked" !

Je dois être fatigué. Je ne comprends toujours pas où est ton problème.

Quand tu sauras exprimer clairement le problème ... il sera à 99% résolu.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 19h04   #11
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
Puisqu'elle sont FORCEMENT COCHEE, tu rajoutes : checked="checked" !

Je dois être fatigué. Je ne comprends toujours pas où est ton problème.
j'ai bien rajouté checked="checked" dans formulaire.php par rapport à la variable $aDemande mais le résultat est que toutes les cases sont cochées et non juste celles que l'utilisateur a effectivement coché. Autrement dit il n'y a pas de reconnaissance des cases à cocher (de "value") car aucune distinction n'est faite entre chacune d'elle.
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 19h15   #12
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
En fait si par exemple, l'utilisateur coche tous les champs du formulaire excepté le champ nom par exemple, il soumet le formulaire mais ce dernier n'est pas validé. Je veux donc que les checkbox cochées soit remises par défaut et qu'elles ne redeviennent pas vides comme c'est le cas dans mon code de manière à ce que l'utilisateur doive juste saisir son nom et le formulaire peut ainsi être validé.
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 19h39   #13
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement."
Albert Einstein, Génie (1879-1955)
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 18/08/2011, 19h45   #14
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
... l'utilisateur coche tous les champs du formulaire ...
COMMENT FABRIQUES-TU CE FORMULAIRE ?????
- comment affiches-tu les checkbox ???
- quel est le code (php)
- quel est la source générée (html)

Je suis sûr que la solution est simple, mais tu ne donnes pas les bonnes informations !
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 19h52   #15
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Voila un bout de code "perso". Voit si ca correspond à ton idée :
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
		$acti_query = "SELECT * FROM ".$TAB_CHX_ACTI_ACT." ORDER BY nom_activite ASC;";
		// liste de toutes les activites
		$acti_result = mysql_query($acti_query) or die('Erreur SQL :<br />'.$acti_query.'<br />'.mysql_error());
		$acti_nbre = mysql_num_rows($acti_result);
		$acti_i = 0;
		if ($acti_result) {
		 while ($acti_row = mysql_fetch_array($acti_result)) {
		 	$actiCheck = '';
		 	// activites du cheval : $activites est de la forme 1,3,8,13 (liste d'id des activites)
		 	if($activites!='')
		 	{
		 		$acti_query = "SELECT * FROM ".$TAB_CHX_ACTI_ACT." AS ACT WHERE id_activite=".$acti_row['id_activite']." AND id_activite IN (".$activites.");";
		 		$acti_result = mysql_query($acti_query);
		 		$acti_nombre = mysql_num_rows($acti_result);
					$actiCheck = ($acti_nombre >= 1)? ' checked="checked"' : '';
			}
?>		<input type="checkbox" id="idactivites<?php echo $acti_i; ?>" name="activites[]" value="<?php echo $acti_row['id_activite']; ?>"<?php echo $actiCheck; ?> />
		<label for="idactivites<?php echo $acti_i; ?>" style="padding:0 10px 0 0;"><?php echo $acti_row['nom_activite']; ?></label>
<?php		$acti_i++;
			// passage a la ligne
			if($acti_i==5) { echo '<br /><label class="label100">&nbsp;</label>'; }
		 }
		 mysql_free_result($acti_result);
		}
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2011, 20h25   #16
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
COMMENT FABRIQUES-TU CE FORMULAIRE ?????
- comment affiches-tu les checkbox ???
- quel est le code (php)
- quel est la source générée (html)

Je suis sûr que la solution est simple, mais tu ne donnes pas les bonnes informations !
Les checkbox sont affichées avec le code du fichier traitement.php. Ce code php est situé dans l'encart "Gestion affichage des checkbox site et demande dans formulaire et dans bdd". Il est transmis alors à formulaire.php qui recherchent dans la bdd les données existantes et les affichent.
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 23h57   #17
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
Voila un bout de code "perso". Voit si ca correspond à ton idée :
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
		$acti_query = "SELECT * FROM ".$TAB_CHX_ACTI_ACT." ORDER BY nom_activite ASC;";
		// liste de toutes les activites
		$acti_result = mysql_query($acti_query) or die('Erreur SQL :<br />'.$acti_query.'<br />'.mysql_error());
		$acti_nbre = mysql_num_rows($acti_result);
		$acti_i = 0;
		if ($acti_result) {
		 while ($acti_row = mysql_fetch_array($acti_result)) {
		 	$actiCheck = '';
		 	// activites du cheval : $activites est de la forme 1,3,8,13 (liste d'id des activites)
		 	if($activites!='')
		 	{
		 		$acti_query = "SELECT * FROM ".$TAB_CHX_ACTI_ACT." AS ACT WHERE id_activite=".$acti_row['id_activite']." AND id_activite IN (".$activites.");";
		 		$acti_result = mysql_query($acti_query);
		 		$acti_nombre = mysql_num_rows($acti_result);
					$actiCheck = ($acti_nombre >= 1)? ' checked="checked"' : '';
			}
?>		<input type="checkbox" id="idactivites<?php echo $acti_i; ?>" name="activites[]" value="<?php echo $acti_row['id_activite']; ?>"<?php echo $actiCheck; ?> />
		<label for="idactivites<?php echo $acti_i; ?>" style="padding:0 10px 0 0;"><?php echo $acti_row['nom_activite']; ?></label>
<?php		$acti_i++;
			// passage a la ligne
			if($acti_i==5) { echo '<br /><label class="label100">&nbsp;</label>'; }
		 }
		 mysql_free_result($acti_result);
		}

N'arrivant pas à faire ce que je veux, j'ai appliqué mon problème suivant l'exemple que tu m'as donné. Voici les extraits des deux fichiers pour la checkbox "demande".

Fichier traitement.php
Code :
1
2
3
4
5
6
7
8
 
 
	    	$sSQL = "SELECT n_site FROM site ORDER BY n_site" ;
			$qSite1 = mysql_query($sSQL);
			$site_nbre = mysql_num_rows($qSite1);
 
			$sSQLSite = "SELECT * FROM site  ORDER BY n_site";
			$qSite2 = mysql_query($sSQLSite);
Fichier formulaire.php

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
26
 
		<tr>
			<td width="250"><label for="site[]">Comment avez vous connu le site ?</label></td>
			<td>
			<?php
		$i = 0;
		if ($qSite1) {
		 while ($site_row = mysql_fetch_array($qSite1)) {
		 	$siteCheck = '';
		 	// activites du cheval : $activites est de la forme 1,3,8,13 (liste d'id des activites)
		 	if($sites!='')
		 	{
		 			$site_nombre = mysql_num_rows($qSite2);
					$siteCheck = ($site_nombre>=1)? ' checked="checked"' : '';
			}		
	?>
				<input type="checkbox" id="idsite<?php echo $i; ?>" name="site[]" value="<?php echo $site_row['id'];?>"<?php echo $siteCheck; ?> /> 
				<label for="idsite<?php echo $i; ?>"><?php echo $site_row['n_site']; ?></label >
			<?php $i++;
		 		}
			}
 
		 ?>		
 
			</td>
		</tr>
Le code ne marche pas pour mon cas car les cases à cocher restent vides lorsque l'envoi du formulaire est effectué mais que certaines données ne sont pas valides. Je ne comprends pas d'ailleurs tout le codage.

Pour reprendre depuis le début, mon formulaire fonctionne de la façon suivante. Soit les données sont toutes validées et le formulaire disparaît et fait place à un message de succès soit les données ne sont pas toutes valides et le formulaire reste à l'écran avec un message en dessous invitant l'utilisateur à rentrer les données non valides, les données validés restent par défaut dans le formulaire et l'utilisateur n'a donc qu'à ressaisir que les données non valides (j'ai pu appliquer ce cas à des champs de type texte et de type radiobouton mais les checkbox me posent toujours problèmes).
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 00h10   #18
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Trop drôle !
la SEULE ligne de commentaire dans le code, c'est ... la mienne !

Sérieux : met des commentaires dans ton code !!

Je suis sûr que tu te rendrais compte de l'erreur !

A quoi servent tes 2 requetes ??

ps : tu sais ce que c'est, du code source généré ? ou pas ?

Sur ce, bonne nuit, je suis fatigué ...
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/08/2011, 00h21   #19
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
Trop drôle !
la SEULE ligne de commentaire dans le code, c'est ... la mienne !

Sérieux : met des commentaires dans ton code !!

Je suis sûr que tu te rendrais compte de l'erreur !

A quoi servent tes 2 requetes ??

ps : tu sais ce que c'est, du code source généré ? ou pas ?
Pour tout te dire je suis vraiment très nul en algo. Fin je pense que tu t'en ai rendu compte Les deux requêtes servent à sélectionner tous les champs de la table 'site' de manière à compter le nombre d'enregistrement. Sinon non je ne saurais pas te dire exactement ce que signifie "code source généré".
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 10h12   #20
Invité régulier
 
Inscription : novembre 2010
Messages : 59
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 59
Points : 8
Points : 8
Citation:
Envoyé par jreaux62 Voir le message
Trop drôle !
la SEULE ligne de commentaire dans le code, c'est ... la mienne !

Sérieux : met des commentaires dans ton code !!

Je suis sûr que tu te rendrais compte de l'erreur !

A quoi servent tes 2 requetes ??

ps : tu sais ce que c'est, du code source généré ? ou pas ?

Sur ce, bonne nuit, je suis fatigué ...
Salut,

Je ne veux pas abuser, mais j'aimerais bien pouvoir résoudre mon problème. Le tout c'est de pouvoir se comprendre. Je repars de plus simple donc. Les deux parties de fichier présentées ci dessous font référence à la checkbox "demande".

Fichier formulaire.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
		<tr>
			<td width="50"><label for="demande[]">Quelles sont vos demandes de site ?</label></td>
			<td>
			<?php 
			while($aData = mysql_fetch_array($qDemande)){ 
 
				?>
				<input type="checkbox" name="demande[]" value="<?php echo $aData['id'];?>"/> <label><?php echo $aData['n_demande']; ?></label>
			<?php }?>
 
			</td>
		</tr>
Fichier traitement.php

Code :
1
2
3
 
			$sSQLDemande = "SELECT * FROM demande ORDER BY n_demande";
			$qDemande = mysql_query($sSQLDemande);
On est bien d'accord, ce code ne permet que de rechercher les valeurs inscrites dans la table demande et de créer les cases à cocher correspondantes dans le formulaire. Le code fonctionne correctement, rien à redire là dessus.

Or moi je voudrais que soit également géré le fait que ces checkbox restent cochées ou non lorsque l'utilisateur les remplit mais que certains champs restent vides à l'envoi du formulaire. Ces champs concernent des champs texte, des radioboutons (soit oui soit non) et des cases à cocher (une seule case au minimum à cocher parmi tous les choix).

Hypothèse : Je pense qu'il faut créer une requête qui permette de distinguer si la case ou les cases ont été cochées ou non et si c'est le cas elle(s) le reste(nt) lorsque le formulaire est envoyé et réaffiché avec message d'erreur puisque les données ne sont pas toutes valides.

Lorsqu'une case à cocher est créée dans le formulaire, je voudrais qu'elle soit à l'état non cochée mais que si l'utilisateur la coche dans le formulaire elle le reste au réaffichage du formulaire. Dis moi si je suis clair et si ça n'est pas le cas je te réexplique.
kenjiendo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h10.


 
 
 
 
Partenaires

Hébergement Web