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 :

Insertion via checkbox des données dans une bdd [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Points : 28
    Points
    28
    Par défaut Insertion via checkbox des données dans une bdd
    Bonjour à tous et merci de me répondre,

    je suis bloquée je sais pas comment faire pour récupérer des données sur un formulaire que j'ai créé pour les insérer dans ma base ???
    si quelqu'un sait comment les récupérer et les insérer ? ou quel test il faut faire ? je lui serais bien reconnaissante !
    mes input (je les ai recupéré sur un tuto ) sont du genre :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="checkbox" name="fonction_controlee[]" id="1" value="OK"/ > 
    Etiquetage

    je récupère la valeur OK s'il est coché et mon code php pour les inserer est le suivant :

    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
    <?PHP
     
    $choix =implode(', ',$fonction_controlee);
     
    if (isset($_POST['fonction_controlee']) {
    	if (isset($_POST['OK'])){
    mssql_query("INSERT INTO FONCTIONS_CONTROLEES (etiquetage, enclanchement, marquage_laser, assemblage_implant, matiere, indice_plan, 
    
    assemblage_broche, autotaraudage, oxydation_anodique, nutriration ) VALUE 
    
    ('".$choix."')";
     
    	}
    }
    ?>

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    je dirai qu'il faut faire plutot quelque chose dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $total=count($_POST['fonction_controlee']);
    $compteur=0;
    while($compteur<$total){
      echo $_POST['fonction_controlee'][$compteur];
      $compteur++;
    }
    ou un truc dans le genre.

  3. #3
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    La requête ne sera pas bonne car vous regroupez actuellement le résultat de vos champs en un seul. Je verrais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $choix = "'" . implode("', '", $fonction_controlee) . "'";
     
    # ... 
     
    mssql_query("INSERT INTO FONCTIONS_CONTROLEES (etiquetage, enclanchement, marquage_laser, assemblage_implant, matiere, indice_plan, assemblage_broche, autotaraudage, oxydation_anodique, nutriration ) VALUE 
    ($choix)";
    Mais il reste éventuellement deux choses à gérer :
    • La valeur des checkbox cochées/non cochées
    • Le type de vos champs (string contre numérique ou assimilé)


    Note : vous utilisez $fonction_controlee puis $_POST['fonction_controlee']

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Points : 28
    Points
    28
    Par défaut
    Merci pour les réponses,

    j'ai essayé de faire un "foreach" comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach($_POST['fonction_controlee'] as $val){
    echo "<BR><B>$val\n</B>";
     
    if (array_key_exists('OK pour Etiquetage', $_POST['fonction_controlee']) ){
        $val = 'Y';
      }else{
        $val = 'N';}
    pour les valeur des checkbox c-a-d : y s elle est cochée et N sinon......mais j'ai toujours Y qui est affecté pour toutes les valeur ???

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Points : 28
    Points
    28
    Par défaut
    je me suis trempé c'est la Valeur N qui est affectée pour toutes les valeur du tableau et non Y !

  6. #6
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    Pourrait-on avoir plus de détails : comment sont générées les checkbox et à quoi correspondent-elles ?

    Parce que vos checkbox, si j'ai bien compris, il y en a une par champ (type booléen) or après avoir validé le formulaire on a aucun moyen d'associer (identifier) celle qui a été cochée au champ correspondant.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Points : 28
    Points
    28
    Par défaut
    LEs checkbox sont du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <input type="checkbox" name="fonction_controlee[]" value ="OK pour 
     
    Etiquetage"<?php if(est_selectionne("etiquetage")) {echo 'checked';
    } ?>/>Etiquetage<br/>
    et je veux faire en sorte que si une valeur est cochée elle prendra la valeur 'Y' sinon ça sera 'N' et par la suite inserer la valeur 'Y' dans une table à la colonne par exemple ici ça sera 'etiquetage'

    et la fonction est_selectionne () est :

    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
    // Renvoie vrai si $option fait partie du résultat
    function est_selectionne($option) {
        if (!isset($_POST['fonction_controlee'])) {
                return FALSE;
        }
        for ($i = 0, $c = count($_POST['fonction_controlee']); $i < $c; $i++) {
            if ($_POST['fonction_controlee'][$i] == $option) {    
     
    	return TRUE;	
    echo "<br/><b>" . $_POST['fonction_controlee'][$i] . "</b>";
     
          }
        }
        return FALSE;
    }
     
    ?>
    voila donc mon code

  8. #8
    Expert éminent sénior

    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
    Points : 17 778
    Points
    17 778
    Par défaut
    C'est plus clair ainsi

    Un moyen simple de faire tout cela, je pense, serait :
    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
    <?php
    # Tableau contenant les champs de la table de type booléen
    # (la valeur N indique un état désactivé s'ils sont absents du résultat du formulaire)
    $fonctions = array(
        'etiquetage' => 'N',
        'enclanchement' => 'N',
        'marquage_laser' => 'N',
        # ...
    );
     
    # Formulaire soumis ?
    if (!isset($_POST['mon_champ_submit'])) {
    ?>
     
    <form method="POST">
        <!-- ... -->
     
    <?php
        # Génération des checkbox à partir du tableau $fonctions
        foreach ($fonctions as $k => $v) {
            echo '<input type="checkbox" name="fonction_controlee[' . $k . ']" value="Y"' . (isset($_POST['fonction_controlee']) && isset($_POST['fonction_controlee'][$k]) ? ' checked="checked"' : '') . ' />' . $k;
        }
    ?>
     
        <!-- ... -->
    </form>
     
    <?php
    } else {
        # On prépare la requête SQL ...
        if (isset($_POST['fonction_controlee']) && count($_POST['fonction_controlee']) > 0) {
            $valeurs = array_merge($fonctions, $_POST['fonction_controlee']);
            $sql_fonctions = "'" . implode("', '", $valeurs) . "'";
        } else {
            $sql_fonctions = "'" . implode("', '", $fonctions) . "'";
        }
        $sql_champs = implode(', ', array_keys($fonctions));
        # ... et on l'exécute
        mssql_query("INSERT INTO FONCTIONS_CONTROLEES($sql_champs) VALUE($sql_fonctions)");
    }
    ?>
    Mais ce n'est probablement pas ce que vous attiendez

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 63
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup julp,

    t'es un chef c'est exactement ce que je veux.....je viens de le tester et ça marche !

    merci encore

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

Discussions similaires

  1. [AJAX] Vérifier des données dans une BDD avec AJAX
    Par mwech dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/10/2008, 15h13
  2. Réponses: 8
    Dernier message: 16/01/2008, 17h49

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