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 de case à cocher [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Par défaut Problème de case à cocher
    bonjour,
    je suis une débutante en PHP,j'ai travail sur mon première application PHPMysql.
    j'ai un tableau qui affiche la liste des produits stock,l'utilisateur doit cocher le nombre de produit qu'il veut,une fois l'utilisateur coche ses choix,les produits choisis doivent être supprimer de la table "produit",et j'arrive pas à trouver le code correct,parce que le nombre de cases cochés varies'il vous plait aide moi,et merci beaucoup d'avance

  2. #2
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Salut!

    Perso, voici un exemple de code que j'utilise pour un formulaire avec des checkboxes :
    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
    <?php 
    $liste=Array('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche'); 
    $cnt=count($liste); 
    $select=@$_POST['select']; 
    $ret=''; 
     
     
    if(isset($_POST['valider'])){ 
        for($x=0;$x<$cnt;$x++) 
           if(isset($select[$x])) 
              $ret.=$liste[$x].'<br/>'; 
    }
     
     
    $ret.='<br/><form method="post">'; 
    for($x=0;$x<$cnt;$x++){ 
       $ret.='<input type="checkbox" name="select['.$x.']"'; 
       if(isset($select[$x])) $ret.=' checked'; 
       $ret.='/>'.$liste[$x].'<br/>'; 
    } 
    $ret.='<br/>'.
          '<input type="submit" name="valider" value=" ENVOYER "/>'. 
          '</form>'; 
    echo $ret; 
     
    ?>
    Dans ton cas, je pense qu'il faut que tu récupères le nombre total de case avec la fonction Count.
    En supposant que tes cases sont nommées "select", cela te donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cnt=count(@$_POST['select']);
    En parcourant le tableau $_POST['select'], tu peux savoir quelles sont les cases cochées ou non.
    Cela donne finalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $cnt=count(@$_POST['select']); 
    if($cnt>0)
      for($x=0;$x<$cnt;$x++) 
        if(isset($_POST['select'][$x]))
          echo echo "Case n°$x cochée.<br>";
        else
          echo echo "Case n°$x non cochée.<br>";
    Maintenant, au lieu d'afficher du texte, il faut exécuter des requêtes SQL...

    Si tu as des questions, n'hésite pas, à+

    [EDIT]
    Je suis tombé sur ce sujet qui pourrait t'intéresser
    http://www.developpez.net/forums/sho...d.php?t=103053

  3. #3
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Par défaut problème de case à cocher
    bonjour,
    merci beaucoup pour ton aide,j'ai t'utilisé le code que tu m'a donné,au lieu de echo ,j'ai met ma requête,je vous s'explique d'abord ma requête:une fois l'utilisateur coche un checkbox,je veux que le produit correspand au code coché ,prend l'état "donné"
    REMARQUE:
    'ETAT' est un champs de la table "produit",il prend soit la valeur "en stock" ou "donné"
    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
       $cnt=count(@$_POST['select']);  
    if($cnt>0)
      for($x=0;$x<$cnt;$x++) 
        if(isset($_POST['select'][$x]))
       $req="UPDATE produit SET ETAT =="donnee" WHERE (ID_PRODUIT ='".$_POST['select'][$x]."')"; 
        else
          echo echo "Case n°$x non cochée.<br>";
       ?>
    il m'affiche comme message d'erreur:
    Parse error: parse error in c:\program files\easyphp1-8\www\geststock2\bon de sortie\sortiestock.php on line 83
    la ligne 83 correspand à la ligne de UPDATE

  4. #4
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Dis donc, tu débutes vraiment ! Tu n'as pas trouvé quelque chose de plus facile pour commencer ?
    Quel niveau as-tu ? Quelle est ta formation actuellement ?

    Tu n'as pas l'air d'avoir bien compris mes explications. Les cases à cocher possèdent un nom. Dans mon exemple, les cases à cocher sont nommées avec la variable "select", comme j'aurais pu choisir un nom constant comme "mescases". Bref, ton formulaire possèdent donc des cases à cocher qui ont déjà leur nom. Il faut absolument connaître ce nom pour accèder à l'état de tes cases et c'est ce nom que tu utiliseras dans ton code, et pas "select"... En résumé, la 1ère chose à faire est de trouver le nom de tes propres cases à cocher de ta page. Pour cela, il suffit de regarder la déclaration des cases dans le code HTML de ta page. Par exemple, le nom de la case à cocher est en rouge dans le code HTML suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="macase">
    Avec ce nom, je peux maintenant récupérer l'état de la case avec le code PHP suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_POST['macase']))
      echo "La case nommée «macase» est cochée.<br>";
    else
      echo "La case nommée «macase» n'est pas cochée.<br>";
    Quand tu auras déjà trouvé le nom de tes propres cases à cocher, je t'expliquerai la suite des erreurs que tu as commise (et oui, il y en a d'autres!)

  5. #5
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Par défaut problème de case à cocher
    bonjour,
    moi je suis une éléve ingénieur,pour les cases à cocher,je donne le nom 'select' ,et je veux exécuter une requête qui permet d'enregistrer le code des produits cochés,s'il vous plait aide moi c très urgent
    merci beacoup

  6. #6
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Si j'ai bien compris, tu as programmé ton formulaire en te servant de mon code d'exemple... Voici donc la solution à ton problème. En rouge, le code que j'ai ajouté pour enregistrer l'état des cases dans la base de données et en vert, quelques commentaires qui t'aideront à comprendre le code.
    La fonction "MyOpenBase" ouvre la bdd.
    La fonction "MyCloseBase" pour fermer la bdd.
    La fonction "MySQLRequest" exécute la requête.
    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
    <?php 
    
    // Ajoût de l'unité contenant les 3 fonctions de la bdd
    Require_once('bdd.php');
    
    $liste=Array('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche'); 
    $cnt=count($liste); 
    $select=@$_POST['select']; 
    $ret=''; 
        
    //========================================
    // Traitement du formulaire HTML
    //========================================
    if(isset($_POST['valider'])){ 
    
        // Ouverture de la base de données
        OpenMyBase();
    
        for($x=0;$x<$cnt;$x++) {
    
           // Préparation de la requête ("Donnée" = case cochée)
           if(isset($select[$x]))
              $sql="UPDATE produit SET ETAT='donnee' WHERE ID_PRODUIT='$x'"; 
           else
              $sql="UPDATE produit SET ETAT='en stock' WHERE ID_PRODUIT='$x'"; 
    
           // Exécution de la requête $sql
           MySQLRequest($sql);
        } 
    
        // Fermeture de la base de données
        CloseMyBase();   
    }
    
    
    //========================================
    // Affichage du formulaire HTML
    //========================================
    $ret.='<br/><form method="post">'; 
    for($x=0;$x<$cnt;$x++){ 
       $ret.='<input type="checkbox" name="select['.$x.']"'; 
       if(isset($select[$x])) $ret.=' checked'; 
       $ret.='/>'.$liste[$x].'<br/>'; 
    } 
    $ret.='<br/>'.
          '<input type="submit" name="valider" value=" ENVOYER "/>'. 
          '</form>'; 
    echo $ret; 
    
    ?>
    Attention a bien faire la différence entre minuscule et majuscule car MySQL est sensible à la case.

    Il ne reste plus qu'à adapter cet exemple à ta propre page.
    Bon courage, à+

  7. #7
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Je te donne la solution et si tu as des questions, n'hésite pas.
    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
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    <?php 
    require("../conn/conn.php");
     
    //========================================
    // Traitement du formulaire HTML
    // Mise à jour des données
    //========================================
    $sql="SELECT * FROM article";
    $p=mysql_query($sql)or die($sql.' - <br/>'.mysql_error());
     
    if(isset($_POST['Submit1']))
    { 
      while($v=mysql_fetch_array($r))
      {
        $etat='en stock';
        if(isset(@$_POST['macase'.$v['ID_produit']])) $etat='donnee';
        $sql="UPDATE produit SET ETAT='$etat' WHERE ID_produit='".$v['ID_produit']."'";  
        mysql_query($sql)or die($sql.' - <br/>'.mysql_error());
      }
    }    
     
    //========================================
    // Affichage du formulaire HTML
    //========================================
    $sql="SELECT * FROM article";
    $p=mysql_query($sql)or die($sql.' - <br/>'.mysql_error());
    ?>
    <div align="center">
      <form method="post">
        <p>&nbsp;</p>
     
     
        <table width="320" border="1">
          <tr>
            <th bgcolor="#CC9966" scope="row">
             <div align="left">Identifiant_article
              <input name="seuil" type="hidden" id="seuil" 
               value="<? echo @$_GET['seuil']; ?>" />
             </div>
            </th>
            <td bgcolor="#CC9966">
             <div align="left">
              <input name="id_article" type="text" id="id_article" 
               value="<? echo @$_GET['id']; ?>" />
             </div>
            </td>
          </tr>
          <tr>
            <th bgcolor="#CC9966" scope="row">Stock</th>
            <td bgcolor="#CC9966">
             <input name="stock" type="text" id="stock" 
              value="<? echo @$_GET['stock']; ?>" />
            </td>
          </tr>      
          <tr>
            <th bgcolor="#CC9966" scope="row">
             <div align="left">Quantit&eacute; demand&eacute;e</div></th>
             <td bgcolor="#CC9966"><div align="left">
               <input name="date_sortie" type="text" id="date_sortie" />
             </div></td>
          </tr>
          <tr>
            <th bgcolor="#CC9966" scope="row">
             <div align="left">Quantit&eacute; donn&eacute;e</div></th>
             <td bgcolor="#CC9966"><div align="left">
                 <input name="qnt" type="text" id="qnt" />
             </div></td>
          </tr>
        </table>
     
     
        <table width="279" border="0">
          <tr>
            <th width="88" height="45" scope="col"><p>
             <input type="submit" name="Submit1" value="Valider" /></p></th>
            <th width="94" scope="col">
             <input type="submit" name="Submit2" value="Annuler" /></th>
            <th width="83" scope="col">
             <input type="submit" name="Submit3" value="Quitter   " /></th>
          </tr>
        </table>
        <p>&nbsp;</p>
     
     
        <table width="60%" border="1" align="center">
          <tr>
            <th width="16%" scope="col">ID_produit </th>
            <th width="40%" scope="col">Desg_produit</th>
            <th width="44%" scope="col">prix</th>
          </tr>
          <?
          while($v=mysql_fetch_array($r))
          { ?>
          <tr>
            <th scope="row"><? echo $v['ID_produit']; ?></th>
            <td><? echo $v['Desg_produit']; ?></td>
            <td><? echo $v['prix']; ?></td>
            <td>
             <input type="checkbox"
              name="<? echo 'macase'.$v['ID_produit']; ?>" 
              id="<? echo 'macase'.$v['ID_produit']; ?>" 
              <? if($v['ETAT']=='donnee') echo ' checked'; ?>
             >
            </td>
          </tr>
          <?
          }
          ?>   
        </table>
     
     
      </form>
    </div>
    Si le traitement du formulaire s'effectue dans un autre script (sortie_trait.php), il faudra le préciser dans la propriété "action" de la balise form et déplacer le code de traitement de ce formulaire dans le script "sortie_trait.php".
    Pour t'en sortir, garde toujours à l'esprit ce schéma :
    dans un formulaire, il ya 2 parties, le traitement et l'affichage :
    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
    <?php 
     
    //========================================
    // Traitement du formulaire HTML
    //========================================
    if(isset($_POST['Submit1'])){ 
      .
      .
    }
     
     
    //========================================
    // Affichage du formulaire HTML
    //========================================
    ?>
    <form method="post">
      .
      <input type="submit" name="Submit1" id="Submit1" value="VALIDER">
    </form>
    N'oublis pas : Le code est sensible à la case.
    à+

  8. #8
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Par défaut encore case à cocher
    bonjour,
    je pense maintenant que j'ai copié ton code tel qu'il est,et malheuresement j'ai toujours un problème, voici mon code que j'ai met dans la page "sortie_trait"
    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
    <?php
    require("../conn/conn.php");
    $sql="SELECT * FROM article";
    $p=mysql_query($sql)or die($sql.' - <br/>'.mysql_error());
     
    if(isset($_POST['Submit1']))
    { 
      while($v=mysql_fetch_array($r))
      {
        $etat='en stock';
        if(isset(@$_POST['macase'.$v['ID_PRODUIT']])) $etat='donnee';
        $sql="UPDATE PRODUIT SET ETAT='$etat' WHERE ID_PRODUIT ='".$v['ID_PRODUIT']."'";  
        mysql_query($sql)or die($sql.' - <br/>'.mysql_error());
      }
    }    
    ?>
    et voici mon code que j'ai met dans la page qui contient le 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
    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
    <?php
    require("../conn/conn.php");
    $p=mysql_query("select * from article");
    ?>
     
    <div align="center">
      <form id="form1" name="form1" method="post" action="sortie_trait.php">
        <p>&nbsp;</p>
        <table width="320" border="1">
          <tr>
            <th bgcolor="#CC9966" scope="row"><div align="left">Identifiant_article
              <input name="seuil" type="hidden" id="seuil" value="<? echo $_GET['seuil']; ?>" />
            </div></th>
            <td bgcolor="#CC9966"><div align="left">
                <input name="id_article" type="text" id="id_article" value="<? echo $_GET['id']; ?>" />
            </div></td>
          </tr>
          <tr>
            <th bgcolor="#CC9966" scope="row">Stock</th>
            <td bgcolor="#CC9966"><input name="stock" type="text" id="stock" value="<? echo $_GET['stock']; ?>" /></td>
          </tr>
     
     
          <tr>
            <th bgcolor="#CC9966" scope="row"><div align="left">Quantit&eacute;demand&eacute;e</div></th>
            <td bgcolor="#CC9966"><div align="left">
              <input name="date_sortie" type="text" id="date_sortie" />
            </div></td>
          </tr>
          <tr>
            <th bgcolor="#CC9966" scope="row"><div align="left">Quantit&eacute;donn&eacute;e</div></th>
            <td bgcolor="#CC9966"><div align="left">
              <input name="qnt" type="text" id="qnt" />
            </div></td>
          </tr>
        </table>
        <table width="279" border="0">
          <tr>
            <th width="88" height="45" scope="col"><p>
                <input type="submit" name="Submit" value="Valider" />
            </p></th>
            <th width="94" scope="col"><input type="submit" name="Submit2" value="Annuler" /></th>
            <th width="83" scope="col"><input type="submit" name="Submit3" value="Quitter   " /></th>
          </tr>
        </table>
        <p>&nbsp;</p>
    	<?php
    $str="select * from PRODUIT where ID_ARTICLE=".$_GET['id'];
    $r=mysql_query($str)or die('Erreur SQL !'.$str.'<br />'.mysql_error());
    ?>
    <table width="60%" border="1" align="center">
      <tr>
        <th width="16%" scope="col">ID_PRODUIT </th>
        <th width="40%" scope="col">Desg_PRODUIT</th>
        <th width="44%" scope="col">prix</th>
      </tr>
      <?php
    while($v=mysql_fetch_array($r))
          { ?>
          <tr>
            <th scope="row"><? echo $v['ID_PRODUIT']; ?></th>
            <td><? echo $v['Desg_PRODUIT']; ?></td>
            <td><? echo $v['prix']; ?></td>
            <td>
             <input type="checkbox"
              name="<? echo 'macase'.$v['ID_PRODUIT']; ?>" 
              id="<? echo 'macase'.$v['ID_PRODUIT']; ?>" 
              <? if($v['ETAT']=='donnee') echo ' checked'; ?>
             >
            </td>
          </tr>
          <?
          }
          ?>
    et il m'affiche comme message d'erreur
    Parse error: parse error, expecting `T_VARIABLE' or `'$'' in c:\program files\easyphp1-8\www\geststock2\bon de sortie\sortie_trait.php on line 11
    la ligne 11 est la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset(@$_POST['macase'.$v['ID_PRODUIT']])) $etat='donnee';
    s'il vous plait aide moi et merci d'avance

  9. #9
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Par défaut problème de case à cocher
    bonjour,
    personne n'a pas une idée
    j'ai besoin de votre aide,j'ai perde pas mâle de temps pour résoudre ce problème,mais tjours ça marche pas

  10. #10
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $p=mysql_query($sql)or die($sql.' - <br/>'.mysql_error());
     
    if(isset($_POST['Submit1']))
    { 
      while($v=mysql_fetch_array($r))
    ce n'est pas $r mais $p, non ?

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

Discussions similaires

  1. [AC-2003] Problème code case à cocher
    Par Ardiden31 dans le forum VBA Access
    Réponses: 9
    Dernier message: 22/05/2012, 15h21
  2. Insérer une case à cocher
    Par francky74 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 17
    Dernier message: 02/08/2011, 08h39
  3. problème formulaire case à cocher
    Par nicoleblond dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 27/04/2011, 14h36
  4. Problème de case à cocher dans un GridView
    Par tsmp19 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 06/04/2009, 09h50
  5. problème de case à cocher en vb6
    Par sasuma dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 07/07/2008, 17h54

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