我会循环foreach:
<?php $myrows = $wpdb->get_results( "SELECT * FROM wp_myprojects" ); ?>
<form id="aad-form2" action="" method="POST">
<?php foreach($myrows as $a): ?>
<input id="id" type="text" name="id" value="<?php echo $a->id; ?>">
<input id="name" type="text" name="name" value="<?php echo $a->name; ?>">
<input id="header" type="text" name="header" value="<?php echo $a->header; ?>">
<input id="body" type="text" name="body" value="<?php echo $a->body; ?>">
<input id="urls" type="text" name="urls" value="<?php echo $a->urls; ?>">
<input type="submit" name="aad-submit2" id="aad_submit2" class="button- primary"value="<?php _e(\'Update\', \'aad\'); ?>"/>
<img src="<?php echo admin_url(\'/images/wpspin_light.gif\'); ?>" class="waiting" id="aad_loading2" style="display:none;"/>
<br />
<?php endforeach ?>
</form>
和我的jquery代码:
jQuery(document).ready(function($) {
$(\'#aad-form2\').submit(function(){
//alert(\'test\');
$(\'#aad_loading2\').show();
$(\'#aad_submit2\').attr(\'disabled\', true);
data2 = {
action: \'aad_get_results2\',
form_data2: $(\'#aad-form2\').serialize()
//aad_nonce: aad_vars.aad_nonce
};
$.post(ajaxurl, data2, function (response) {
$(\'#aad_results\').html(response);
$(\'#aad_loading2\').hide();
$(\'#aad_submit2\').attr(\'disabled\', false);
});
return false;
});
});
当我执行操作时,最后一个表单是数据库中的更新。示例我在数据库中有5条记录。Foreach print me 5表单,但当我单击submit按钮record 1或record 2时,什么都没有发生。
循环中只有最后一条记录是更新的。帮助
告诉我为什么?也许我现在没有看到jquery好:)帮帮我。
插件中的我的更新功能:
function aad_process2_ajax() {
global $wpdb;
parse_str($_POST[\'form_data2\'], $form_data2);
echo $id = $form_data2[\'id\'];
echo $name = $form_data2[\'name\'];
echo $header = $form_data2[\'header\'];
echo $body = $form_data2[\'body\'];
echo $urls = $form_data2[\'urls\'];
$wpdb->update(\'wp_myprojects\', array(\'id\'=>$id, \'name\'=>$name, \'header\'=>$header, \'body\'=>$body, \'urls\'=>$urls), array(\'id\'=>$id));
$wpdb->show_errors();
/*EVRY PROCESS AJAX MUST DIE!!!!*/
die();
/*EVRY PROCESS AJAX MUST DIE!!!!*/
}
add_action(\'wp_ajax_aad_get_results2\',\'aad_process2_ajax\');
最合适的回答,由SO网友:Charles Clarkson 整理而成
每组表单字段都具有相同的字段名称集([...]
是代码的其余部分):
<?php foreach ( $myrows as $a ): ?>
<input id="id" type="text" name="id" value="<?php echo $a->id; ?>">
[...]
<?php endforeach ?>
如果返回3行
$myrows
值为
fee, fie, foe
, 每个字段的值属性都会更改,但字段名称始终相同。以下是前3个字段组合在一起:
<input id="id" type="text" name="id" value="fee">
<input id="id" type="text" name="id" value="fie">
<input id="id" type="text" name="id" value="foe">
web服务器只看到最后一个值:
id = foe
fee
和
fum
没关系。
因此,每一组表单字段都被前一组替换。为每个循环定义唯一的名称。以下是第一个表单字段:
<?php
$row_count = 0;
foreach ( $myrows as $a ): ?>
<input id="id-<?php echo $row_count; ?>" type="text" name="id-<?php echo $row_count; ?>" value="<?php echo $a->id; ?>">
[ ... ]
<?php
$row_count++;
endforeach; ?>
更换
[ ... ]
使用其他代码。
现在,这3个字段将如下所示:
<input id="id-0" type="text" name="id-0" value="fee">
<input id="id-1" type="text" name="id-1" value="fee">
<input id="id-2" type="text" name="id-2" value="fee">
您可以在隐藏的表单变量(foreach循环外部)中定义行计数。
<input type="hidden" name="row_count" value="<?php echo count( $myrows );">
然后,在
aad_process2_ajax()
循环遍历所有名称,并根据中的行数进行更新
row_count
表单字段。