maksn (13 Март 2015 - 13:27) писал:
Я же дал Вам ее во внешнем PHP. Если уж хотите ее использовать внутри КБ, поместите ее ТОЛЬКО ОДИН РАЗ в functions_custom.php. Она должна лежать там и ТОЛЬКО ТАМ. И соответственно не будет дважды объявляться. По крайней мере не будет ошибки "Cannot redeclare file_get_contents_curl()..."
А ошибки хранятся на сервере в error.log, а не в access.log, фрагмент которого вы приводите на скрине постом выше
Здравствуйте, я ничего никуда не помещал. Так как у меня не работает ни одно вычисление на таблице Семёрки я сделал как Вы мне советовали, но это крайний метод и он тоже выводит ошибки, точно так же создаются пустые записи. Я просто вместо такого вычисления:
if(($line['M-1']['raw'] !== 0) && ($line['M-2']['raw'] !== 0) && ($line['M-3']['raw'] !== 0) && ($line['M-4']['raw'] !== 0) && ($line['M-5']['raw'] !== 0) && ($line['M-6']['raw'] !== 0) && ($line['M-7']['raw'] !== 0)) { //Присваиваемые поля - типичны поля связи с той же таблицей... //Создаём первую новую матрицу-семёрку и пишем в неё данные левого крыла старой матрицы $matr_l['ID создателя']['raw'] = $line['М-2']['raw'];//присваиваем ID создателя матрицы $matr_l['М-1']['raw'] = $line['М-2']['raw'];//2-е место ставим на первое $matr_l['М-2']['raw'] = $line['М-4']['raw'];//4-е место ставим на второе $matr_l['М-3']['raw'] = $line['М-5']['raw'];//5-е место ставим на третье $matr_l['Тип программы']['raw'] = $line['Тип программы']['raw'];//присваиваем ID Программы $matr_l['ID'] = insert_query($matr_l, "Семёрки"); //Создаём вторую новую матрицу-семёрку и пишем в неё данные правого крыла старой матрицы $matr_r['ID создателя'] = $line['М-3']['ID'];//присваиваем ID создателя матрицы $matr_r['М-1'] = $line['М-3']['Логин'];//3-е место ставим на первое $matr_r['М-2'] = $line['М-6']['Логин'];//6-е место ставим на второе $matr_r['М-3'] = $line['М-7']['Логин'];//7-е место ставим на третье $matr_r['Тип программы'] = $line['Тип программы']['Сокращение'];//присваиваем ID Программы $matr_r['ID'] = insert_query($matr_r, "Семёрки"); }
поставил такое:
function file_get_contents_curl($url,$query_str,$ispost=false) { $referer = $_SERVER['HTTP_REFERER']; $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_REFERER, $referer); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if($ispost===true) { curl_setopt($ch, CURLOPT_POST, true); if(is_array($query_str)) { foreach($query_str as $key=>$value) $post_fields .= $key.'='.$value.'&'; } curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); } curl_setopt($ch, CURLOPT_URL, $url); $data = curl_exec($ch); curl_close($ch); return $data; } if (!defined('NEED_URL')) define('NEED_URL', 'http://epochaquarius.com/mlm/modules/public/matrix_handler_cb.php'); if(($line['M-1']['raw'] !== 0) && ($line['M-2']['raw'] !== 0) && ($line['M-3']['raw'] !== 0) && ($line['M-4']['raw'] !== 0) && ($line['M-5']['raw'] !== 0) && ($line['M-6']['raw'] !== 0) && ($line['M-7']['raw'] !== 0)) { $matrix_id = $line['ID']; $query_str = Array('matrix_id'=>$matrix_id,'matrix_shared'=>'1'); $ispost=true; $url = NEED_URL; $answer = file_get_contents_curl($url,$query_str,$ispost); // echo 'answer='.$answer; exit; }
Передаю данные из таблицы на handler_cb.php и обрабатываю так:
/*** **** Действие обновления значений полей в базе - вход в семёрку матрицы ***/ if ($_REQUEST['matrix_shared'] == 1) { $matrix_referer = $_SERVER['HTTP_REFERER']; // ПО этому признаку можно смотреть откуда пришел запрос, чтобы исключить постинг с других ресурсов. $matrix_id = $_REQUEST['matrix_id']; /******** Найдем нужную запись по Login ************/ $matrix_balance = 0; // Инициализируем переменную //Выборка из базы $sqlQuery = "SELECT `f4570`,`f4580`,`f4590`,`f4620`,`f4630`,`f4640`,`f4650`,`f4720` FROM `" . DATA_TABLE . "320` WHERE `id`='" . $matrix_id . "' AND `status`=0 LIMIT 1"; $result = sql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR); while ($row = sql_fetch_assoc($result)) { // Создаём массив части значений строки $data = Array(); $data['f4550'] = $row['f4580']; $data['f4570'] = $row['f4580']; $data['f4580'] = $row['f4620']; $data['f4590'] = $row['f4630']; $data['f4720'] = $row['f4720']; // Добавляем в таблицу новую запись значениями из массива data_insert(320, EVENTS_ENABLE, $data); // Создаём массив части значений строки $data = Array(); $data['f4550'] = $row['f4590']; $data['f4570'] = $row['f4590']; $data['f4580'] = $row['f4640']; $data['f4590'] = $row['f4650']; $data['f4720'] = $row['f4720']; // Добавляем в таблицу новую запись значениями из массива data_insert(320, EVENTS_ENABLE, $data); // Обновляем поля строки значениями из массива $data = Array(); $data['status'] = 1; data_update(320, EVENTS_ENABLE, $data, "`id`='", $matrix_id, "'"); } echo 'DONE'; // Возвращаем сайту сообщение, что все в порядке }
Хотя бы начали создаваться записи, но ошибка всё равно появляется в виде пустых полей - ничего не понимаю. Наверное это глюк КБ.
В службу поддержки обратился давно, но они и не чешутся. Сами же знаете. Я уже не знаю как достучаться до разработчиков, если они свой же форум не могут привести в порядок, это как у плохого хозяина... Здесь кроме CbCoder из их команды никто не работает на пользу КБ и клиентов - потребителей данного продукта. Поэтому и применил этот метод.
Он более успешен, но всё же ошибка в самой КБ приводит к тем же последствиям. Что мне делать?