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 :

MVC POO - Checkbox avec même valeur "name" à insérer en BDD


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de Projet et futur développeur web qui s'entraîne dur
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de Projet et futur développeur web qui s'entraîne dur

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Par défaut MVC POO - Checkbox avec même valeur "name" à insérer en BDD
    Bonjour à toutes et à tous.

    Je me permets de faire appel à vos lumières pour tenter de m'éclaircir sur un point sur lequel je bloque.
    (Je pourrais éventuellement procéder autrement en terme d'HTML, mais je souhaite résoudre le problème ne serait-ce que pour le savoir-faire...)

    J'ai un formulaire assez long dont je ne pense pas lister l'intégralité ici, mais à l'intérieur de celui-ci, il y a des champs checkbox, dont j'aimerais qu'ils comportent le même "name" voici l'exemple ci-dessous :

    View:
    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
    				<label for="inputIsoType">Type de chauffage</label>
    				<div class="row">
    					<div class="col-lg-6">
    						<div class="input-group">
    							<span class="input-group-addon"> <input type="checkbox"
    								aria-label="HeatType" name="customerIsoHeatType[]" id="inputHeatTypeGaz">
    							</span><label for="inputHeatTypeGaz" class="form-control">Gaz</label>
    						</div>
    					</div>
    					<div class="col-lg-6">
    						<div class="input-group">
    							<span class="input-group-addon"> <input type="checkbox"
    								aria-label="HeatType" name="customerIsoHeatType[]" id="inputHeatTypeFioul">
    							</span><label for="inputHeatTypeFioul" class="form-control">Fioul</label>
    						</div>
    					</div>
    					<div class="col-lg-6">
    						<div class="input-group">
    							<span class="input-group-addon"> <input type="checkbox"
    								aria-label="HeatType" name="customerIsoHeatType[]" id="inputHeatTypeElectricite">
    							</span><label for="inputHeatTypeElectricite" class="form-control">Electricité</label>
    						</div>
    					</div>
    					<div class="col-lg-6">
    						<div class="input-group">
    							<span class="input-group-addon"> <input type="checkbox"
    								aria-label="HeatType" name="customerIsoHeatType[]" id="inputHeatTypeBois">
    							</span><label for="inputHeatTypeBois" class="form-control">Bois</label>
    						</div>
    					</div>
    				</div>
    J'ai bien saisi que pour pouvoir stocker plusieurs checkbox dans un même "name" il fallait les stocker sous forme de tableau, d'où les "[]".

    Cependant, le problème survient à l'étape d'après;
    D'habitude, pour pouvoir récupérer ces valeurs, je procède ainsi :

    Controlleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        public function addCustomerIso()
        {
            if (isset($_POST['addCustomerIso']))
            {
                $customerIso = new CustomerIso([
                    'heat_type' => $_POST['customerIsoHeatType']
                ]);
                $this->customerIsoManager->add($customerIso);
            } else {
                echo 'Une erreur est survenue';
            }
        }
    Toujours d'après les recherches Google, il faudrait effectuer un foreach pour récupérer les plusieurs checkbox si il y en a et ensuite effectuer le $_POST de celui-ci, mais c'est la que le problème intervient... je n'arrive pas à visualiser cette partie du code.
    Certains parlent même d'"implode" pour rassembler les éléments du tableau en string, sur papier, ça me paraît tout juste, mais à retranscrire c'est plus compliqué.

    Le modèle quant à lui devrait rester pareil ? Il n'aura aucun impact pour la requête BDD ?


    Je vous remercie énormément pour votre aide.

    Cdt

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    1- Il te manque l'attribut value dans les checkbox.
    2- Un id doit être unique dans un document.
    3- Seul les cases cochées seront envoyées, donc ne t'attend pas à ce que les index seront identiques par rapport aux lignes de données.

    A+.

  3. #3
    Membre averti
    Homme Profil pro
    Chef de Projet et futur développeur web qui s'entraîne dur
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de Projet et futur développeur web qui s'entraîne dur

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Par défaut
    Merci pour ta réponse,

    C'est réglé pour les attributs "value".
    Je n'ai pas bien compris concernant les id ? Je n'ai pas l'impression d'avoir de doublon ici ?

    Cependant le problème qui se pose ici et que je ne sais pas comment résoudre dans le contexte actuel est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Array to string conversion

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par Demirdiouff Voir le message
    Je n'ai pas bien compris concernant les id ? Je n'ai pas l'impression d'avoir de doublon ici ?
    Désolé, je croyais que c'était dans une boucle, je ne faisais qu'une lecture diagonale.

    Citation Envoyé par Demirdiouff Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Array to string conversion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $customerIso = new CustomerIso([
                    'heat_type' => $_POST['customerIsoHeatType']
                ])
    $_POST['customerIsoHeatType'] est un array

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $customerIsoHeatTypes = $_POST['customerIsoHeatType'];
    foreach ($customerIsoHeatTypes  as $value){
        $customerIso = new CustomerIso([
                    'heat_type' =>  $value
                ]);
     $this->customerIsoManager->add($customerIso);
    }
    A+.

  5. #5
    Membre averti
    Homme Profil pro
    Chef de Projet et futur développeur web qui s'entraîne dur
    Inscrit en
    Avril 2016
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de Projet et futur développeur web qui s'entraîne dur

    Informations forums :
    Inscription : Avril 2016
    Messages : 49
    Par défaut
    Ok, c'est exactement ce genre de retranscription que je n'arrivais pas à mettre en place...

    Je vais adapter ça (j'ai de multiples champs checkbox avec le même fonctionnement en un formulaire) et le tester dès que possible, merci beaucoup

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    tu sais que tu peux aussi personnaliser les clés du tableau :
    name="customerIsoHeatType[25]" ou name="customerIsoHeatType['abc']", cela te permettra d'utiliser directement isset($_POST['customerIsoHeatType']['abc'])

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/04/2013, 23h10
  2. Lier une checkbox avec une valeur de cellule d'un tableau
    Par sab_info dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/01/2013, 15h15
  3. [AC-2003] Imprimer plusieurs états avec même valeur parametre
    Par benji2929 dans le forum IHM
    Réponses: 9
    Dernier message: 24/05/2012, 10h17
  4. récupérer valeurs d'un CHECKBOX avec name=nom[]
    Par Mickael Scofild dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 28/08/2007, 08h16

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