2012-12-16 2 views
0

이 코드를 실행하면 mysql 데이터베이스 테이블 student_log의 행이 만들어집니다. 그러나 student_name 열은 사용자가 입력 한 값으로 채워지지 않습니다. 그게 무슨 잘못이야?mysql 테이블의 이름 열이 삽입 된 이름없이 비어있는 이유는 무엇입니까?

<?php 

function student_grant_menu() { 
    $items = array(); 
    $items['student_grant/form'] = array(
    'title' => t('student_grant'), 
    'page callback' => 'student_grant', 
    'access arguments' => array('access content'), 
    'description' => t('student_grant'), 
    'type' => MENU_CALLBACK, 
); 
    return $items; 
} 

function student_grant_form() { 
    return drupal_get_form('student_grant_my_form'); 
} 

function student_grant_my_form($form_state) { 
    $form['name'] = array(
    '#type' => 'textfield', 
    '#title' => t('Name'), 
    '#size' => 30, 
    '#required' => TRUE, 
); 



    // Adds a simple submit button that refreshes the form and clears its contents -- this is the default behavior for forms. 
    $form['submit'] = array(
    '#type' => 'submit', 
    '#value' => 'Submit', 

); 
    return $form; 
} 

// name of table is student_log and field is student_name. Name passed from form_state is put in student_name field? 
function student_grant_my_form_submit($form, &$form_state) { 

    db_query("INSERT INTO {student_log} (student_name) VALUES ('%s')", 
    $form_state['name']); 
    drupal_set_message(t('Your form has been saved.')); 

} 
?> 
당신은 다음과 같이 $ form_state [ '값']보고해야

답변

0

:

function student_grant_my_form_submit($form, &$form_state) { 

    db_query("INSERT INTO {student_log} (student_name) VALUES ('%s')", 
    $form_state['values']['name']); 
    drupal_set_message(t('Your form has been saved.')); 

} 
+0

왜 [ '값']입니까? 감사합니다 – ingrid

+0

bc : '#default_value'=> $ form_state [ 'values'] [ 'name']? – ingrid

+0

여기 $ form_state에 대한 설명이 있습니다. http://drupal.org/node/751826 $ form_state [ 'values'] 이외에는 거의 언급하지 않았지만 form_state에 다른 배열 요소가 있습니다. $ form_state [ 'redirect']. – sonofagun