2010-12-02 4 views
5

Im ayant quelques problèmes avec la fonction form_dropdown dans CodeIgniter .... Mon application est en 2 parties, un utilisateur entre, entre un formulaire et soumet .... Une fois qu'il a envoyé un administrateur peut entrer et modifier ce formulaire de personnes, puis enregistrez-le dans la base de données.Code Igniter - form_dropdown en sélectionnant la valeur correcte de la base de données

Ainsi, pour afficher le menu déroulant sous la forme initiale, im en utilisant les éléments suivants (toutes les options dans le menu déroulant proviennent de la base de données)

Modèle:

function get_salaries_dropdown() 
{ 
    $this->db->from($this->table_name); 
    $this->db->order_by('id'); 
    $result = $this->db->get(); 
    $return = array(); 
    if($result->num_rows() > 0){ 
      $return[''] = 'please select'; 
     foreach($result->result_array() as $row){ 
      $return[$row['id']] = $row['salaryrange']; 
     } 
    } 
    return $return; 
} 

Ensuite, dans le contrôleur:

$data['salaries'] = $this->salary_expectation->get_salaries_dropdown(); 

Puis enfin la vue:

<?php echo form_dropdown('salaries', $salaries, set_value('salaries', $salaries)); ?> 

Ce bit fonctionne parfaitement pour afficher la liste déroulante remplie de valeurs que l'utilisateur doit sélectionner. Ainsi, lorsque l'utilisateur sélectionne une valeur, puis enregistre, il est sauvegardé dans la base de données.

Sur la page Modifier que l'administrateur voit, im en utilisant le même code pour afficher la liste déroulante remplie d'options, mais comment puis-je l'obtenir pour choisir automatiquement celui qui a été sélectionné par l'utilisateur dans la phase initiale?

vôtre,

+0

De la documentation CodeIgniter - 'Le premier paramètre contiendra le nom du champ, le second paramètre contiendra un tableau associatif d'options, et le troisième paramètre contiendra la valeur que vous souhaitez sélectionner. »Quelle est cette méthode' set_value' que vous utilisez dans le troisième paramètre? – vikmalhotra

+0

Il y a cette solution de codeigniter que j'ai trouvé https://github.com/thiswolf/codeigniter-enum-select-boxes –

Répondre

3

Selon la documentation Codeigniter

Le premier paramètre contiendra le nom du champ, le second paramètre contiendra un tableau associatif d'options, et le troisième Le paramètre contiendra la valeur que vous souhaitez . Vous pouvez également passer un tableau de plusieurs éléments via le troisième paramètre , et CodeIgniter créer une sélection multiple pour vous.

Votre contrôleur d'administration doit avoir quelque chose comme

$data['selected'] = $this->salary_expectation->get_salary_selected(); 

Selon cette étude, la vue admin devrait être comme ça

<?php echo form_dropdown('salaries', $salaries, $selected_value); ?> 
0

La fonction form_dropdown a un troisième paramètre de l'option sélectionnée. Utilisez comme ceci:

<?php echo form_dropdown('piece_type', 
     array(
      'type1' => 'Firts type', 
      'type2' => 'Second option' 
      $selected_value, 
      'id = "piece_type"') ?> 
1

une solution mauvaise pour sélectionner l'élément <option> de <select> généré par form_dropdown() La fonction de form_helper utilise l'entrée de poste envoyée. J'ai fait cela parce que toutes les solutions que j'ai trouvées n'affichent pas la valeur que l'utilisateur sélectionne dans le formulaire ni set_selected ni set_vaule. Eh bien, dans mon contrôleur j'ai:

$countries = $this->country_model->get_dropdown_array(); // The array have something like $countries[COUNTRY_ID] = COUNTRY_NAME 
$data['countries']=$countries; 

À mon avis:

$selected_country = $this->input->post('country'); 
echo form_dropdown('country',$countries,$selected_country); 

Et fonctionne très bien !!! :)

0

J'ai eu le même problème mais j'ai surmonté ce problème en utilisant le syntex allumeur de code. Voici la solution. étape Fisrt Avant la boucle initialize deux tableaux

$options = array(); 
$select = array(); 

Puis dans la boucle écrire cette instruction

foreach($result->result_array() as $row) 
{ 
    /////////Your Condition //////////// 
    if($row['id'] == $myarray['mycolumn']) 
    {    
     $options [$row['id']] = $row['salaryrange']; 
     $select = $row['id'] ; 
    }else{ 
     $options [$row['id']] = $row['salaryrange']; 
    } 
} 

maintenant

echo form_dropdown('dropdown_name' , $options , $select); 

Il fonctionne ok

0

Pour la mise à jour cas , vous avez une valeur correspondante à afficher, si la variable passant est comme ind_post de $ (du contrôleur) puis écrire ce code comme:

<?php echo form_dropdown('salaries', $salaries, $ind_post->salaries,''); ?> 
Questions connexes