質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • PHP

    23959questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CodeIgniter

    289questions

    CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

CodeIgniter3のform_dropdownがうまく動いてくれません。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 907

nobutan

score 7

いつもお世話になります。本日は、Codeigniterについてご教授お願いします。

開発環境 
XAMPP for Windows(PHP7,mysql,Apache2.4)
IDE eclipse

前提・実現したいこと

Codeignitre3を勉強しています。
PHP(Codeignitre3)でイベント管理システムを作っています。
着手が簡単そうなユーザ登録機能から作り始めました。

「ユーザ種別」と「所属グループ」を名称(例えば、技術部や一般ユーザ)で表示したいです。

大変申し訳ないと思いますが教えていただけないでしょうか。 
よろしくお願いします。 
以下がソースです。

発生している問題・エラーメッセージ

(1)以下のような画面になってしまいます。
イメージ説明

(2)【保存】ボタンを押すと以下の画面になってしまいます。
イメージ説明
URLも「http://localhost:8888/hogehoge/member/index.php/member/add」になってしまいます。
※C:\pleiades\xampp\htdocs\hogehoge\application\config\config.phpにて。
$config['base_url'] = 'http://localhost:8888/hogehoge/member/';
base_urlも変更済みです。

該当のソースコード

//application\views\member_add.php

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>ユーザ登録</title>
</head>
<body>
<h1>ユーザ登録</h1>
<?php echo form_open(); ?>
 <table border="1">
 <tr>
 <th>氏名(必須)</th>
 <td>
 <?php echo form_error('name', '<p>', '</p>'); ?>
 <?php echo form_input('name', set_value('name')); ?>
  </td>
 </tr>
 <tr>
 <th>ログインID(必須)</th>
 <td>
 <?php echo form_error('login_id', '<p>', '</p>'); ?>
 <?php echo form_input('login_id', set_value('login_id')); ?>
 </td>
 </tr>
 <tr>
 <th>パスワード(必須)</th>
 <td>
 <?php echo form_error('login_pass', '<p>', '</p>'); ?>
 <?php echo form_password('login_pass', set_value('login_pass')); ?>
 </td>
 </tr>
 <tr>
 <th>ユーザ種別(必須)<th>
 <td>
 <?php echo form_error('user_types', '<p>', '</p>'); ?>
 <?php echo form_dropdown('user_types', $user_type); ?>
 </td>
 </tr>
 <tr>
 <th>所属グループ(必須)<th>
 <td>
 <?php echo form_error('groups', '<p>', '</p>'); ?>
 <?php echo form_dropdown('groups', $group); ?>
 </td>
 </tr>
 </table>
 <p>
 <?php echo form_submit('post', '保存'); ?>
 </p>
<?php echo form_close(); ?>
</body>
</html>

//application\controllers\Member.php

<?php
class Member extends CI_Controller {

 public function add() {
     $this->load->model('users_model');
     $this->load->helper('form');
     $this->load->library('form_validation');
     $this->form_validation->set_rules('name', '氏名(必須)', 'required');
     $this->form_validation->set_rules('login_id', 'ログインID(必須)', 'required');
     $this->form_validation->set_rules('login_pass', 'パスワード(必須)', 'required');
     if ($this->form_validation->run()) {
         $users['name'] = $this->input->post('name');
         $users['login_id'] = $this->input->post('login_id');
         $users['login_pass'] = $this->input->post('login_pass');
         $users['created'] = date('Y-m-d H:i:s');
         $this->Users_model->insert($users);
         $this->load->view('member_add_done');
     }
     else {
          $this->load->model('user_types_model');
         $data['user_type'] = $this->user_types_model->find_all();
        var_dump($data);

         $this->load->model('groups_model');
         $data['group'] = $this->groups_model->find_all();
         var_dump($data['group']);
         $this->load->view('member_add', $data);
     }
 }
}

//application\models\Users_model.php

<?php
class Users_model extends CI_Model {
 public $id;
 public $login_id;
 public $login_pass;
 public $name;
 public $type_id;
 public $group_id;
 public $created;
 public function find_all() {
 $query = $this->db->query("SELECT * FROM users");
 return $query->result('Users_model');
 }
 public function total_count() {
     return $this->db->count_all('users');
 }
 public function insert($users) {
     $this->db->insert('users', $users);
 }
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

マニュアルにもありますが、値のリストは一次元配列でないと動きませんよ。
http://www.codeigniter.com/user_guide/helpers/form_helper.html

該当部分の抜粋

$options = array(
    'small'     => 'Small Shirt',
    'med'       => 'Medium Shirt',
    'large'     => 'Large Shirt',
    'xlarge'    => 'Extra Large Shirt',
);

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/23 18:58

    ご回答ありがとうございます。
    初心者で大変恐縮ではございますが、以下のモデルで一次元配列でクエリを取得する方法はありますでしょうか。度々すいません。

    //application\models\Users_model.php
    public function find_all() {
    $query = $this->db->query("SELECT * FROM users");
    return $query->result('Users_model');
    }

    キャンセル

  • 2016/11/23 23:45 編集

    残念ながら、ループを作って配列を作成しないと実現できません。
    あと、ドロップダウンにしたいのはusersじゃなくてuser_typesですよね?

    public function find_all() {
    $arrSelections = array();
    $query = $this->db->query("SELECT * FROM user_type");
    if($query->num_rows() === 0) {
    return $arrSelections;
    }
    foreach ($query->result() as $row) {
    $arrSelections[$row->id] = $row->type;
    }
    return $arrSelections;
    }

    キャンセル

同じタグがついた質問を見る

  • PHP

    23959questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CodeIgniter

    289questions

    CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。