我正在努力思考如何创建一组选项字段,这些字段应该能够重复尽可能多的次数。但我很难想出如何继续下去。
目前,我已经设置了用于管理选项的可视化界面,但我不知道如何将它们保存到保存时的选项中。
这样的逻辑将如何区分不同的部分?在选项数组中将每个部分保持为单独的数组(我想是吧?)这样,您就可以添加任意多的节,以及任意多的嵌套数据字段。
这个想法很简单
1) 单击添加节以创建新节————————
3)。。并将多个输入字段关联到节————
您还可以添加更多节
我的atm代码是:
PHP
<?php
function rd_settings_page() {
?>
<div class="wrap">
<h2><?php _e( \'Settings\', \'blog\' ); ?></h2>
<form enctype="multipart/form-data" action="options.php" method="POST">
<?php settings_fields( \'rd-settings-group\' ); ?>
<?php do_settings_sections( \'rd-settings\' ); ?>
<?php submit_button(); ?>
</form>
</div>
<?php
}
function rd_settings_api_init() {
add_settings_section(
\'rd_blog_info_section\',
__( \'Blog info settings\', \'blog\' ),
\'rd_blog_info_section_callback_function\',
\'rd-settings\'
);
if ( 1 === get_current_blog_id() ) {
register_setting( \'rd-settings-group\', \'rd_fashion_list\' );
register_setting( \'rd-settings-group\', \'rd_blog_description\' );
}
if ( 1 === get_current_blog_id() ) {
add_settings_field(
\'rd_fashion_list\',
__( \'Fashion Blogs\', \'blog\' ),
\'rd_fashion_list_callback_function\',
\'rd-settings\',
\'rd_blog_info_section\'
);
}
}
add_action( \'admin_init\', \'rd_settings_api_init\' );
function rd_blog_info_section_callback_function() {
echo \'<p>Blog info settings</p>\';
}
function rd_fashion_list_callback_function() {
$setting = get_option( \'rd_fashion_list\' );?>
<div class="inner-wrap"></div>
<span class="addsection button-primary">
+ Add Section
</span>
<?php
}
JS
$(document).on(\'click\', \'.addsection\', function () {
$(this).prev(\'.inner-wrap\').append(\'<div class="section">\'+
\'<input type="text" name="rd_facebook" id="rd-facebook" value=""/>\'+
\' Name for section\'+
\'<ul>\'+
\'<li>\'+
\'<select>\'+
\'<option value="" disabled="disabled" selected="selected">Please select a blog</option>\'+
\'<option value="1">One</option>\'+
\'<option value="2">Two</option>\'+
\'</select>\'+
\'<span class="close">×</span>\'+
\'</li>\'+
\'</ul>\'+
\'<span class="addblog button">+ Add Blog</span>\'+
\'</div>\');
});
$(document).on(\'click\', \'.addblog\', function () {
$(this).prev(\'ul\').append(\'<li>\'+
\'<select>\'+
\'<option value="" disabled="disabled" selected="selected">Please select a blog</option>\'+
\'<option value="1">One</option>\'+
\'<option value="2">Two</option>\'+
\'</select>\'+
\'<span class="close">×</span>\'+
\'</li>\');
});
SO网友:davidcondrey
这并不是对你的具体情况的直接回答,但这可能会帮助你找到解决方法。
我在这里找到一篇文章:http://www.sutanaryan.com/jquery-duplicate-fields-form-submit-with-php/ 它详细说明了可以使用jQuery重复的过帐字段的过程。
在他的示例中,他创建了一个HTML表单:
<form action="process.php" method="post">
<p class="clone">
<label> Name: </label>
<input type="text" name="name[]" />
</p>
<p><a href="#" class="name" rel=".clone">Add Name</a></p>
<p><input type="submit" value="Submit" /></p>
</form>
并将其设置为可重复:
$(document).ready(function(){
var removeName = \'<a href="#" onClick="$(this).parent().slideUp(
function(){$(this).remove()}); return false">remove</a>\';
$(\'a.name\').relCopy({append:removeName});
});
并循环遍历每个字段,直到剩下0个字段可循环遍历,将每个字段保存到数据库中的一个表中。
$names=$_POST[\'name\'];
if(isset($names)) {
foreach($names as $name) {
if(strlen($name)>0) {
$sql=mysql_query("INSERT INTO tbl_name(name) VALUES (\'$name\')");
} else {
echo \'Oops no value to be inserted.\';
}
}
}
进一步搜索,我在这里找到了另一篇文章,详细介绍了类似的过程:我现在只是略读了一下,但正在将其添加到书签中,以备明天阅读。
http://www.web-design-talk.co.uk/58/adding-unlimited-form-fields-with-jquery-mysql/