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 :

Etat de plusieurs checkbox [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Etat de plusieurs checkbox
    bonjour, j'ai crée un formulaire où je peux soit choisir d'allumer le filtre ,dans ce cas je coche la case "activer", soit je choisis de l'éteindre et je coche la case "désactiver".

    sur la page index.html est affiché l'état du filtre et d'autres équipements, c'est soit allume ou eteind.
    Pour cela j'ai crée un table MySql nommé etats avec 3 champs Id,nom et etat

    Lorsque je coche la case "activer" du filtre (name="activfiltre"), et que celui ci était à l'origine "eteind" et que j'appuis sur le bouton valider , je suis redirigé vers la page traitement.php, qui me redirige automatiquement au bout de 5s vers la page index.html.

    Voici le code de la page index.html:
    Code html : 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
    94
    95
    96
    97
    <!DOCTYPE HTML>
    <html>
    	<head>          
        <meta charset="utf-16BE" />
        <link rel="htmlsheet" href="traitement.html" />
    	<link rel="stylesheet" href="Le site fait par larduino.css" />
    	<link rel="phpsheet" href="donnees.html" />
    	<title>AquaSur</title>
     
    	</head>
     
    	<body>
    	<h1>Mon Aquarium</h1>
    	<h2>Mes Informations sur mon Aquarium</h2>
    	<section 1>
    	<p>ci-contre sont affichées les différentes informations relévées par les capteurs de l'aquarium</p>
    	<table>
    		<tr>
    			<th>Capteurs</th>
    			<th>Température</th>
    			<th>Luminosité</th>
    		</tr>
    		<tr>
    			<td>Valeurs des capteurs</td>
    			<td>  <?php  
                      include 'affichagedonnees.php'; 
                                      echo $temperature;
                      ?>
                </td>
    			<td>  <?php 
                                  include 'affichagedonnees.php';
                      echo $lumi;
                      ?> 
    			   </td>
    	    </tr>
    	</table>
    	</section 1>
    	<section 2>
    	<h2> Ici, il est possible d'allumer ou d'éteindre les différents équipements</h2>
    		<form method="post" action="traitement.php" >
    			<table>
    				<tr>
    					<td></td>
    					<td></td>
    					<td>Activer</td>
    				    <td>désactiver</td>
    				<tr> 
    					<td>état du Filtre</td>
    					<td>  <?php  
                              include 'affichagedonnees.php'; 
                                              echo $filtre;
                              ?>
    			        </td>
    					<td><input type="checkbox" name="activfiltre" id="activfiltre" /><br /></td>
    					<td><input type="checkbox" name="desactivfiltre" id="desactivfiltre" /><br /></td>
    				</tr>
    				<tr>
    					<td>état du chauffage</td>
    					<td>  <?php  
                              include 'affichagedonnees.php'; 
                                              echo $chauffage;
                              ?>
    					</td>
    					<td><input type="checkbox" name="activchauffage" id="activchauffage" /><br /></td>
    					<td><input type="checkbox" name="desactivchauffage" id="desactivchauffage" /><br /></td>
    				</tr>
    				<tr>
    					<td>état de la lumière</td>
    					<td>  <?php  
                              include 'affichagedonnees.php'; 
                                              echo $lampe;
                              ?>
    					</td>
    					<td><input type="checkbox" name="activlumiere" id="activlumiere" /><br /></td>
    					<td><input type="checkbox" name="desactivlumiere" id="desactivlumiere" /><br /></td>
    				</tr>
    			</table>
    			<br><input type="submit" value="Envoyer" /></br>
    		</form>
    	<h2> Ici,les différentes options</h2>
    	<form method="post" action="traitement.php" enctype="multipart/form-data">
    		<table>
    		<tr>
    			<td>nombre d'heures de luminosité par jour</td>
    			<td><input type="number" min="0"max="24" step="1" /></td>
    		</tr>
    		<tr>
    			<td>nombre d'heures de filtrage par jour</td>
    			<td><input type="number" min="0"max="24" step="1" /></td>
    		</tr>
    	    </table>
    	    <br><input type="submit" value="Envoyer" /></br>
    	</form>
     
    	</section 2>
        </body>
    </html>

    Voici celui de la page 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
    <?php
    $activfiltre= (isset($_POST['activfiltre'])) ? 1 : 0;
    $desactivfiltre= (isset($_POST['desactivfiltre'])) ? 1 : 0;
     
     
    		if ($activfiltre=1)
    		{
    		include 'connectbsd.php';
    		$sql = mysql_query("UPDATE etats SET etat = 'allume' WHERE id =1;");
    		mysql_close();
    		}
    		elseif ($desactfiltre=1) 
    		{
    		include 'connectbsd.php';
    		$sql = mysql_query("UPDATE etats SET etat = 'eteind' WHERE id =1;");
    		mysql_close();
    		}
    		else
    		{
    		}
     
     
    header ("Refresh: 5;URL=index.html");
     
    ?>
    Or, une fois que la page index.html m'est réaffichée, et l'état du filtre "allumé",
    lorsque je coche la case désactiver (name="desactivfiltre") pour le filtre, la page traitement est bien lancée , je suis a nouveau revenu sur la page index.html MAIS là il n'y a aucun changement, l'état du filtre reste "eteind" .
    Même dans la base MySql, il n'y a aucun changement.

    note: il manque une partie du code dans traitement.php pour les autres checkbox car je ne l'ai pas encore fait les premiers essais ne marchant pas.

    Voilà, merci d'avance pour votre aide.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Je suis pas sûr d'avoir tout compris à ton problème, mais dans ta logique, avec l'utilisation de checkbox, ton filtre peut être à la fois activé et désactivé, ce qui n'est pas logique et qui est peut-être la cause de ton problème.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    bonjour et merci de votre réponse.

    En effet si les deux cases sont cochées, le problème se pose.
    Mais, pour l'instant je n'en coche qu'une seule à la fois.

    Si mon problème est résolu, je ferais la suite du programme, d'ailleurs si vous avez en plus des idées concernant une structure de base pour faire le programme, je suis prenant.

    Pour l'instant, j'en suis toujours à mon problème de départ, auquel je n'ai toujours pas trouvé de solution.
    Merci d'avance pour vos réponses.

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Bonjour,

    effectivement si tu as des options qui s'excluent mutuellement (lumière allumé/lumière éteinte), mieux vaut utiliser une seule checkbox (cochée->allumée/décochée->éteinte) ou des boutons de radio à la place de deux checkboxs. Moi, avant toute chose, je réécrirai mon code html, puis PHP, pour prendre ça en compte.

    Maintenant, pour solutionner ton problème présent et tes problèmes futurs en général, je te conseille :
    - de procéder à des affichages du contenu de tes variables avec, par exemple, un var_dump($_POST); au début de traitement.php pour vérifier que ton formulaire html à bien envoyé les informations escomptées. Comme ça tu verras déjà quelles sont les variables qui ont pu atteindre ton script php et ce qu'elles contiennent.
    - de tester tes if en plaçant judicieusement un echo 'pouet!</br>'; qui me semble tout indiqué.
    - de vérifier le contenu de ses variables à des points stratégiques (avant de les transmettre à une requête, avant un (if/while/do while) qui cloche, dans une fonction...), avec var_dump($var); ou un simple echo $var;.
    - de ne pas hésiter à faire machine arrière, voire à tout recommencer quand on a fait une erreur de conception, car continuer dans ce cas est une pure perte de temps et d'énergie.

    ce que j'ai remarqué dans le code :
    html
    -enctype = "multipart/form-data" n'est utile que pour l'upload de fichier à partir d'un formulaire
    -les balises <input .../> n'ont pas d'attribut name
    php
    - demandes toi ce que font précisément les lignes 2 et 3
    - lignes 6 et 12: comment tester une égalité?

    Bon courage.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour, merci de votre réponse.
    Je tiens en compte vos conseils qui me seront utiles pour la suite.
    Depuis, une personne m'a aidé et je suis en train de réaliser un autre code plus complet et correct en utilisant plusieurs listes déroulantes notamment.
    Pour ceux qui auraient le même problème que j'ai évoqué au début, j'ai trouvé une solution, cette ligne comporte une erreur:En fait, ici, j'attribue la valeur 1 à la variable récupérée du formulaire alors que j'était censé la lire et la tester.
    Voici ce qu'il faudrait utiliser, à mon avis: Ou, autre solution que j'ai testé et qui marche, c'est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( isset($_POST['activfiltre']) )
    Car en effet si la case n'est pas coché, aucune valeur ne sera transmise.
    Donc, en faisant ce test, si la case est cochée, c'est vérifier sinon ce n'est pas vérifié.

    N'hésitez surtout pas à me corriger si j'ai ecrit des erreurs.
    Merci encore pour vos réponses.

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

Discussions similaires

  1. [Tableaux] Envoyer plusieurs checkboxes
    Par jfjava2002 dans le forum Langage
    Réponses: 8
    Dernier message: 14/03/2006, 18h06
  2. récupérer données de plusieurs checkbox
    Par themis121 dans le forum Langage
    Réponses: 46
    Dernier message: 28/11/2005, 16h30
  3. Comment cocher/décocher plusieurs "checkbox"?
    Par Crazynoss dans le forum ASP
    Réponses: 2
    Dernier message: 15/05/2005, 23h38
  4. Cochage de plusieurs checkbox
    Par licorne dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 09/03/2005, 10h30
  5. Réponses: 3
    Dernier message: 27/10/2004, 23h15

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