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 :

Récupération données de CheckBox à multiple choix


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2017
    Messages : 76
    Points : 41
    Points
    41
    Par défaut Récupération données de CheckBox à multiple choix
    Bonjour;

    J'ai un champs text dans mon interface qui récupère les données de la base de données selon le choix de l'utilisateur.
    Je l'ai changé par un CheckBox à multiple choix. C'est à dire au lieu de taper manuellement un type deLRU maintenant l'utilisateur peut choisir plusieurs types de LRU en même temps.

    L'ancienne fonction était manipulé comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public function setLru($lru) {
            $this->_lru = $lru;
            if ($lru == '') $this->_lru ='all';
        }
    Comment je peux le changer selon la nouvelle fonctionnalité ? Est-ce-que je dois faire un appel à ma requête ici pour y aller chercher l'article concerné ?

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est la logique globale de classe qu'il faudrait connaître, pas cette petite de code.
    Est-ce que la classe va gérer la liste de éléments ou est-ce que chaque élément va être une instance de classe.

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2017
    Messages : 76
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par sabotage Voir le message
    C'est la logique globale de classe qu'il faudrait connaître, pas cette petite de code.
    Est-ce que la classe va gérer la liste de éléments ou est-ce que chaque élément va être une instance de classe.
    La classe va gérer la liste des éléments.

    En fait, avant l'utilisateur tape un seul choix de LRU et la requête va chercher les bonnes données de la base.
    Celle là ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $this->_sqlWhere.="`piecearticles`.`ID_Article`=`article`.`ID_Article` 
     AND `article`.`ID_LRU`=`lru`.`ID_LRU` AND `lru`.`LRU`='" . $this->_lru . "'";
    Je l'ai changé CheckBox à multiple choix et la liste contient 45 élément, Est-ce-que je dois modifier la requete aussi puisque j'ai changé CheckBox à multiple choix ?
    J'ai changé la fonction setter, j'ai mis les 45 élément dans un tableau comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public function setLru($lru) {
        $allowed_lru = ['A','B',...........,];
        if(in_array($lru, $allowed_lru)){
            $this->_lru = $lru;
        }else{
            $this->_lru = 'all';
        }
    }

  4. #4
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    1. Tu déclares un tableau pour recevoir les résultats de ta requête;
    2. Pour chaque élément du tableau de checkbox posté, tu exécutes ta requête que tu insères dans le tableau précédemment déclaré ($xxx[] = $yyy);
    3. Tu Affiche le tableau (print_r(...)) pour voir sa structure (utile pour le parcours lors de l'affichage).

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2017
    Messages : 76
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Nazoïde Voir le message
    1. Tu déclares un tableau pour recevoir les résultats de ta requête;
    2. Pour chaque élément du tableau de checkbox posté, tu exécutes ta requête que tu insères dans le tableau précédemment déclaré ($xxx[] = $yyy);
    3. Tu Affiche le tableau (print_r(...)) pour voir sa structure (utile pour le parcours lors de l'affichage).
    Bonjour;

    Ses étapes je dois les faire dans la fonction setter ou ça concerne m requête ?

    Merci

  6. #6
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Les deux. Dans ton setter $lru passé en paramètre doit être un tableau.

  7. #7
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Tu pourra faire ceci au niveau du setter

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $lrus[]; // ton tableau de données; à toi de savoir où le placer.
    public function setLru($lrus) {
        $allowed_lru = ['A', 'B','C',];
        foreach ($lrus as $lru) {
            if (in_array($lru, $allowed_lru)) {
                $this->_lru[] = $lru;
            } else {
                $this->_lru[] = 'all';
            }
        }
    }

  8. #8
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2017
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2017
    Messages : 76
    Points : 41
    Points
    41
    Par défaut
    Bonjour

    Je suis désolée mais je ne comprends pas le tableau des données $lrus[] je dois le placer où exactement, tu veut dire que le tableau des données final où on stocke le résultat final ?
    En fait mon constructeur est le suivant, est-ce-que je dois le placer ici mon tableau $lrus ? parce que dans le checkbox l'utilisateur peut choisir un seul choix aussi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     public function __construct($lru) {
    $this->setLru($lru);
    Ma fonction setter est comme tu m'a proposé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public function setLru($lrus) {
        $allowed_lru = ['A', 'B','C',];
        foreach ($lrus as $lru) {
            if (in_array($lru, $allowed_lru)) {
                $this->_lru[] = $lru;
            } else {
                $this->_lru[] = 'all';
            }
        }
    }
    Concernant la requête, j'ai ajouté une nouvelle et j'ai utilisé implode, et j'ai laissé l'ancienne requête d'une seule recherche parce que dans le checkbox l'utilisateur peut choisir un seul choix, c'est pour ça j'ai ajouté une nouvelle requête est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $this->_sqlWhere.="`piecearticles`.`ID_Article`=`article`.`ID_Article`
    AND `article`.`ID_LRU`=`lru`.`ID_LRU`
    AND `lru`.`LRU` IN (" . implode(",", $this->_lru) . ")";

    Qu'est ce que je dois supprimer ou ajouter à ton avis, parce que j'ai essayé par ta solution de la fonction setter il m'a affiché un tableau vide sachant que je n'ai pas ajouté $lrus parce que je ne suis pas certaine où je dois le placer exactement.

    Je te remercie beaucoup pour ton aide.

  9. #9
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Tu dois passer le tableau à ton constructeur:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public function __construct($lrus[]){
       $this->setLru($lrus);
    }
    Pour le nombre d'élément du tableau pas de souci: si c'est 01, il la variable lru sera un tableau contenant 01 élément, s'il y'a n choix, elle sera un tableau de n éléments.

    Au niveau de ton code de requête, implode dans la clause IN affiche les élément du rableau sans les quotes alors qu'il s'agit des chaines de caractère. Je les ai ajoutés:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $this->_sqlWhere.="`piecearticles`.`ID_Article`=`article`.`ID_Article`
    AND `article`.`ID_LRU`=`lru`.`ID_LRU`
    AND `lru`.`LRU` IN ('" . implode("','", $this->_lru) . ")";
    Ce code devrait donnez indépendamment du nombre d'éléments sélectionnés.

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

Discussions similaires

  1. [MySQL] Récupération de CheckBox Multiples php/Mysql
    Par snorky94 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/10/2012, 10h15
  2. Réponses: 2
    Dernier message: 09/03/2012, 01h48
  3. Réponses: 8
    Dernier message: 08/08/2009, 22h38
  4. pb récupération données checkbox
    Par maysa dans le forum Langage
    Réponses: 3
    Dernier message: 06/12/2006, 13h02
  5. [MySQL] Récupération données champ sélection multiple
    Par Manuxy dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/07/2006, 12h30

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