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

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Points : 12
    Points
    12
    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
    Expert confirmé
    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 : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    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
    De retour parmis vous après 10 ans!!

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Points : 12
    Points
    12
    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
    Expert confirmé
    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 : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    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!)
    De retour parmis vous après 10 ans!!

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Points : 12
    Points
    12
    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
    Expert confirmé
    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 : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    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, à+
    De retour parmis vous après 10 ans!!

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Points : 12
    Points
    12
    Par défaut encore case à cocher
    bonjour,
    vraiment j'ai essayé pas mâle de fois avec le code que vous ml'a proposé,mais malheureusment ça marche pas,
    bon je vous s'explique mieux mon problème:
    j'ai un tableau à 4 colonnes :
    1ère colonne affiche le code du produit.
    2ème colonne affiche la disignation du produit.
    3ème colonne affiche la reference du produit .
    4ème colonne contient une case à cocher.
    et moi je veux une fois je coche des cases ,l'etat du produit qui correspond au code cocher soit varie est devient 'donnée'(je veux modifier le produit qui a le code qui à la même ligne de la case cochée),j'espère que j'ai bien expliquée mon problème ,s'il vous plait aide moi ctrès urgent,et merci beacoup
    Remarque:
    'etat' est un champs de la table "produit"
    voici mon code PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?
    	$cnt=count(@$_POST['select']);
    	for($x=0;$x<$cnt;$x++) {
    	if(isset($select[$x]))
              $sql="UPDATE produit SET ETAT='donnee' WHERE ID_produit='$x'"; 
               else
              echo echo "Case n°$x non cochée.<br>"; 
    		   mysql_query($sql)or die("$sql - " . mysql_error());;
        } 
       ?>

  8. #8
    Expert confirmé
    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 : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Tu as très bien expliqué ton problème. Le souci (et c'est ce que tu n'arrives pas à comprendre) c'est que je ne possède pas les sources de ta page web pour mieux t'expliquer puisque tu n'arrives pas à adapter mon exemple à ton site... Mon code fonctionne si tu l'exécutes tel quel, avec son formulaire de la semaine (lundi, mardi, mercredi...). Je ne peux pas deviner le code HTML de ton formulaire non plus.

    Bon courage, à+
    De retour parmis vous après 10 ans!!

  9. #9
    Expert confirmé
    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 : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Erreur -> il ya 2 echo qui se suivent dans ton code, enlève en un.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo echo "Case n°$x non cochée.<br>";
    De retour parmis vous après 10 ans!!

  10. #10
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Points : 12
    Points
    12
    Par défaut encore case à cocher
    bonjour,
    je pense que j'ai bien inseré ton code telqu'il est ,la seule différence c que j'ai changé array(lundi,...)par mon formulaire,vraiment j'ai passé largement de temps pour exécuter ce petit code ,mais le resultat reste la même,
    bon,voici mon code comlplèt:
    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
    <?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="<?=$_GET['seuil']?>" />
            </div></th>
            <td bgcolor="#CC9966"><div align="left">
                <input name="id_article" type="text" id="id_article" value="<?=$_GET['id']?>" />
            </div></td>
          </tr>
          <tr>
            <th bgcolor="#CC9966" scope="row">Stock</th>
            <td bgcolor="#CC9966"><input name="stock" type="text" id="stock" value="<?=$_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
    require("../conn/conn.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">code</th>
        <th width="40%" scope="col">designation</th>
        <th width="44%" scope="col">prix</th>
      </tr>
      <?php
    while($v=mysql_fetch_array($r))
    { ?>
     <tr>
        <th scope="row"><?=$v['ID_Produit']?></th>
        <td><?=$v['desg_Prolduit']?></td>
    	 <td><?=$v['prix_produit']?></td>
        <td><input name="select" type="checkbox" id="select" value="checkbox">
    	<?
    	$cnt=count(@$_POST['select']);
    	for($x=0;$x<$cnt;$x++) {
    	if(isset($select[$x]))
              $sql="UPDATE Produit SET ETAT='donnee' WHERE ID_Produit='$x'"; 
    		  else
              echo  "Case n°$x non cochée.<br>"; 
    		   mysql_query($sql)or die("$sql - " . mysql_error());;
        } 
       ?>
     
          <?
       }
       ?>
     
    </table>
     
      </form>
    </div>
    </body>
    </html>
    merci beacoup

  11. #11
    Expert confirmé
    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 : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    • C'est quoi ce "<?=" ?
    le signe "=" est de trop.
    Utilises plutôt "<? echo " pour afficher une variable PHP.

    • Attention, $_GET permet de récupérer les données de l'url et $_POST les données du formulaire.
    Ne pas confondre.

    • Si tu utilises le tableau $_GET[] directement, ajoute un arobas devant -> @$_GET[].

    • Apparemment, tu oublis d'ouvrir et de fermer ta base de données.
    J'ai l'impression que tu as oublié les fonctions MyOpenBase et MyCloseBase de mon exemple...

    • Tu appelles plusieurs fois require("../conn/conn.php"); alors qu'une seule fois suffit par page.

    • Dans ta boucle, il manque le </tr>

    Répare déjà ces erreurs, et reposte ton code corrigé.
    De retour parmis vous après 10 ans!!

  12. #12
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Points : 12
    Points
    12
    Par défaut encore case à cocher
    bonjour,
    bon j'ai corrigée les erreurs que tu m'a signaler mais tjrs ça marche pas
    voici le code:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans titre</title>
    </head>
     
    <body>
     
    <?php
    OpenMyBase();
    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="<?=$_GET['seuil']?>" />
            </div></th>
            <td bgcolor="#CC9966"><div align="left">
                <input name="id_article" type="text" id="id_article" value="<?=$_GET['id']?>" />
            </div></td>
          </tr>
          <tr>
            <th bgcolor="#CC9966" scope="row">Stock</th>
            <td bgcolor="#CC9966"><input name="stock" type="text" id="stock" value="<?=$_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_CARACT']?></th>
        <td><? echo$v['N_INVENTAIRE']?></td>
    	 <td><? echo$v['N_SERIE']?></td>
        <td><input name="select" type="checkbox" id="select" value="checkbox">
    	<?
    	$cnt=count(@$_POST['select']);
    	for($x=0;$x<$cnt;$x++) {
    	if(isset($select[$x]))
              $sql="UPDATE produit SET ETAT='donnee' WHERE ID_CARACT='$x'"; 
    		  else
              echo  "Case n°$x non cochée.<br>"; 
    		   mysql_query($sql)or die("$sql - " . mysql_error());;
        } 
       ?>
    	</tr>
          <?
       }
       CloseMyBase();
       ?>
     
     
    </table>
     
     
      </form>
    </div>
    </body>
    </html>
    vraiment je ss démoralisée par ce code

  13. #13
    Expert confirmé
    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 : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Tu ne connais pas encore assez bien la programmation PHP, c'est normal que tu galères. Je vais t'aider. L'essentiel est que tu comprennes tes erreurs pour que tu ne les refasses pas.

    • Tu ouvres la bdd avant de spécifier le fichier contenant la fonction, ça ne risque pas de fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OpenMyBase();
    require("../conn/conn.php");
    Il faut d'abord spécifier le script qui contient les fonctions avant de pouvoir les utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    require("../conn/conn.php");
    OpenMyBase();
    • Tu ne veux pas suivre mon conseil apparemment, tu utilises toujours "<?=" au lieu d'utiliser "<? echo" :• Tu oublis l'espace entre echo et la variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <? echo$v['ID_CARACT']?>
    Et tu oublis aussi le point virgule à la fin du code php. Voilà la bonne syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <? echo $v['ID_CARACT']; ?>
    Corrige déjà ça, et reposte ton code corrigé. Tu auras presque terminé; Il reste encore une dernière petite erreur de logique que l'on verra après.
    De retour parmis vous après 10 ans!!

  14. #14
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Points : 12
    Points
    12
    Par défaut encore case à cocher
    Bonjour,
    Merci beaucoup,j’espère que j’arrive à corriger tous les erreurs que tu m’a signalé,après tous ces modifications il m’affiche le msg suivant :

    Fatal error: Call to undefined function: openmybase() in c:\program files\easyphp1-8\www\geststock2\bon de sortie\sortiestock.php on line 12

    Voici mon code :
    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
    <?php
    require("../conn/conn.php");
    OpenMyBase();
    $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 name="select" type="checkbox" id="select" value="checkbox">
    	<?
    	$cnt=count(@$_POST['select']);
    	for($x=0;$x<$cnt;$x++) {
    	if(isset($select[$x]))
              $sql="UPDATE produit SET ETAT='donnee' WHERE ID_produit='$x'"; 
    		  else
              echo  "Case n°$x non cochée.<br>"; 
    		   mysql_query($sql)or die("$sql - " . mysql_error());;
        } 
       ?>
    	</tr>
          <?
       }
       CloseMyBase();
       ?>
     
     
    </table>
     
     
      </form>
    Pour plus de détail voici le code de connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $host = "localhost"; // voir hébergeur
    $user = "root"; // vide ou "root" en local
    $pass = ""; // vide en local
    $bdd = "habous"; // nom de la BD
    // connexion
    @mysql_connect($host,$user,$pass)
       or die("Impossible de se connecter");
    @mysql_select_db($bdd)
       or die("Impossible de se connecter");
     
    ?>
    Et merci encore une fois
    pardon j'ai obliie de metrre mon code entre les balises code

  15. #15
    Expert confirmé
    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 : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    OpenMyBase est le nom d'une fonction que j'ai donné dans mon exemple. Il convient d'utiliser ta propre fonction. Apparemment, tu ne possède qu'un seul script (conn.php) qui permet juste d'ouvrir la base de données. Dans ce cas, tu n'as pas besoin d'appeller de fonction suplémentaire. En résumé, utilise uniquement le code suivant pour ouvrir ta base de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    require("../conn/conn.php");
    Seulement, il ne semble rien avoir de prévu pour fermer cette base de données...
    Le script "conn.php" est de toi ?

    Sinon, tu n'as plus qu'à supprimer les fonctions OpenMyBase et CloseMyBase de ton code pour que cela fonctionne, excepté qu'il reste toujours une petite erreur de logique que nous verrons tout à la fin.
    De retour parmis vous après 10 ans!!

  16. #16
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Points : 12
    Points
    12
    Par défaut case à cocher
    bonjour,
    j'ai supprimé les deux fonctions Open et close,mais tjours ça marche pas il m'affiche un message de réssit ,mais lorsque je vérifier dans ma BD ,je trouve que le champs etat n'est pas modifié
    merci encore une fois

  17. #17
    Expert confirmé
    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 : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Voilà le fameu problème de logique dont je te parlais

    Dans ta boucle, tu crées la requête si la case est cochée, mais aucune requête si elle n'est pas cochée. Tu as 2 solutions :
    • Soit tu mets à jour la bdd uniquement si elle est cochée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      if(isset($select[$x])){
        $sql="UPDATE produit SET ETAT='donnee' WHERE ID_produit='$x'"; 
        mysql_query($sql)or die("$sql - " . mysql_error());
      }else
        echo  "Case n°$x non cochée.<br>";
    • Soit tu mets à jour l'état dans tous les cas (ça me semble + logique) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      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'"; 
      mysql_query($sql)or die("$sql - " . mysql_error());
    Remarque importante : A noter que l'index des cases doit correspondre avec l'ID_produit. Hors je ne suis pas sûr que ce soit le cas. La case n°X ne correspond pas forcément à l'enregistrement portant l'ID_produit X... Tu comprend ? C'est pour cette raison qu'utiliser mon code tel quel n'est pas une bonne idée et qu'il faut obligatoirement l'adpater à ta propre application. La solution serait de lister les enregistrements pour récupérer l'ID_produit et l'utiliser dans la requête...
    De retour parmis vous après 10 ans!!

  18. #18
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 26
    Points : 21
    Points
    21
    Par défaut case à cocher
    bonjour,
    moi je travail avec la première solution,mais pour :A noter que l'index des cases doit correspondre avec l'ID_produit. Hors je ne suis pas sûr que ce soit le cas. La case n°X ne correspond pas forcément à l'enregistrement portant l'ID_produit X... je sais pas comment je vais régler ce pb
    merci

  19. #19
    Expert confirmé
    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 : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    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.
    à+
    De retour parmis vous après 10 ans!!

  20. #20
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 36
    Points : 12
    Points
    12
    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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