maksn (13 Март 2015 - 13:27) писал:
Алексей, а зачем вы функцию file_get_contents_curl() перенесли в functions1.php?
Я же дал Вам ее во внешнем 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 из их команды никто не работает на пользу КБ и клиентов - потребителей данного продукта. Поэтому и применил этот метод.
Он более успешен, но всё же ошибка в самой КБ приводит к тем же последствиям. Что мне делать?
Сообщение отредактировал zakoss: 13 Март 2015 - 16:15