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 :

formulaire avec Checkbox phpMysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Janvier 2014
    Messages : 40
    Points : 26
    Points
    26
    Par défaut formulaire avec Checkbox phpMysql
    Bonjour,

    J'ai une checkbox dans un 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
    //formulaire d'ajout d'un lment	   
           echo '<form method="POST" action="ssmenu_enr.php" >' ;
    	   echo '<h2 id="ancre_ajout"><u><br />Ajout d\'un sous-menu</u></h2><br /><br />';
           if (isset($_SESSION['mess']) && ($_SESSION['mess']!=""))
           {
               echo '<p class="erreur">'.$_SESSION['mess'].'</p>' ;
           } 
           echo '<div class="data">' ;
    	   echo '<center>N&deg; d\'ordre:&nbsp;&nbsp;<input type="text" name="ordre" id="ordre" size=15/><span class="donnee_obligatoire">&nbsp;&nbsp;&nbsp;</span></center><br>' ;  
    	   $req="select * from menu order by NomMenu asc";
           $exec=mysql_query($req);
     
    	   echo '<br><br>Nom du menu: <select name="menu" size=1>';
    	   while ($ligne=mysql_fetch_array($exec))
    	   {
    			echo '<option value="'.$ligne['NumMenu'].'">'.$ligne['NomMenu'];   
    	   }
    	   echo '</select>';
    	   echo '<center>Nom du sous-menu:&nbsp;&nbsp;<input type="text" name="nomSS" id="nomSS" size=15/><span class="donnee_obligatoire">&nbsp;&nbsp;&nbsp;</span></center><br>' ;
     
    	   echo 'Visible que pour les adherents ? <INPUT type="checkbox" name="visible" value="0">'; // Checkbox //
     
    	   echo '</div><br>' ;
           echo '<p><center><input type="submit" class="submit"  value="&nbsp;&nbsp;Valider" />' ;
           echo '<input type="reset" class="reset" value="Effacer" /> </center> </p>' ;
    	   echo '<p class="droite"><span class="donnee_obligatoire">&nbsp;&nbsp;&nbsp;</span><span class="saisie_ob">saisie obligatoire</span></p>' ;
           echo '</form>' ;
    Je veux que quand la case n'est pas cochée, elle ne renvoie pas "1" dans la base de données, mais qu'elle renvoie "0", et vise-versa.

    Maintenant le code 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
    <?php
    include "connexion.php";
    $_SESSION['mess'] = '';
    $_ordre = htmlentities($_POST["ordre"]);
    $_menu = htmlentities($_POST["menu"]);
    $_nomSS = htmlentities($_POST["nomSS"]);
    $_visible = htmlentities($_POST["visible"]);
     
    if (!isset($_ordre) || !isset($_menu) || !isset($_nomSS) || !isset($_POST['visible']))
    {
        echo'
        <script>
            document.location="javascript:history.back()";
        </script>';
    }
    else
    {
    		$req="select max(NumSSMenu) as Id from ss_menu where NumMenu=$_menu";
    		$exec=mysql_query($req);
    		if (mysql_num_rows($exec)==0)
    		{
    			$num=1;
    			}
    			else
    			{
    			$ligne=mysql_fetch_array($exec);
    			$num=$ligne['Id'] + 1;
    		}
            $sql="insert into ss_menu (NumSSMenu, NumMenu, NomSSMenu, NumOrdreSS, visibleAdherents) values ('$num', '$_menu', '$_nomSS', '$_ordre', '$_visible')";
    		mysql_query($sql);
            header ("Location: modif_ssmenu.php");
    }
    ?>
    Je bloque, comment faire ? Quel est le problème, pourquoi rien n'est renvoyé dans la base de données ?

    Cordialement,
    lizeal

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    'value' est la valeur qui te sera renvoyé si ta case est cochée => si coché alors 0 pour toi.

    Et tu peux regarder si le parametre est present sinon mettre une valeur par defaut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (empty($_POST["visible"])){
        $visible = false; // ou 0 ou ce que tu veux.
    }
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Janvier 2014
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    ok merci donc ma checkbox ne renverra 1 si elle est cochée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Visible que pour les adherents ? <INPUT type="checkbox" name="visible" value="1">'; // Checkbox //
    Par contre, comment j'imbrique là-dedans le test pour savoir si le paramètre est à défaut ? Je le rajoute dans les isset ? Est-ce que c'est possible de faire un " et si" ?
    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
    if (!isset($_ordre) || !isset($_menu) || !isset($_nomSS))
    {
        echo'
        <script>
            document.location="javascript:history.back()";
        </script>';
    }
    else
    {
    		$req="select max(NumSSMenu) as Id from ss_menu where NumMenu=$_menu";
    		$exec=mysql_query($req);
    		if (mysql_num_rows($exec)==0)
    		{
    			$num=1;
    			}
    			else
    			{
    			$ligne=mysql_fetch_array($exec);
    			$num=$ligne['Id'] + 1;
    		}
            $sql="insert into ss_menu (NumSSMenu, NumMenu, NomSSMenu, NumOrdreSS, visibleAdherents) values ('$num', '$_menu', '$_nomSS', '$_ordre', '$_visible')";
    		mysql_query($sql);
            header ("Location: modif_ssmenu.php");
    }

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 350
    Points : 507
    Points
    507
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (isset($_POST["visible"]){
         $_visible = htmlentities($_POST["visible"]);
    } else {
          $_visible = 0;
    }
    un if peut comporter ce que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if ((($condition1 || $condition2) AND $condition3) || ($condition1 AND !$condition4)){
     ...
    } else if ($condition1){
    ...
    }
    Marcuscircus : La seule différence entre un rêve et sa réalisation, c'est l'envie

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Janvier 2014
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Ah effectivement !

    J'étais convaincue qu'il fallait que le code soit compris ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!isset($_ordre) || !isset($_menu) || !isset($_nomSS))
    Alors qu'en fait ce n'était pas nécessaire. Je pensais que le code ne comprendrait pas que la checkbox et le reste du formulaire sont liés et doivent se mettre ou non dans la base de données.

    Un grand merci, je garde ces échanges pour la prochaine fois où je me donnerait du mal avec une checkbox.

    Cordialement, lizeal

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

Discussions similaires

  1. Problème d'envoi formulaire avec checkboxes
    Par neospirit dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2011, 11h14
  2. problème formulaire avec checkbox
    Par toinou62 dans le forum Langage
    Réponses: 1
    Dernier message: 30/09/2007, 14h07
  3. [MySQL] Modifier un formulaire avec checkbox
    Par isa150183 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/01/2007, 21h32
  4. Timeout sur POST formulaire avec checkbox
    Par shyangel dans le forum Langage
    Réponses: 16
    Dernier message: 11/05/2006, 12h59
  5. Pb validation formulaire avec checkbox
    Par wolfe dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/12/2005, 08h50

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