[英]custom url to display content from database in custom form in drupal 7
我在drupal 7中创建了自定义表单,当我尝试检索自定义url数据中的数据时,数据却保存在数据库中的“人”表中,但是在加载表单页面时,“页面未找到”消息却显示不正确表单,如果注释了用于在自定义url中检索数据的代码,那么我将获得表单页面。 这是我使用的代码:
<?php
/**
* @file
* Provides a custom form, data are saved in database and can retrieve data in table format in custom url.
*/
//Implementation of hook_menu()
function form_test_menu() {
$items['formtest'] = array(
'title' => 'Form Test',
'page callback' => 'drupal_get_form',
'page arguments' => array('form_test_form'),
'access callback' => TRUE,
);
$items = array();
$items['results'] = array( // change to the url you want
'title' => 'results',
'type' => MENU_CALLBACK,
'page callback' => 'results',
'access arguments' => array('access content'),
);
return $items;
}
//function to describe field in the form
function form_test_form($form,&$form_submit) {
$form['name'] = array(
'#title' => t('name'),
'#type' => 'textfield',
'#size' => 20,
'#maxlength' => 20,
'#required' => TRUE,
'#default_value' => 'Enter Your Name',//make this field required
);
$form['address']['email'] = array(
'#type' => 'textfield',
'#title' => t('E-mail'),
'#required' => TRUE,
'#maxlength' => 255,
);
$form['price'] = array(
'#type' => 'textfield', //you can find a list of available types in the form api
'#title' => 'What is Your Price?',
'#size' => 10,
'#maxlength' => 10,
'#required' => TRUE, //make this field required
);
$form['attending'] = array(
'#type' => 'radios',
'#title' => t('Will you be attending?'),
'#options' => array(
'1' => t('Yes'),
'0' => t('No'),
),
'#required' => TRUE,
'#default_value' => isset($attending) ? $attending : NULL,
);
$form['submit'] = array(
'#value' => 'Submit',
'#type' => 'submit',
);
return $form;
}
//validation code for integer
function form_test_form_validate($form, &$form_state) {
if (!($form_state['values']['price'] > 0)){
form_set_error('price', t('Price must be a positive number.'));
}
}
//inserting data into database
drupal_write_record('person', $data);
function form_test_form_submit($form, &$form_state) {
$id = db_insert('person')
->fields(array(
'name' => $form_state['values']['name'],
'email' => $form_state['values']['email'],
'price' => $form_state['values']['price'],
'attending' => $form_state['values']['attending'],
// 'ios' => $form_state['values']['ios'],
))
->execute();
drupal_set_message(t('data saved successfully.'));
}
//Retrieving data from database
function results() {
print "CUSTOM TABLE CONTENT";
print "<br /> ";
print "<br /> ";
$query = db_select('person', 'u');
$query->fields('u', array('name')); //mention the field that you want to display
$query->fields('u', array('email'));
$query->fields('u', array('price'));
$query->fields('u', array('attending'));
$result = $query->execute();
while($record = $result->fetchAssoc()) { //while loop mention how the data want to display
echo "<li>";
print_r($record['name']);
print " ";
print_r($record['email']);
print " ";
print_r($record['price']);
print " ";
print_r($record['attending']);
echo "</li>";
}
}
$ items = array(); 该代码应位于主函数form_test_menu()下{该代码应像这样
function form_test_menu() {
$items = array();
没有其他修改将起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.