方法没有被第三次调用(method not being called a third time)

编程入门 行业动态 更新时间:2024-10-28 12:21:08
方法没有被第三次调用(method not being called a third time)

我有一个更新表中字段的方法。 它用于更新三个表, invoices invoice_items和payments所有三个表都有相同的字段需要更新。 当下面的代码运行时, multi_checked()方法会运行前两次,但不是第三次运行。对于我来说,这对我来说并不明显。 有任何想法吗?

方法调用:

elseif (isset($_POST[$mod . '-del']) && count($check) > 0) { $state = multi_checked( $check, 'UPDATE ' . $db['database'] . '.invoices SET deleted="Y"', EVENT_DEL, 'Invoice [' . $c . '] deleted', 'Please select at least one item', FALSE, 'SELECT id FROM ' . $db['database'] . '.invoices' ); $state = multi_checked( $check, 'UPDATE ' . $db['database'] . '.payments SET deleted="Y"', EVENT_DEL, 'Payment [' . $c . '] deleted', 'Please select at least one item', TRUE, 'SELECT id FROM ' . $db['database'] . '.payments', null, "id_invoice" ); $state = multi_checked( $check, 'UPDATE ' . $db['database'] . '.invoice_items SET deleted="Y"', EVENT_DEL, 'Invoice Item [' . $c . '] deleted', 'Please select at least one item', TRUE, 'SELECT id FROM ' . $db['database'] . '.invoice_items', null, "id_invoice" ); } # Clear Export timestamps

multi_checked方法描述如下:

function multi_checked( $check, $query, $event_type, $event_desc, $none = 'Please select at least one item', $redirect = TRUE, $meta_query = NULL, $success_msg = NULL, $field = "id" ) { global $db, $mod; $batch_count = count($check); $meta_data = NULL; if ($batch_count == 0) { add_msg($none); return (0); } else { $changed = 0; $ref = load_array('SELECT MAX(id) FROM ' . $db['database'] . '.eventlog'); # batch id foreach ($check As $c) { if ($meta_query != NULL) { $meta_data = load_array($meta_query . ' WHERE id' . $field . '="' . $c . '"'); if ($meta_data != NULL) $meta_data = ' (' . $meta_data . ')'; } $q = $query . ' WHERE ' . $field . '="' . $c . '"'; $z = $query . ' WHERE ' . $field . '="' . $c . '"'; $g = "asf"; if (run_query($query . ' WHERE ' . $field . '="' . $c . '"') == 0) { eventlog($db['database'], $event_type, $mod, $c, uid(), '[Batch #' . $ref . '] ' . $event_desc . $meta_data, uname()); $changed++; } else { eventlog($db['database'], $event_type, $mod, $c, uid(), '[Batch #' . $ref . '] FAIL: ' . $event_desc . $meta_data, uname(), FALSE, FALSE); } } # Check for errors if ($changed != $batch_count) { add_error($changed . ' of ' . $batch_count . ' items processed - you may need to check the system log for details'); } # Success! else { $message = ($changed . ' item' . ($changed > 1 ? 's' : NULL) . ' processed successfully'); if ($changed > 1) { # log batch summary @mysql_query("FLUSH QUERY CACHE"); eventlog($db['database'], $event_type, $mod, 0, uid(), '[Batch #' . $ref . '] ' . $changed . ' records processed', uname()); } # Redirect if ($redirect) { header('Location: ?m=' . $mod . '&changed=' . $changed . '&message=' . $success_msg); exit; } else { add_msg($message); } } return ($changed); } }

I have a method that updated fields in a table. Its used to update three tables, invoices invoice_items and payments All three tables have the same field to be updated. When the below code runs, the multi_checked() method runs for the first two times, but not for the third time and It's not obvious to me as to why. Any Ideas?

Method Call:

elseif (isset($_POST[$mod . '-del']) && count($check) > 0) { $state = multi_checked( $check, 'UPDATE ' . $db['database'] . '.invoices SET deleted="Y"', EVENT_DEL, 'Invoice [' . $c . '] deleted', 'Please select at least one item', FALSE, 'SELECT id FROM ' . $db['database'] . '.invoices' ); $state = multi_checked( $check, 'UPDATE ' . $db['database'] . '.payments SET deleted="Y"', EVENT_DEL, 'Payment [' . $c . '] deleted', 'Please select at least one item', TRUE, 'SELECT id FROM ' . $db['database'] . '.payments', null, "id_invoice" ); $state = multi_checked( $check, 'UPDATE ' . $db['database'] . '.invoice_items SET deleted="Y"', EVENT_DEL, 'Invoice Item [' . $c . '] deleted', 'Please select at least one item', TRUE, 'SELECT id FROM ' . $db['database'] . '.invoice_items', null, "id_invoice" ); } # Clear Export timestamps

the multi_checked method is described as follows:

function multi_checked( $check, $query, $event_type, $event_desc, $none = 'Please select at least one item', $redirect = TRUE, $meta_query = NULL, $success_msg = NULL, $field = "id" ) { global $db, $mod; $batch_count = count($check); $meta_data = NULL; if ($batch_count == 0) { add_msg($none); return (0); } else { $changed = 0; $ref = load_array('SELECT MAX(id) FROM ' . $db['database'] . '.eventlog'); # batch id foreach ($check As $c) { if ($meta_query != NULL) { $meta_data = load_array($meta_query . ' WHERE id' . $field . '="' . $c . '"'); if ($meta_data != NULL) $meta_data = ' (' . $meta_data . ')'; } $q = $query . ' WHERE ' . $field . '="' . $c . '"'; $z = $query . ' WHERE ' . $field . '="' . $c . '"'; $g = "asf"; if (run_query($query . ' WHERE ' . $field . '="' . $c . '"') == 0) { eventlog($db['database'], $event_type, $mod, $c, uid(), '[Batch #' . $ref . '] ' . $event_desc . $meta_data, uname()); $changed++; } else { eventlog($db['database'], $event_type, $mod, $c, uid(), '[Batch #' . $ref . '] FAIL: ' . $event_desc . $meta_data, uname(), FALSE, FALSE); } } # Check for errors if ($changed != $batch_count) { add_error($changed . ' of ' . $batch_count . ' items processed - you may need to check the system log for details'); } # Success! else { $message = ($changed . ' item' . ($changed > 1 ? 's' : NULL) . ' processed successfully'); if ($changed > 1) { # log batch summary @mysql_query("FLUSH QUERY CACHE"); eventlog($db['database'], $event_type, $mod, 0, uid(), '[Batch #' . $ref . '] ' . $changed . ' records processed', uname()); } # Redirect if ($redirect) { header('Location: ?m=' . $mod . '&changed=' . $changed . '&message=' . $success_msg); exit; } else { add_msg($message); } } return ($changed); } }

最满意答案

对multi_check的第二次调用将$redirect参数设置为TRUE - 因此函数重定向,阻止脚本第三次调用该函数...

The second call to multi_check has $redirect parameter set to TRUE - so the function redirects, preventing the script to call the function the third time...

更多推荐

本文发布于:2023-07-27 08:55:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1287991.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方法   method   time   called

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!