mysql数据库如何让表单与表单关联共用,form表单写入mysql问题及数据库关联问题...

非常详细的,很不错

1. 有办法实现选CEO的 写入数据库是001 选COO 的写入数据库是002, 选CTO 的写入数据库003,然后有个关联的表,外键 003 是CTO, 002是COO, 001 是CEO 么?

'#options' => drupal_map_assoc(array('CEO', t('COO'), t('CTO'),t('CFO'), t('CCO'))),

这段中,有发现drupal_map_assoc()方法吗? 这个方法是为了实现label 跟 value 一样,如果你想这两个值显示不一样,那就取消drupal_map_assoc():

$form['job_title'] = array(

'#type' => 'select',

'#title' => 'Job Title:',

'#options' => array(001 => ('CEO'), 002 => t('COO'), 003 => t('CTO'), 004=> t('CFO'), 005 => t('CCO')),

'#required' => TRUE,

);

2. 然后就是国家的话,那个下拉框选项我不是要copy到手残废。把200多个国家写在option 里面么?

请看看 Chosen 模块,对于下拉列表,非常方便。用户体验非常好。

3. 然后我让没登陆者不能到subscribe这个页面,就重写了subscribe这一页page--subscribe.tpl.php 扔 主题模板里面了。

在那里做了个判断:没登陆者直接跳到登陆界面。有什么友好点的措施么,或弹出javascript窗口温馨提示一下:请登陆啊亲~

还有这个判断可以写到subscribe module 里面么?

有很多种方法

方法1:直接修改page--subscribe.tpl.php

<?php if ($user->uid) : ?>

$block = block_load('user', 'login');

$signup = drupal_render(_block_get_renderable_array(_block_render_blocks(array($block))));

print $signup;

?>

或者:

<?php if ($user->uid) : ?>

方法2:在subscribe模块中写权限

hook_menu 中有一项权限选择可以在这里通过权限控制。如果没有权限,就drupal_set_message, 或者跳转到xxx.com/user

4. 要实现填过详细信息的人,就不需要填第二次了?

你的方法,也是我的方法,这个也有一个例子,就是drupal commerce 组件系列中有一个 commerce addressbook。它是为了让用户能重用结账地址。基本也是用这个方式实现,如果你有想参考下,可以安装这个模块试一下。

5. 如何做关联表?

这个其实看drupal core 的表就能看出,举例,content type 新建了一个字段假使叫image,它其实在数据库中,这个image并非以字段保存,而是直接生成一个表 field_data_field_image,当你添加数据的时候,他会直接在这个表存资料。如:

c2814fa772419c4828cab958c3c82144.png

上图是field_data_field_image表,有看到框框俩个字段吗?第一个字段 entity_id,就是关联 node表的 nid的,而第二个field_image_fid, 就是关联file_managed 中的fid的,这三个表,组成了一条完整的node记录

node表:实现记录的基本资料

file_managed表:保存图片存放地址

field_data_field_image表:将node表跟file_managed表通过entiey_id 跟 field_image_fid 关联起来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值