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

jQuery Discussion :

Toggle switches et maj bdd


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 184
    Par défaut Toggle switches et maj bdd
    Bonjour,

    J'aimerais mettre à jour une colonne de bdd à l'aide de switches. Cette colonne est un array PostGreSQL qui contient des insees de communes.

    La donnée pour l'exemple ressemble à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {'82019', '82031', '82032', '82033', '82099', '82112', '82169', '82170'}
    J'ai un tableau de valeurs selon :

    Nom : Capture d’écran du 2023-10-16 09-07-00.png
Affichages : 186
Taille : 41,4 Ko

    Sur un switch il y a deux valeurs , par exemple 'On' et 'Off'.

    Quand le switch est sur 'off', on enlève l'insee de l'array, quand il est sur 'on' on l'ajoute.

    Comment faire pour lui attribuer une valeur à ce switch ?

    Merci pour vos retours

    Bonne journée

    Sylvain

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Quel balise est utilisée pour le switch ?
    si c'est une balise qui a un value ... utilise le value
    sinon passe par un attribut data-value et boucle sur les éléments pour constituer un json que tu pourrais envoyer au serveur pour la mise à jour de la BDD
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 184
    Par défaut
    Voila mon HTML

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                  <div class="switch" id="communes_user" data-insee="${row.insee}" onchange="getActiveCommune(this)">
                    <label>
                      Off
                      <input type="checkbox">
                      <span class="lever"></span>
                      On
                    </label>
                  </div>

    PS: lien vers mon code => https://codepen.io/sylvain258/pen/zYyQyyp?editors=1111

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ce sont donc des inputs
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" value="......" />
    Tu peux donc leur mettre un value et l'utiliser
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     $(':checkbox').on('change', function(){
      Communes=[];
       $(':checkbox:checked').each(
           function(){
             Communes.push( $(this).val() )
      } 
      )
     
       console.log(Communes);
     
     })
    Faudra juste adapter le selecteur pour ne pointer que sur les checkboxes des communes
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre chevronné Avatar de ASCIIDEFOND
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2002
    Messages : 235
    Par défaut
    Citation Envoyé par sylvain257 Voir le message
    Quand le switch est sur 'off', on enlève l'insee de l'array, quand il est sur 'on' on l'ajoute...
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var inseeCommunes = [];
     
    $(':checkbox').on('change', function () {
      let valInsee = $(this).parents('.switch')[0].dataset['insee'];
      if (this.checked) {
        inseeCommunes.push(valInsee) //Si true on l'ajoute au tableau
      } else {
        let index = inseeCommunes.findIndex(
          item => item === valInsee
        )
        inseeCommunes.splice(index, 1) //sinon on l'enlève du tableau
      }
      console.log(inseeCommunes);
    })

  7. #7
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 184
    Par défaut
    Pour finir j'ai réussi de cette façon :

    Pour chaque ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function getActiveCommune(t) {
      if(($(t)).is(':checked')){
     
      // + requête ajax d'ajout d'une commune dans un array de base de donnée (pour info, la méthode pgsql pour ça c'est "array_append(mon_array, monélement)"), via un fichier PHP et une req UPDATE
     
      } else {
    )
     //  + requête ajax de suppression d'une commune dans un array de base de donnée (ici la méthode c'est "array_remove(mon_array, monélement)")
     
    }
    }
    Merci à tous,

    Sylvain

  8. #8
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut
    Ligne 7 une parenthèse fermante de trop.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    lorsque l'on utilise jQuery on ne devrait jamais voir de gestion d'événement inline
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input value ="82112" data-utilisateur=1 type="checkbox" onchange="getActiveCommune(this)">


    Cela pourrait devenir simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $(".switch input")
      .on("change", function() {
        const value = this.value;
        if (this.checked) {
          requeteAjax("AJOUTER", value);
        }
        else {
          requeteAjax("SUPPRIMER", value);
        }
      });

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

Discussions similaires

  1. [MySQL] MAJ BDD Distante
    Par rems033 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 31/10/2008, 14h48
  2. [MySQL] MAJ BDD par un fichier .txt distant
    Par Nalack dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/01/2007, 19h25
  3. Réponses: 1
    Dernier message: 24/10/2006, 12h10
  4. [PHP-JS] Fenêtre invisible (pour MAJ BDD) ?
    Par Lideln dans le forum Langage
    Réponses: 7
    Dernier message: 01/08/2006, 19h05
  5. [ADO.NET] MAJ BDD à partir d'un DataSet d'un DataGrid
    Par bart64 dans le forum Accès aux données
    Réponses: 15
    Dernier message: 20/12/2005, 18h16

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