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

Laravel PHP Discussion :

checkbox coché sur données mysql


Sujet :

Laravel PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut checkbox coché sur données mysql
    Bonjour à tous,

    Je coince sur un affichage de checkbox cochés sur base d'info contenue en BDD.

    Je dispose de 3 tables:

    House
    ID NAME
    1 maison1
    2 Maison2
    3 Maison3

    Agency:
    ID NAME
    1 agence1
    2 agence2
    3 agence3

    HouseLinked
    ID agency_id house_id
    1 1 1
    2 1 2
    3 1 3
    4 2 3
    5 3 1

    Une agence peut gérer plusieurs maisons et les différentes agences peuvent gérer les mêmes maisons.

    mon controler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public function edit(Agency $link) //$link = id de l'agence
        {
     
        	$houses = House::all(); //affiche toute les maisons
        	$houseLinked = HouseLinked::where('agency_id',$link->id)->get();
    	//dd($houseLinked);
            return view('/admin/agencies/link.edit',compact('link','houses','houseLinked'));
        }
    et ma vue:

    j'affiche toutes les maisons disponibles dans ma boucle foreach.
    Par contre là où cela ne va pas c'est pour afficher les cases à cocher. en tenant compte que si l'ID de la maison est présent dans la table HouseLinked pour l'agence concernée, alors il coche celle-ci.

    Comment faire dans ce cas ?

    Merci pour votre aide.


    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
     
    <form method="POST" action="/admin/agencies/link/{{$link->id}}">
    			@csrf
    			@method('PATCH')
     
     
     
    			@foreach($houses as $house)
    			<div class="form-group row">
    					<div class="form-check">
     
                                          @foreach($houseLinked as $hl)
     
    					   <input class="form-check-input" type="checkbox" name="house_id[]" value="{{$house->id}}" checked="{{$house->id == $hl->house_id ? 'checked':' '}}" >
    					@endforeach  
     
                                           <label class="form-check-label" for="defaultCheck1">
    					  {{$house->name}}
    					  </label>
    					</div>
     
    			</div>
     
     
    			@endforeach

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le fait de mettre l'attribut checked, ou checked=" " (même avec valeur vide), suffit à cocher la case.

    La bonne syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       <input class="form-check-input" type="checkbox" name="house_id[]" value="{{$house->id}}"{{$house->id == $hl->house_id ? ' checked="checked="':''}} />

  3. #3
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Je ferais même un in_array pour vérifier le test, un truc du genre :

    Controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    public function edit(Agency $link) //$link = id de l'agence
        {
     
        	$houses = House::all(); //affiche toute les maisons
        	$houseLinked = HouseLinked::where('agency_id',$link->id)->pluck('house_id');
    	//dd($houseLinked);
            return view('/admin/agencies/link.edit',compact('link','houses','houseLinked'));
        }
    vue

    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
     
    @foreach($houses as $house)
    			<div class="form-group row">
    					<div class="form-check">
     
                                          @if(in_array($house->id,$houseLinked))
     
    					   <input class="form-check-input" type="checkbox" name="house_id[]" value="{{$house->id}}" checked='checked' }}" >
    @else
     <input class="form-check-input" type="checkbox" name="house_id[]" value="{{$house->id}}" }}" >
     
    					@endif  
     
                                           <label class="form-check-label" for="defaultCheck1">
    					  {{$house->name}}
    					  </label>
    					</div>
     
    			</div>
     
     
    			@endforeach

  4. #4
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    Mon Dieu, la vie reprend et je n'avais même pas vu fin janvier que des réponses avaient été envoyées. Honte à moi

    J'ai modifié le script comme suggéré mais j'ai une erreur de type "in_array() expects parameter 2 to be array, object given"

    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
    @foreach($houses as $house)
    				<div class="form-group row">
    					<div class="form-check">
     
                           @if(in_array($house->id,$houseLinked))
     
    					   		<input class="form-check-input" type="checkbox" name="house_id[]" value="{{$house->id}}" checked='checked' }}">
    					   @else
     							<input class="form-check-input" type="checkbox" name="house_id[]" value="{{$house->id}}" }}" >
     
    					   @endif  
     
                           <label class="form-check-label" for="defaultCheck1">{{$house->name}}</label>
    					</div>
    	 
    				</div>
     
     
    			@endforeach
    pourtant la variable $houseLinked est dans mon exemple un array avec 3 valeurs.

    Nom : Capture.PNG
Affichages : 900
Taille : 3,0 Ko

    Je ne comprend pas l'erreur PHP.

    Si qqun veut bien m'aider...

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    essayer ceci pour voir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $houseLinked = HouseLinked::select('house_id')->where('agency_id',$link->id)->toArray();

  6. #6
    Membre éclairé Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 354
    Par défaut
    C'est bien juste. Merci à toi

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/12/2007, 23h28
  2. checkbox cochée selon variable sur 2 frames
    Par themateo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/11/2007, 08h52
  3. Demande d'aide sur la liaison avec base de données mysql
    Par almora007 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/08/2007, 14h19
  4. si checkbox cochée afficher une alerte lors du clic sur OK
    Par Nemesys dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 06/04/2007, 14h10
  5. Réponses: 3
    Dernier message: 23/03/2007, 22h26

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