Partage
  • Partager sur Facebook
  • Partager sur Twitter

Liste deroulante garder checkbox en mémoire

    28 mai 2017 à 17:55:22

    Bonjour

    Bonsoir à tous

    J'aurais une petite question. J'ai une liste déroulante avec mes noms d'activités, selon l'activité que l'on choisi apparaissent les jours de cours et les heures.

    Ces options sont rajoutées dans wordpress, la page profil de l'utilisateur.

    Je voudrais que lors que le Prof sélectionne sa discipline parmi la liste, une fois mon formulaire envoyé que ça garde en mémoire la section qu'il avait choisi ainsi que les jours de cours et les horaires qu'il aura coché.

    Mes données sont bien stockées dans la BDD, cependant quand j'enregistre ma page, et que je la recharge;  ma liste est mise sur la première activité de la liste et mes checkbox n'apparaissent pas cochées.

    Comment peut on régler ce soucis ?

    Voici mon code:

    <?php
    
    function kebailli_load_script(){	
    	
    	wp_register_script('kebailli-js', get_template_directory_uri() .'/admin/js.js', array(), '1.0.0', 'all');
    	wp_enqueue_script('kebailli-js');
    }
    
    add_action('admin_enqueue_scripts', 'kebailli_load_script');
    
    add_action( 'show_user_profile', 'my_show_extra_profile_fields' );
    add_action( 'edit_user_profile', 'my_show_extra_profile_fields' );
    
    function my_show_extra_profile_fields( $user ) {
    
        $liste_disciplines = get_user_meta( $user->ID, 'liste_disciplines' );
    	$lesjours = get_user_meta( $user->ID, 'lesjours' );
    	$lesheures = get_user_meta( $user->ID, 'lesheures' );
    	$enbref = get_user_meta( $user->ID, 'enbref' );
    
        ?>
    
        <h3>Mon profil sportif</h3>
        <table class="form-table">
            <tr>
                <th><label >Discipline</label></th>
                <td>
    
                    <select name="liste_disciplines" id="liste_disciplines" onChange="chargementJours();">
    				<option value="vide" <?php selected( $liste_disciplines[0], "none" ); ?>  ></option>
    				  <option value="KravMaga" <?php selected( $liste_disciplines[0], "Krav Maga" ); ?>>Krav Maga</option>
                      <option value="MuayThai" <?php selected( $liste_disciplines[0], "Muay Thai" ); ?>>Muay Thai</option>
                      <option value="Grappling" <?php selected( $liste_disciplines[0], "Grappling" ); ?>>Grappling</option>
    				  <option value="K1" <?php selected( $liste_disciplines[0], "K1" ); ?>>K-1</option>
                    
                    </select>
                </td>
    			
    			<td id="jours" style="display:none">
    				<?php $options = get_option( 'lesjours' );
    						$jours = array( 'Lundi', 'Mardi', 'Mercredi', 'Vendredi');
    						$output = '';
    						foreach ( $jours as $jours){
    							$checked = ( @$options[$jours] == 1 ? 'checked' : '' );
    							$output .= '<label><input type="checkbox" id="'.$jours.'" name="lesjours['.$jours.']" value="1" '.$checked.' /> '.$jours.'</label><br>';
    						}
    						echo $output;
    					
    
    
    						?>
                   
                </td>
    			
    			<td id="heures" style="display:none">
    			<?php $optionsheures= get_option('lesheures');
    					$heures=array('18h-19h30', '19h30-21h');
    					$outputheures='';
    					foreach ( $heures as $heures){
    							$checkedheures = ( @$optionsheures[$heures] == 1 ? 'checked' : '' );
    							$outputheures .= '<label><input type="checkbox" id="'.$heures.'" name="lesheures['.$heures.']" value="1" '.$checkedheures.' /> '.$heures.'</label><br>';
    						}
    						echo $outputheures;
    						?>
    			              
                </td>
            </tr>
    		
    			
    
    		
    		<tr>
                <th><label >En bref</label></th>
                <td style="width:40%">
    				<textarea type="text" name="enbref" id="enbref" class="regular-text"><?php echo esc_attr( get_the_author_meta( 'enbref', $user->ID ) ); ?></textarea>
                </td>
    			
    			<td style="text-align:left; width:60%">
    				<h4>Ma biographie</h4>
    				<?php $mabio= esc_attr( get_the_author_meta( 'enbref', $user->ID ) ); ?>
    				<?php echo nl2br($mabio)  ?>
    				
    
    			</td>
            </tr>
    		
        </table>
    	
    	
        <?php 
    
    }
    
    add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
    add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
    
    function save_extra_user_profile_fields( $user_id ) {
    
        if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
    	
        update_user_meta( $user_id, 'liste_disciplines', $_POST['liste_disciplines'] );
    	update_user_meta( $user_id, 'lesjours', $_POST['lesjours'] );
    	update_user_meta( $user_id, 'lesheures', $_POST['lesheures'] );
    	update_user_meta( $user_id, 'enbref', $_POST['enbref'] );
    
    }
    
    
    function my_custom_admin_head() {
    ?>
    <style>
    
    .user-description-wrap, .user-rich-editing-wrap, .user-admin-color-wrap, .user-comment-shortcuts-wrap,.user-admin-bar-front-wrap, .user-language-wrap, .user-profile-picture, .user-nickname-wrap, .user-url-wrap{
    	display:none;
    	}
    </style>
    <?php
    }
    add_action( 'admin_head', 'my_custom_admin_head' );
    
    ?>
    

    Javascript

    function chargementJours() {
    	var type = document.getElementById('liste_disciplines').value;
    	var div = document.getElementById("jours");
    	var lundi = document.getElementById("Lundi");
    	var mardi = document.getElementById("Mardi");
    	var mercredi = document.getElementById("Mercredi");
    	var vendredi = document.getElementById("Vendredi");
    	var vide = document.getElementById("none");
    		
    		if (type == "KravMaga") {
    		div.style="display:block";
    		divheures.style="display:block";
    		lundi.disabled = false;
    		mardi.disabled = true;
    		mercredi.disabled = true;
    		vendredi.disabled = false;
    		
    		} else if (type == "MuayThai"){
    		div.style="display:block";
    		divheures.style="display:block";
    		lundi.disabled = false;
    		mardi.disabled = false;
    		mercredi.disabled = false;
    		vendredi.disabled = true;
    		
    		} else if (type == "Grappling"){
    		div.style="display:block";
    		divheures.style="display:block";
    		lundi.disabled = true;
    		mardi.disabled = true;
    		mercredi.disabled = false;
    		vendredi.disabled = false;
    		
    		} else  if (type == "K1"){
    		div.style="display:block";
    		divheures.style="display:block";
    		lundi.disabled = true;
    		mardi.disabled = false;
    		mercredi.disabled = true;
    		vendredi.disabled = true;
    		
    		} else{
    		div.style="display:none";	
    		divheures.style="display:none";		
    		
    	}
    }
    



    Merci d'avance

    • Partager sur Facebook
    • Partager sur Twitter
      29 mai 2017 à 15:06:23

      Bonjour,

      Il faut que lorsque tu charges ta page, avec la fonction get_option('option_name') tu récupères la valeur stockée en base et tu la places correctement soit avec un selected (pour les select/options) soit avec checked (pour les checkbox).

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        29 mai 2017 à 23:41:25

        Merci de ta réponse :)

        j'ai bien un checked pour mes checkbox:

         foreach ( $jours as $jours){
                                    $checked = ( @$options[$jours] == 1 ? 'checked' : '' );
                                    $output .= '<label><input type="checkbox" id="'.$jours.'" name="lesjours['.$jours.']" value="1" '.$checked.' /> '.$jours.'</label><br>';
                                }

        cependant elles ne restent pas actives... est-ce que ca vient du fait qu'elles dépendent de ma liste ?
        • Partager sur Facebook
        • Partager sur Twitter
          30 mai 2017 à 9:42:51

          Ta boucle foreach est mal gérée, tu y écrases la variable $jours à chaque itération ...

          $options = get_option( 'lesjours' );
          $jours = array( 'Lundi', 'Mardi', 'Mercredi', 'Vendredi');
          $output = '';
          foreach( $jours as $jour ) {
          	$checked = ( $options[$jour] == 1 ? 'checked="checked"' : '' );
          	$output .= '<label><input type="checkbox" id="'.$jour.'" name="lesjours['.$jour.']" value="1" '.$checked.' /> '.$jour.'</label><br>';
          }

          Après je ne sais pas comment WordPress stocke les variables tableaux, peut-être faire un var_dump de $options pour voir si cela correspond à ce que tu crois ...

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            13 juin 2017 à 1:49:58

            désolée de la réponse tardive, je viens de modifier en efft

            mon checkbox ne se garde toujours pas en mémoire par contre, en inspectant l élément apres avoir coché, mon élément ne passe pas en "checked"  dans le code source.

            • Partager sur Facebook
            • Partager sur Twitter
              13 juin 2017 à 12:08:45

              Essayes ainsi :

              $options = get_option( 'lesjours' );
              $jours = array( 'Lundi', 'Mardi', 'Mercredi', 'Vendredi');
              $output = '';
              foreach( $jours as $jour ) {
                  $checked = ( $options[$jour] == 1 ? 'checked="checked"' : '' );
                  $output .= '<label><input type="checkbox" id="'.$jour.'" name="lesjours[]" value="'.$jour.'" '.$checked.' /> '.$jour.'</label><br>';
              }

              J'ai modifié la value de l'input, et non le name ...

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                13 juin 2017 à 12:51:38

                Merci de ta réponse,

                Malheureusement ça ne change rien :\

                • Partager sur Facebook
                • Partager sur Twitter
                  13 juin 2017 à 14:03:02

                  Alors si tu veux de l'aide, il faut nous aider un peu aussi ...

                  Lust a écrit:

                  mon élément ne passe pas en "checked"  dans le code source.

                  Cela n'est pas un problème ... Ce qu'il faut regarder c'est ce qui est passé dans $_POST ...

                  Pour cela il faudrait afficher (var_dump) $_POST['lesjours'] dans la fonction save_extra_users_profil_fields, ainsi que la variable $lesjours ...

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                    13 juin 2017 à 23:19:17

                    Si je fais un var_dump($_POST['lesjours']) je n'ai rien qui s'affiche, par contre si je fais un var_dump($_POST)je vois bien mes values apparaitre dans la liste

                     'liste_disciplines' => string 'Krav-Maga' (length=9)
                      'lesjours' => 
                        array (size=2)
                          0 => string 'Lundi' (length=5)
                          1 => string 'Vendredi' (length=8)


                    ma variable les jours a bien stockée le bon paramètre dans ma BDD mais si je fais un echo

                    <?php echo get_the_author_meta( 'lesjours', $user->ID ) ;?>

                    ça me sort juste"Vendredi"

                    -
                    Edité par Lust 13 juin 2017 à 23:45:39

                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 juin 2017 à 10:46:00

                      Lust a écrit:

                      Si je fais un var_dump($_POST['lesjours']) je n'ai rien qui s'affiche, par contre si je fais un var_dump($_POST)je vois bien mes values apparaitre dans la liste

                      ça c'est vraiment bizarre ... puisque $_POST['lesjours'] existe bien ... et contient bien les valeurs ...

                      Dans tous les cas, il y a un loup quelque part ... Peux-tu reposter le code entier de ta page ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                        14 juin 2017 à 12:06:51

                        J'ai enlevé les heures par rapport a plus haut et remplacé mes jours par des radios (le problème reste le même)

                        voici la page complète:

                        <?php
                        
                        function kebailli_load_script(){	
                        	
                        	wp_register_script('kebailli-js', get_template_directory_uri() .'/admin/js.js', array(), '1.0.0', 'all');
                        	wp_enqueue_script('kebailli-js');
                        }
                        
                        add_action('admin_enqueue_scripts', 'kebailli_load_script');
                        
                        add_action( 'show_user_profile', 'my_show_extra_profile_fields' );
                        add_action( 'edit_user_profile', 'my_show_extra_profile_fields' );
                        
                        function my_show_extra_profile_fields( $user ) {
                        
                            $liste_disciplines = get_user_meta( $user->ID, 'liste_disciplines' );
                        	$lesjours = get_user_meta( $user->ID, 'lesjours' );
                        	$lesheures = get_user_meta( $user->ID, 'lesheures' );
                        	$enbref = get_user_meta( $user->ID, 'enbref' );
                        	$palmares = get_user_meta( $user->ID, 'palmares' );
                        	$anniv = get_user_meta( $user->ID, 'anniv' );
                        	$fbaccount = get_user_meta( $user->ID, 'fbaccount' );
                        	$ytplaylist= get_user_meta( $user->ID, 'ytaccount' );
                        	
                        
                            ?>
                        	
                        	<table>
                        	<tr>
                        		<td><label>Date de naissance</label></td>
                        		<td><input type="text" id="anniv" name="anniv" value="<?php echo esc_attr( get_the_author_meta( 'anniv', $user->ID ) ); ?>"/></td>
                        	</tr>
                        	<tr>
                        		<td><label>Facebook</label></td>
                        		<td><input type="text" id="fbaccount" name="fbaccount" value="<?php echo esc_attr( get_the_author_meta( 'fbaccount', $user->ID ) ); ?>"/></td>
                        	</tr>
                        	<tr>
                        		<td><label>Chaine Youtube</label></td>
                        		<td><input type="text" id="ytaccount" name="ytaccount" value="<?php echo esc_attr( get_the_author_meta( 'ytaccount', $user->ID ) ); ?>"/></td>
                        	</tr>
                        	</table>
                        
                            <h3>Mon profil sportif</h3>
                            <table class="form-table">
                                <tr>
                                    <th><label >Discipline</label></th>
                                    <td>
                        			<?php
                        			$disciplines =get_option( 'liste_disciplines' );
                        						$listdisp = array( 'Krav-Maga', 'Muay-Thai', 'Grappling', 'K1');
                        						$outputdisp = '';
                        						foreach ( $listdisp as $discipchoisie){
                        							$checkeddisp = ( $disciplines[$listdisp]==1 ? 'checked="checked"' : '' );
                        							$outputdisp .= '<label><input type="radio" id="'.$discipchoisie.'" name="liste_disciplines" value="'.$discipchoisie.'" '.$checkeddisp.' onClick="chargementJours() " /> '.$discipchoisie.'</label><br>';
                        						}
                        						echo $outputdisp;
                        	?>
                        
                                    	</td>			
                        			
                        			<td id="jours" style="display:none">
                        				<?php
                        			$jours = get_option( 'lesjours' );
                        						$listjours = array( 'Lundi', 'Mardi', 'Mercredi', 'Vendredi');
                        						$outputjours = '';
                        						foreach ( $listjours as $jour){
                        							$checkedjours = ( @$listjours[$jour] ==1 ? 'checked="checked"' : '' );
                        							$outputjours .= '<label><input type="checkbox" id="'.$jour.'" name="lesjours" value="'.$jour.'" '.$checkedjours.' /> '.$jour.'</label><br>';
                        						}
                        						echo $outputjours;
                        					
                        	?>
                                       
                                    </td>
                                </tr>
                        		
                        			<div>
                        	
                        				
                        			
                        			</div>
                        			 
                        		
                        		<tr>
                                    <th><label >En bref</label></th>
                                    <td style="width:40%">
                        				<textarea type="text" name="enbref" id="enbref" class="regular-text"><?php echo esc_attr( get_the_author_meta( 'enbref', $user->ID ) ); ?></textarea>
                                    </td>
                        			
                        			<td style="text-align:left; width:60%">
                        				<h4>Ma biographie</h4>
                        				<?php $mabio= esc_attr( get_the_author_meta( 'enbref', $user->ID ) ); ?>
                        				<?php echo nl2br($mabio)  ?>
                        				
                        
                        			</td>
                                </tr>
                        		
                        		<tr>
                                    <th><label ><h4>Mon Palmares sportif</h4></label></th>
                                    <td style="width:40%">
                        				<textarea type="text" name="palmares" id="palmares" class="regular-text"><?php echo esc_attr( get_the_author_meta( 'palmares', $user->ID ) ); ?></textarea>
                                    </td>
                        			
                        		
                                </tr>
                        		
                            </table>
                        	
                        	
                            <?php 
                        
                        }
                        
                        add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
                        add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
                        
                        function save_extra_user_profile_fields( $user_id ) {
                        
                            if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
                        	
                        
                            update_user_meta( $user_id, 'liste_disciplines', $_POST['liste_disciplines'] );
                        	update_user_meta( $user_id, 'lesjours', $_POST['lesjours'] );
                        	update_user_meta( $user_id, 'enbref', $_POST['enbref'] );
                        	update_user_meta( $user_id, 'palmares', $_POST['palmares'] );
                        	update_user_meta( $user_id, 'anniv', $_POST['anniv'] );
                        	update_user_meta( $user_id, 'fbaccount', $_POST['fbaccount'] );
                        	update_user_meta( $user_id, 'ytaccount', $_POST['ytaccount'] );	
                        
                        }
                        
                        
                        /* Suppression des élements par defaut inutiles de la page profil */
                        function my_custom_admin_head() {
                        ?>
                        <style>
                        
                        .user-description-wrap, .user-rich-editing-wrap, .user-admin-color-wrap, .user-comment-shortcuts-wrap,.user-admin-bar-front-wrap, .user-language-wrap, .user-profile-picture, .user-nickname-wrap, .user-url-wrap{
                        	display:none;
                        	}
                        </style>
                        <?php
                        }
                        add_action( 'admin_head', 'my_custom_admin_head' );
                        
                        ?>
                        
                        
                        

                        le script JS appelé est celui ci:

                        function chargementJours() {
                        
                        	var div = document.getElementById("jours");
                        	var lundi = document.getElementById("Lundi");
                        	var mardi = document.getElementById("Mardi");
                        	var mercredi = document.getElementById("Mercredi");
                        	var vendredi = document.getElementById("Vendredi");
                        	var vide = document.getElementById("none");
                        
                        
                        		
                        		if (document.getElementById('Krav-Maga').checked)  {
                        		div.style="display:block";
                        		lundi.disabled = false;
                        		mardi.disabled = true;
                        		mercredi.disabled = true;
                        		vendredi.disabled = false;
                        		
                        		} else if (document.getElementById('Muay-Thai').checked)  {
                        		div.style="display:block";
                        		lundi.disabled = false;
                        		mardi.disabled = false;
                        		mercredi.disabled = false;
                        		vendredi.disabled = true;
                        		
                        		} else if (document.getElementById('Grappling').checked)  {
                        		div.style="display:block";
                        		lundi.disabled = false;
                        		mardi.disabled = true;
                        		mercredi.disabled = false;
                        		vendredi.disabled = true;
                        		
                        		} else if (document.getElementById('K1').checked)  {
                        		div.style="display:block";
                        		lundi.disabled = true;
                        		mardi.disabled = false;
                        		mercredi.disabled = true;
                        		vendredi.disabled = true;
                        		
                        		} else{
                        		div.style="display:none";
                        			
                        	}
                        }
                        




                        • Partager sur Facebook
                        • Partager sur Twitter
                          14 juin 2017 à 13:41:29

                          Je n'avais pas regardé ton code en détail ... Mais il y a selon moi des soucis ...

                          Quand tu écris :

                          $disciplines[$listdisp] == 1

                          $listedisp est un tableau, pas une valeur unique ... tu devrais avoir une erreur PHP sur cette ligne ... non ? Je suis même étonné que la discipline soit mémorisée ... et de toute façon la valeur n'est jamais 1 puisque tu mets le nom de la discipline (ou du jour) et pas un chiffre ...

                          Ensuite tu as mélangé get_user_meta et get_option ... user_meta et option sont deux choses différentes ... la première est une information liée à un user, la deuxième est unique pour tout ton site ...

                          Du coup je te propose de modifier tes boucles ainsi :

                          <?php
                          	add_action('admin_enqueue_scripts', 'kebailli_load_script');
                          	function kebailli_load_script() {
                          		wp_register_script('kebailli-js', get_template_directory_uri() .'/admin/js.js', array(), '1.0.0', 'all');
                          		wp_enqueue_script('kebailli-js');
                          	}
                          	
                          	add_action( 'show_user_profile', 'my_show_extra_profile_fields' );
                          	add_action( 'edit_user_profile', 'my_show_extra_profile_fields' );
                          	function my_show_extra_profile_fields( $user ) {
                          		$lesdisciplines = get_user_meta( $user->ID, 'lesdisciplines' );
                          		$lesjours = get_user_meta( $user->ID, 'lesjours', true );
                          		$lesheures = get_user_meta( $user->ID, 'lesheures' );
                          		$enbref = get_user_meta( $user->ID, 'enbref' );
                          		$palmares = get_user_meta( $user->ID, 'palmares' );
                          		$anniv = get_user_meta( $user->ID, 'anniv' );
                          		$fbaccount = get_user_meta( $user->ID, 'fbaccount' );
                          		$ytplaylist= get_user_meta( $user->ID, 'ytaccount' );
                          ?>
                          <table>
                          	<tr>
                          		<td><label>Date de naissance</label></td>
                          		<td><input type="text" id="anniv" name="anniv" value="<?php echo esc_attr( get_the_author_meta( 'anniv', $user->ID ) ); ?>"/></td>
                          	</tr>
                          	<tr>
                          		<td><label>Facebook</label></td>
                          		<td><input type="text" id="fbaccount" name="fbaccount" value="<?php echo esc_attr( get_the_author_meta( 'fbaccount', $user->ID ) ); ?>"/></td>
                          	</tr>
                          	<tr>
                          		<td><label>Chaine Youtube</label></td>
                          		<td><input type="text" id="ytaccount" name="ytaccount" value="<?php echo esc_attr( get_the_author_meta( 'ytaccount', $user->ID ) ); ?>"/></td>
                          	</tr>
                          </table>
                          <h3>Mon profil sportif</h3>
                          <table class="form-table">
                          	<tr>
                          		<th><label>Discipline</label></th>
                          		<td>
                          <?php
                          		$listdiscip = array( 'Krav-Maga', 'Muay-Thai', 'Grappling', 'K1');
                          		foreach ( $listdiscip as $discipline ) {
                          			$check = '';
                          			foreach( $lesdisciplines as $ladiscipline ) {
                          				if( $ladiscipline == $discipline ) {
                          					$check = 'checked="checked"';
                          					break;
                          				}
                          			}
                          ?>
                          			<label>
                          				<input type="radio" id="<?php echo $discipline; ?>" name="disciplines" value="<?php echo $discipline; ?>" <?php echo $check; ?> onClick="chargementJours()" />
                          				<?php echo $discipline; ?>
                          			</label><br>
                          <?php
                          		}
                          ?>
                          		</td>
                          		<td id="jours" style="display:none">
                          <?php
                          		$listjours = array( 'Lundi', 'Mardi', 'Mercredi', 'Vendredi');
                          		foreach ( $listjours as $jour ) {
                          			$check = '';
                          			foreach( $lesjours as $lejour ) {
                          				if( $jour == $lejour ) {
                          					$check = 'checked="checked"';
                          					break;
                          				}
                          			}
                          ?>
                          			<label>
                          				<input type="checkbox" id="<?php echo $jour; ?>" name="jours[]" value="<?php echo $jour; ?>" <?php echo $check; ?> />
                          				<?php echo $jour; ?>
                          			</label><br>
                          <?php
                          		}
                          ?>
                          		</td>
                          	</tr>
                          	<tr>
                          		<th><label >En bref</label></th>
                          		<td style="width:40%">
                          		<textarea type="text" name="enbref" id="enbref" class="regular-text"><?php echo esc_attr( get_the_author_meta( 'enbref', $user->ID ) ); ?></textarea>
                          		</td>
                          		<td style="text-align:left; width:60%">
                          		<h4>Ma biographie</h4>
                          			<?php $mabio= esc_attr( get_the_author_meta( 'enbref', $user->ID ) ); ?>
                          			<?php echo nl2br($mabio); ?>
                          		</td>
                          	</tr>
                          	<tr>
                          		<th><label ><h4>Mon Palmares sportif</h4></label></th>
                          		<td style="width:40%">
                          			<textarea type="text" name="palmares" id="palmares" class="regular-text"><?php echo esc_attr( get_the_author_meta( 'palmares', $user->ID ) ); ?></textarea>
                          		</td>
                          	</tr>
                          </table>
                          <?php
                          	}
                          	
                          	add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
                          	add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
                          	function save_extra_user_profile_fields( $user_id ) {
                          		if( current_user_can( 'edit_user', $user_id ) ) {
                          			update_user_meta( $user_id, 'lesdisciplines', $_POST['disciplines'] );
                          			update_user_meta( $user_id, 'lesjours', $_POST['jours'] );
                          			update_user_meta( $user_id, 'enbref', $_POST['enbref'] );
                          			update_user_meta( $user_id, 'palmares', $_POST['palmares'] );
                          			update_user_meta( $user_id, 'anniv', $_POST['anniv'] );
                          			update_user_meta( $user_id, 'fbaccount', $_POST['fbaccount'] );
                          			update_user_meta( $user_id, 'ytaccount', $_POST['ytaccount'] );
                          		}
                          	}
                          ?>

                          J'ai modifié la condition de vérification pour le checked, j'ai rajouté les [] dans le name des checkbox pour signaler un tableau de valeurs et j'ai précisé "true" dans la fonction get_user_meta pour ne récupérer qu'un seul tableau ;)

                          Attention, pour me mettre dans le code j'ai uniformisé le nommage des variables ...

                          A tester ;)

                          -
                          Edité par Benzouye 14 juin 2017 à 14:10:47

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                            14 juin 2017 à 14:35:30

                            J'étais partie sur un tuto wordpress sur Youtube dont je m'étais inspirée pour faire ma page, la personne faisait ainsi, ça m'avait surpris également que ça fonctionne tel quel. 

                            Un grand merci, on a déjà une bonne avancée, mon radio des discipline réapparaît bien lors du reload de la page!:D

                            Par contre au niveau de mes checkbox "les jours" j'ai une erreur qui apparaît avant chaque checkbox de chaque jours:

                            "Invalid argument supplied for foreach() in "


                            pour la ligne suivante: 

                             foreach( $lesjours as $lejour ) {
                                            if( $jour == $lejour ) {
                                                $check = 'checked="checked"';
                                                break;
                                            }




                            -
                            Edité par Lust 14 juin 2017 à 14:35:45

                            • Partager sur Facebook
                            • Partager sur Twitter
                              14 juin 2017 à 15:18:50

                              Benzouye a écrit:

                              j'ai précisé "true" dans la fonction get_user_meta pour ne récupérer qu'un seul tableau

                              As-tu suivi ce point ?

                              $lesjours = get_user_meta( $user->ID, 'lesjours', true );

                              En fait il est possible que get_user_meta retourne un tableau de tableaux. Le dernier paramètre ($single dans la doc WordPress) permet de simplifier cela et de ne retourner qu'un élément.

                              Du coup, il faudrait vérifier le contenu de $lesjours et ajuster $single en fonction ...

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                14 juin 2017 à 17:12:43

                                En fait après vérification, ça m'affiche l'erreur si jamais ma variable n'est pas dans la base de données, du moment que je clique quand même sur mes checkbox des jours (qui apparaissent sous l'erreur), qu'elle est donc créée et remplie l'erreur disparaît et mes values se stockent bien dans la BDD

                                Mais à la sortie en faisant un echo ca m'affiche "Array"

                                Donc faut que je vois dans la doc comment extraire mes résultats multiples  de cet array pour le dernier point.

                                -
                                Edité par Lust 14 juin 2017 à 17:22:25

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  14 juin 2017 à 17:18:35

                                  Lust a écrit:

                                  ça m'affiche l'erreur si jamais ma variable n'est pas dans la base de données

                                  Oui, il faudrait contrôler qu'il existe des choses avant de faire le foreach. Mais ce n'est pas une erreur, c'est un warning, que tu ne devrais plus afficher en passant ton site en production ( error_reporting( 0 ) ).

                                  Lust a écrit:

                                  ca me retourne un "NULL" pour la value de ma key

                                  Rien compris :) Le bout de code en question ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                    14 juin 2017 à 17:30:11

                                    j'ai édité mon post, le NULL  l'ancienne variable avant la modification avec le code que tu m'avais donné ;)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      14 juin 2017 à 17:49:18

                                      Lust a écrit:

                                      Mais à la sortie en faisant un echo ca m'affiche "Array"

                                      Oui ... forcément ... c'est le principe de la fonction get_user_meta, elle retourne un tableau ... d'où le :

                                      Benzouye a écrit:

                                      Benzouye a écrit:

                                      j'ai précisé "true" dans la fonction get_user_meta pour ne récupérer qu'un seul tableau

                                      As-tu suivi ce point ?

                                      $lesjours = get_user_meta( $user->ID, 'lesjours', true );

                                      En fait il est possible que get_user_meta retourne un tableau de tableaux. Le dernier paramètre ($single dans la doc WordPress) permet de simplifier cela et de ne retourner qu'un élément.

                                      Allez tu touches au but ...

                                      Peux-tu reposter une dernière fois le code ;)

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                                        14 juin 2017 à 21:55:44

                                        Oui c'est ce que j'avais cru comprendre, mais du coup je vois pas trop comment faire ressortir mes infos avec ce single. j'ai fait plusieurs tests avant de te répondre mais rien de fructuant...

                                        <?php
                                            add_action('admin_enqueue_scripts', 'kebailli_load_script');
                                            function kebailli_load_script() {
                                                wp_register_script('kebailli-js', get_template_directory_uri() .'/admin/js.js', array(), '1.0.0', 'all');
                                                wp_enqueue_script('kebailli-js');
                                            }
                                             
                                            add_action( 'show_user_profile', 'my_show_extra_profile_fields' );
                                            add_action( 'edit_user_profile', 'my_show_extra_profile_fields' );
                                            function my_show_extra_profile_fields( $user ) {
                                                $lesdisciplines = get_user_meta( $user->ID, 'lesdisciplines' );
                                                $lesjours = get_user_meta( $user->ID, 'lesjours', true );
                                                $lesheures = get_user_meta( $user->ID, 'lesheures' );
                                                $enbref = get_user_meta( $user->ID, 'enbref' );
                                                $palmares = get_user_meta( $user->ID, 'palmares' );
                                                $anniv = get_user_meta( $user->ID, 'anniv' );
                                                $fbaccount = get_user_meta( $user->ID, 'fbaccount' );
                                                $ytplaylist= get_user_meta( $user->ID, 'ytaccount' );
                                        ?>
                                        <table>
                                            <tr>
                                                <td><label>Date de naissance</label></td>
                                                <td><input type="text" id="anniv" name="anniv" value="<?php echo esc_attr( get_the_author_meta( 'anniv', $user->ID ) ); ?>"/></td>
                                            </tr>
                                            <tr>
                                                <td><label>Facebook</label></td>
                                                <td><input type="text" id="fbaccount" name="fbaccount" value="<?php echo esc_attr( get_the_author_meta( 'fbaccount', $user->ID ) ); ?>"/></td>
                                            </tr>
                                            <tr>
                                                <td><label>Chaine Youtube</label></td>
                                                <td><input type="text" id="ytaccount" name="ytaccount" value="<?php echo esc_attr( get_the_author_meta( 'ytaccount', $user->ID ) ); ?>"/></td>
                                            </tr>
                                        </table>
                                        <h3>Mon profil sportif</h3>
                                        <table class="form-table"
                                            <tr>
                                                <th><label>Discipline</label></th>
                                                <td>
                                        <?php
                                                $listdiscip = array( 'Krav-Maga', 'Muay-Thai', 'Grappling', 'K1');
                                                foreach ( $listdiscip as $discipline ) {
                                                    $check = '';
                                                    foreach( $lesdisciplines as $ladiscipline ) {
                                                        if( $ladiscipline == $discipline ) {
                                                            $check = 'checked="checked"';
                                                            break;
                                                        }
                                                    }
                                        ?>
                                                    <label>
                                                        <input type="radio" id="<?php echo $discipline; ?>" name="disciplines" value="<?php echo $discipline; ?>" <?php echo $check; ?> onChange="chargementJours()" />
                                                        <?php echo $discipline; ?>
                                                    </label><br>
                                        <?php
                                                }
                                        ?>
                                                </td>
                                                <td id="jours" >
                                        		
                                        
                                        			<?php
                                        		// On vérifie si c'est vide et on cache le message d'alerte si jamais
                                        			if($lesjours == '') {
                                        				error_reporting(E_ERROR | E_PARSE);
                                        			}
                                        		
                                        					$listjours = array( 'Lundi', 'Mardi', 'Mercredi', 'Vendredi');
                                        					foreach ( $listjours as $jour ) {
                                        						$check = '';
                                        						foreach( $lesjours as $lejour ) {
                                        							if( $lejour == $jour ) {
                                        								$check = 'checked="checked"';
                                        								break;
                                        							}
                                        						}
                                        					
                                        			?>
                                                    <label>
                                                        <input type="checkbox" id="<?php echo $jour; ?>" name="jours[]" value="<?php echo $jour; ?>" <?php echo $check;?> disabled  />
                                                        <?php echo $jour; ?>
                                                    </label><br>
                                        <?php
                                                }
                                        ?>
                                                </td>
                                        
                                            </tr>
                                            <tr>
                                                <th><label >En bref</label></th>
                                                <td style="width:40%">
                                                <textarea type="text" name="enbref" id="enbref" class="regular-text"><?php echo esc_attr( get_the_author_meta( 'enbref', $user->ID ) ); ?></textarea>
                                                </td>
                                                <td style="text-align:left; width:60%">
                                                <h4>Ma biographie</h4>
                                                    <?php $mabio= esc_attr( get_the_author_meta( 'enbref', $user->ID ) ); ?>
                                                    <?php echo nl2br($mabio); ?>
                                                </td>
                                            </tr>
                                            <tr>
                                                <th><label ><h4>Mon Palmares sportif</h4></label></th>
                                                <td style="width:40%">
                                                    <textarea type="text" name="palmares" id="palmares" class="regular-text"><?php echo esc_attr( get_the_author_meta( 'palmares', $user->ID ) ); ?></textarea>
                                                </td>
                                            </tr>
                                        </table>
                                        <?php
                                            }
                                             
                                            add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
                                            add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
                                            function save_extra_user_profile_fields( $user_id ) {
                                                if( current_user_can( 'edit_user', $user_id ) ) {
                                                    update_user_meta( $user_id, 'lesdisciplines', $_POST['disciplines'] );
                                                    update_user_meta( $user_id, 'lesjours', $_POST['jours'] );
                                                    update_user_meta( $user_id, 'enbref', $_POST['enbref'] );
                                                    update_user_meta( $user_id, 'palmares', $_POST['palmares'] );
                                                    update_user_meta( $user_id, 'anniv', $_POST['anniv'] );
                                                    update_user_meta( $user_id, 'fbaccount', $_POST['fbaccount'] );
                                                    update_user_meta( $user_id, 'ytaccount', $_POST['ytaccount'] );
                                                }
                                            }
                                        
                                        
                                        /* Suppression des élements par defaut nutiles de la page profil */
                                        function my_custom_admin_head() {
                                        ?>
                                        <style>
                                        
                                        .user-description-wrap, .user-rich-editing-wrap, .user-admin-color-wrap, .user-comment-shortcuts-wrap,.user-admin-bar-front-wrap, .user-language-wrap, .user-profile-picture, .user-nickname-wrap, .user-url-wrap{
                                        	display:none;
                                        	}
                                        </style>
                                        <?php
                                        }
                                        add_action( 'admin_head', 'my_custom_admin_head' );
                                        
                                        ?>
                                        
                                        
                                        



                                        -
                                        Edité par Lust 14 juin 2017 à 21:59:35

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Liste deroulante garder checkbox en mémoire

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                        • Editeur
                                        • Markdown