2014-07-27 56 views
2

我使用下拉選擇選項創建註冊表單。 寄存器形式是:下拉選項以註冊表格形式選擇

名稱: 電子郵件: 密碼: 學校:(下拉選項列表) 我已經設置了兩個表,一個名爲「用戶」,其他的「學校」。 在我的「用戶」表中,列爲"id"(int(11)),"email"(varchar(255),"name"(varchar(64)和「school」(varchar(64))。 在我的「學校」表中,列是「id」(int(11)),「users_id」(int(11))和「school_id」(int(11))「。我不確定這是否表格的設置是正確的,所以請告訴我是否有更好的設置方式,我做了「school_id」,因爲我以後也會有一個搜索系統,用戶可以在特定學校搜索人員。迄今爲止我register.html的組成部分:

<form action="register.php" method="post"> 
    <div class="field"> 
     <label for="email">Email:</label> 
     <input type="email" id="email" value="" autocomplete="on" action="" /> 
    </div> 

    <div class="field"> 
     <label for="password">Password:</label><br /> 
     <input type="password" id="password" autocomplete="off" /> 
    </div> 

    <div class="field"> 
     <label for="name">Name:</label><br /> 
     <input type="text" id="name" action="" /> 
    </div> 

    <div class="field"> 
     <label for="school">School:</label> 
     <select id="school" size="1"> 
      <option value="a">Apple School</option> 
      <option value="b">Banana School</option> 
      <option value="c">Carrot School</option> 
     </select> 
    </div>  

    <input name="Register" type="submit" id="register" value="" /> 
</form> 

而且我register.php:

<?php 
require_once 'core/init.php'; 

if(Input::exists()) { 
    if(Token::check(Input::get('token'))) { 

    $validate = new Validate(); 
    $validation = $validate->check($_POST, array(
     'email' => array(
      'required' => true, 
      'min' => 2, 
      'max' => 255, 
      'unique' => 'users' 
     ), 
     'password' => array(
      'required' => true, 
      'min' => 6 
     ), 
     'name' => array(
      'required' => true, 
      'min' => 2, 
      'max' => 50 
     ), 
//I don't know how to put the school drop down in here) 
    )); 

    if($validation->passed()) { 
     $user = new User(); 

     $salt = Hash::salt(32); 

     try { 
      $user->create(array(
       'email' => Input::get('email'), 
       'password' => Hash::make(Input::get('password'), $salt), 
       'salt' => $salt, 
       'name' => Input::get('name'), 
       'school' => Input::get('school'), 
       'joined' => date('Y-m-d H:i:s'), 
      )); 

      Session::flash('home', 'You have been registered and can now log in!'); 
      Redirect::to('index.php'); 

     } catch(Exception $e) { 
      die($e->getMessage()); 
     } 

    } else { 
     foreach($validation->errors() as $error) { 
      echo $error, '<br>'; 
     } 
    } 
} 
}?> 

如果有其他的方法來做到這一點,請幫助我。我通過phpacademy的OOP登錄/註冊教程找到了這種方法。

+0

你得到的錯誤是什麼? –

+0

這是在任何框架上運行嗎? – MikeWu

+0

沒有得到任何錯誤,我問如何將下拉選項列表編碼到這個編碼 – sleepypanda

回答

0

我想你應該改變你的表格式

用戶表

"id"(int(11))"email"(varchar(255)"name"(varchar(64),並"school_id"(int(11))

校表

"id"(int(11))"school_id"(int(11))",和"school_name"(varchar(255))

現在您可以訪問學校表格,以便將代碼放入代碼中。

+0

我應該在學校表中使用auto_increment作爲id(正如我爲用戶所做的那樣)和school_id? – sleepypanda

+0

1.是的,你應該上學(id auto_increment)。 2.如果你想分配一些特定的ID到學校,那麼你可以使用'school_id',否則你可以忽略'school_id' –

+0

它顯示'不正確的表定義;只有一個自動列,它必須被定義爲一個鍵「當我嘗試自動增加school_id時,我該怎麼辦? – sleepypanda