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 :

Case à cocher et traitement avec une base de données [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut Case à cocher et traitement avec une base de données
    Bonjour la compagnie!

    Après des jours de recherches concernant la mise en place de checkbox dans l'utilisation d'une bas de données, j'ai trouvé mon bonheur. Cependant, je me tourne vers vous pour compléter ce code.

    Je m'explique :

    J'ai un formulaire dans lequel se trouve mes checkbox :

    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
    
    <form method='POST' action='maj.php'>
    
    <table width="50%">
    
    <?php
    
    include "../configuration.php";
    
    $sql = "SELECT id, id_blog, montant, pay FROM table1 
    
    WHERE table1.id_blog='$id' 
    
    GROUP BY table1.id
    
    ORDER BY table1.date DESC";
    
    
    $rs = mysql_query($sql);
    
    while($val = mysql_fetch_array($rs)) {
    
    if ($val[3]	== 'oui') {
    $coche = 'checked';
    }
    else if ($val[3] == 'non') {
    $coche = '';
    }
    else {
    $coche = '';
    }
    
    echo "<tr>
             <td>".$val[2]."</td>
             <td><input type='checkbox' name='delete[]' value='".$val['id']."' ".$coche."></td>
             <tr>";
    
    }
    
    ?>
    
    <td><input type="submit" value="VALIDER!"  style="background-color: #FF9933; color: #FFFFFF;"></td>
    
    </table>
    Jusqu'ici aucun problème et ce formulaire renvoi à la page "maj.php"

    Justement voici le code de la page maj.php qui traite mon 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
     
     
    <?php
     
    include "../configuration.php";
     
    $delete = $_POST['delete'];
     
    for($i=0; $i<count($delete); $i++)
    {
     
    echo $delete[$i];
     
    $update = mysql_query("UPDATE table1 SET pay='$oui' WHERE id='$delete[$i]'");
    $req= mysql_query($update);
     
    }
     
    ?>
    Très bien me dites-vous, ainsi lorsqu'un checkbox est coché, celui ajoute la valeur 'oui' dans le champ adéquate en l'occurrence 'pay' où id='$delete[$i]

    oui mais ^^ ,

    Lorsqu'à nouveau je décoche une case préalablement cochée et que j'envoie mon traitement (maj.php), je souhaiterais que cette modification "update" la valeur 'non' au champ 'pay' correspondant et ainsi de suite ... coché 'oui', décoché 'non'...

    Dans l'état actuel de mon code, il m'est impossible de remodifier la valeur de 'pay' si la case a été cochée ...

    Merci d'avance pour l'aide que vous m'apporterez!

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour un champ oui/non dans une base de donnée on utilise plutot naturellement un type BOOL.
    0 = non
    1 = oui

    Pour le reste, une case a cocher renvoit sa valeur quand elle est cochée mais rien quand elle n'est pas cochée.


    Pour savoir quels champs etaient affichés tu peux mettre un champ de controle caché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while($val = mysql_fetch_array($rs)) {
     
    echo "<tr>
             <td>".$val[2]."</td>
             <td><input type='checkbox' name='delete[$val['id']]' value='1' /></td>
    <td><input type='hidden' name='controle[]' value='$val['id']' />
             <tr>";
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $delete = $_POST['delete'];
     
    foreach ($_POST['controle'] as $key=>$value) { // on parcourt toutes les cases
     
    if ($delete[$value]) { // si la case est cochée, l'entrée existe
    $pay = 1;}
    else { $pay = 0;}
     
    $update = mysql_query("UPDATE table1 SET pay=$pay WHERE id=" . $value);
    $req= mysql_query($update);
     
    }
    C'est plus fiable car tu es sur de ne traiter que des champs qui etaient sur le formulaire de l'utilisateur.

    Tu noteras aussi l'utilisation de la boucle foreach pour parcourir un tableau.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Merci Sabotage de cette réponse rapide ! ton code correspond parfaitement à mes attentes (mon application est à présent opérationnelle) et tes explications constituent une base de réflexion pour la suite de mon travail. Encore ++

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

Discussions similaires

  1. [MySQL] Case à cocher et ligne d'une base de données
    Par djoumusic dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/09/2008, 16h50
  2. [Conception] formulaire et case à cocher et recherche dans une base de donnée
    Par olivier_1970 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 25/06/2006, 01h03
  3. Connexion de Delphi avec une base de données Oracle 9i
    Par Price dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/12/2005, 12h38
  4. Gestion des chemins des images avec une base de données...
    Par Nean dans le forum Bases de données
    Réponses: 4
    Dernier message: 27/07/2005, 08h08
  5. probleme avec une base de donnée postgres SQL
    Par Alexlesilex dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/06/2005, 22h09

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