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 :

Cases à cocher et PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut Cases à cocher et PHP
    Bonjour.

    Je possède un formulaire qui affiche des checkbox qui sont cochés suivant la valeur qu'il y a dans la BDD.
    Jusque la pas de problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name='select_exploitation[]' type='checkbox' value='$id' $etat/>
    J'aimerai actualiser ma BDD suivant que la case soit coché ou non.
    Si la case est cochée j'arrive bien à actualiser ma BDD car je récupère la valeur des id cochées dans ma page de traitement en faisant ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $tableau_select_exploitation = $_POST["select_exploitation"] ;
     
    foreach($tableau_select_exploitation as $val_exploitation) {
    ...
    Cependant si je décoche une case qui était cochée dans ma page de traitement je n'ai aucun moyen de le savoir car aucune valeur ne sera renvoyé.

    VOus avez des idées?

    Existe t'il des boutons qui renvoient une valeur quand le bouton est coché et une autre quand il n'est pas coché?
    COmme cela je ferais passer l'id en hidden est le tour serait joué.

    Merci d'avance

  2. #2
    Membre très actif
    Homme Profil pro
    Inscrit en
    Avril 2005
    Messages
    614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Turquie

    Informations forums :
    Inscription : Avril 2005
    Messages : 614
    Par défaut
    ben si tu affiche les cases tu doit savoir quel sont les cases coché, donc qd le formulaire est soumis sur le serveur tu doit bien voir quels sont les cases cochés fournis et tu compare avec celle que tu as afficher qui était coché

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    Je comprends ton principe mais je vois pas comment m'y prendre.

    Moi j'ai ca en gros.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <form action='aaaa.php'  method='post'>
     <?php while($val=mysql_fetch_assoc($result))
     $id=$val['id_prospect'];
     if ($val['select_exploitation'] == 0) $etat = ''; else $etat = 'checked';
     <input name='select_exploitation[]' type='checkbox' value='$id' $etat/>
    </form>
    Et dans mon aaaa.php je fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $tableau_select_exploitation = $_POST["select_exploitation"] ;
     
    foreach($tableau_select_exploitation as $val_exploitation) {
    $query = "UPDATE prospects SET select_exploitation='Oui' WHERE id_prospect = '$val_exploitation'" ;

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Avez-vous essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Pour les cases cochées :
    mysql_query("UPDATE prospects SET select_exploitation='Oui' WHERE id_prospect IN(" . implode(',', $_POST['select_exploitation']) . ")") or die(mysql_error());
     
    # Pour les cases non cochées
    mysql_query("UPDATE prospects SET select_exploitation='Non' WHERE id_prospect NOT IN(" . implode(',', $_POST['select_exploitation']) . ")") or die(mysql_error());
    Ce n'est que le principe car il faut sans doute gérer les éventuels cas spéciaux (aucune de sélectionnée notamment).

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    Citation Envoyé par julp
    Avez-vous essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # Pour les cases cochées :
    mysql_query("UPDATE prospects SET select_exploitation='Oui' WHERE id_prospect IN(" . implode(',', $_POST['select_exploitation']) . ")") or die(mysql_error());
     
    # Pour les cases non cochées
    mysql_query("UPDATE prospects SET select_exploitation='Non' WHERE id_prospect NOT IN(" . implode(',', $_POST['select_exploitation']) . ")") or die(mysql_error());
    Ce n'est que le principe car il faut sans doute gérer les éventuels cas spéciaux (aucune de sélectionnée notamment).
    Le problème avec cela c'est que tout les id_prospect qui ne trouvent pas forcemment dans liste ou il y a les boutons seront affectés.

    Il doit y avoir une possibilite en faisant passer au formulaire un hidden de toutes les id auxquelles une chechkbox est affiché.

    L'id qui est recupéré en hidden mais qui n'apparait pas dans select_exploitation[] est donc forcemment la checkbox qui est passé de coché à décoché ou qui était décoché et qui le reste?

    Ca semble logique ou pas?

    merci bien

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Par défaut
    J'ai pondu ca et à priori ca marche.

    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
    $tableau_select_exploitation = $_POST["select_exploitation"] ;
    $tableau_id = $_POST["id"] ;
     
    $i=0;
    for ($tableau_id[$i];$i<count($tableau_id);$i++)
    {
     // si l'id passé en hidden se trouve dans tableau_select_exploitation c'est que la case est cochée.
     if (in_array($tableau_id[$i], $tableau_select_exploitation)) 
     {
      $query = "UPDATE prospects SET select_exploitation='Oui' WHERE id_prospect = '$tableau_id[$i]'" ;
      $result = mysql_query($query);
     }
     
     else 
     {
      $query = "UPDATE prospects SET select_exploitation='Non' WHERE id_prospect = '$tableau_id[$i]'" ;
      $result = mysql_query($query);
     
     }
     
     
    }

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

Discussions similaires

  1. [MySQL] case à cocher et php/mysql
    Par proff dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/05/2008, 16h08
  2. [Tableaux] Utiliser en case à cocher en PHP
    Par innova dans le forum Langage
    Réponses: 18
    Dernier message: 17/01/2007, 15h38
  3. [HTML PHP] case à cocher dynamique
    Par baboun007 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/09/2006, 23h14
  4. [PHP-JS] Compter les cases à cocher
    Par rob2-9 dans le forum Langage
    Réponses: 2
    Dernier message: 08/03/2006, 12h27
  5. [Tableaux] cases à cocher et PHP
    Par tjoce dans le forum Langage
    Réponses: 5
    Dernier message: 20/10/2005, 10h06

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