<MyRusakov.ru />

Создание крупного проекта на Java с нуля

Создание крупного проекта на Java с нуля

Данный курс научит Вас создавать крупные проекты на Java грамотно и быстро. В курсе Вы увидите создание большой и сложной программы на Java абсолютно с нуля.

В начале курса у нас будет только идея, а в конце готовый продукт, который можно использовать в практических целях.

В рамках упражнений курса Вы параллельно со мной будете создавать свою большую программу на Java, что даст Вам необходимую практику, после которой для Вас уже не будет разницы, какого размера создавать программы.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Не правильное сохранение в конфиг
28.07.2013 20:13:40 Не правильное сохранение в конфиг Сообщение #1
SX2

SX2

Новичок

Новичок

Дата регистрации:
27.07.2012 02:51:09

Сообщений: 15

Добрый день !
Уважаемый Михаил в свое время вы мне очень помогли за что я вам очень благодарен !
И опять у меня возникла проблема похожего характера !!
И так не пойму как сохранить в конфиг вот код
<?php

if(!defined('DATALIFEENGINE'))
{die("Hacking attempt!";}

if ($member_id['user_group'] != 1) {
msg("error", $lang['addnews_denied'], $lang['db_denied']);
}

//************************************************************************//
// Конфиг //
//************************************************************************//
require ROOT_DIR.'/engine/data/test_config.php';

//************************************************************************//
// Функции //
//************************************************************************//

function opentable() {
echo <<<HTML
<table width="100%">
<tr>
<td width="4"><img src="engine/skins/images/tl_lo.gif" width="4" height="4" border="0"></td>
<td background="engine/skins/images/tl_oo.gif"><img src="engine/skins/images/tl_oo.gif" width="1" height="4" border="0"></td>
<td width="6"><img src="engine/skins/images/tl_ro.gif" width="6" height="4" border="0"></td>
</tr>
<tr>
<td background="engine/skins/images/tl_lb.gif"><img src="engine/skins/images/tl_lb.gif" width="4" height="1" border="0"></td>
<td style="padding:5px;" bgcolor="#FFFFFF">
HTML;
}

function closetable() {
echo <<<HTML
</td>
<td background="engine/skins/images/tl_rb.gif"><img src="engine/skins/images/tl_rb.gif" width="6" height="1" border="0"></td>
</tr>
<tr>
<td><img src="engine/skins/images/tl_lu.gif" width="4" height="6" border="0"></td>
<td background="engine/skins/images/tl_ub.gif"><img src="engine/skins/images/tl_ub.gif" width="1" height="6" border="0"></td>
<td><img src="engine/skins/images/tl_ru.gif" width="6" height="6" border="0"></td>
</tr>
</table>
HTML;
}

function tableheader($value) {
echo <<<HTML
<table width="100%">
<tr>
<td bgcolor="#EFEFEF" height="29" style="padding-left:10px;"><div class="navigation">{$value}</div></td>
</tr>
</table>
HTML;
unterline();
}

function unterline() {
echo <<<HTML
<div class="unterline"></div>
HTML;
}

function get_gal_groups($id = 0) {
global $user_group;

foreach ($user_group as $group) {
$returnstring .= '<option value="'.$group['id'].'" ';

if (is_array ($id) && in_array($group['id'], $id)) $returnstring .= 'SELECTED';
elseif($id AND $id == $group['id']) $returnstring .= 'SELECTED';

$returnstring .= ">".$group['group_name']."</option>\n";
}

return $returnstring;
}

//************************************************************************//
// Меню //
//************************************************************************//
$size = "70%";
if ($_REQUEST['action'] == "" {
echoheader("", "";

echo <<<HTML
<form action="" method="post">
HTML;
opentable();
tableheader('Основные настройки');
$body .= "<form method=\"POST\" action=\"\" name=\"additem\" id=\"additem\"\">
<table width=\"100%\">
<tr><td width=\"{$size}\" style=\"padding-left:3%;\">
<strong>Группы пользователей</strong><br />
Выберите группы пользователей, которые нужно отображать
</td><td align=\"left\"><select name=\"groups[]\" class=\"cat_select\" multiple>".get_gal_groups(explode(',', $config['groups']))."</select>
</td></tr>
<tr><td height=7 colspan=2></td></tr>
<tr><td background=\"engine/skins/images/mline.gif\" height=1 colspan=2></td></tr>
<tr><td height=7 colspan=2></td></tr>
<tr><td colspan=\"2\"><div class=\"hr_line\"></div></td></tr>
<tr><td width=\"140\" style=\"padding-left:5px;\">
</td><td style=\"padding-left:5px;\">
<div style=\"display: none;\" id=\"icon_demo\"><img src=\"\" id=\"icon_img\"></div>
</td></tr></table><br><input type=\"hidden\" name=\"action\" value=\"1\">
<div style=\"padding-left:5px; text-align:center;\">
<input class=\"btn btn-success\" type=\"submit\" value=\"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Сохранить&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\">&nbsp;&nbsp;&nbsp;<br /><br /></div><div class=\"hr_line\"></div></td></form>";
echo $body;
closetable();
echofooter();
}

//************************************************************************//
// Запись настроек //
//************************************************************************//
if($action == "1"{
clear_cache();
///////////////////////////////
$keys_num = count($_POST);
$keys = array_keys($_POST);
$config = "<?php \n\n///Options///\n\n\$config = array(\n\n'version' => \"v.1.0\",\n\n";
for($i = 0; $i <= $keys_num; $i ++){
$key = $keys[$i];
$key_result = ($_POST[$key]);
if ($keys[$i]==groups){
$config .= "'".$keys[$i]."' => array(".$key_result.",\n\n";
} elseif ($key!='action' and $key!=''){
if ($keys[$i]==groups) continue;
$config .= "'".$keys[$i]."' => \"".$key_result."\",\n\n";
}}
$config .= ";\n?>";
$conf_file = ROOT_DIR.'/engine/data/test_config.php';
$fp = fopen($conf_file, "w+";
$save = fwrite($fp, $config);
fclose($fp);

msg( "Info!", "Модуль \"Test\"", "Настройки успешно сохранены!<br /><br /><a href=\"$PHP_SELF?mod=test\">Вернутся назад</a>";

echofooter();
}

?>

Сейчас сохраняет так
<?php

///Options///

$config = array(

'version' => "v.1.0",

'groups' => array(Array),

);
?>

А нужно так
<?php

///Options///

$config = array(

'version' => "v.1.0",

'groups' => array(1,2),

);
?>

Заранее благодарен !
Профиль Ответить
29.07.2013 00:06:40 Не правильное сохранение в конфиг Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

У Вас переменная, которая выводится внутри Array() это массив, поэтому и выводить её надо в читаемом формате. Это можно вывести через print_r, но в Вашем случае надо в вывести цикле самостоятельно каждый элемент через запятую.
Профиль Ответить
29.07.2013 00:18:11 Не правильное сохранение в конфиг Сообщение #3
SX2

SX2

Новичок

Новичок

Дата регистрации:
27.07.2012 02:51:09

Сообщений: 15

Подскажите как это прописать пожалуйста !
Профиль Ответить
29.07.2013 20:48:01 Не правильное сохранение в конфиг Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Что то вроде этого, if тут чтобы убрать последнюю запятую.
foreach($key_result as $value) {
$string .= $value;
if (!($value==end($key_result))) $string .= ", ";
}
echo $string;

Получившийся $string и нужно подставлять вместо неотображаемого массива.
Профиль Ответить
29.07.2013 21:25:28 Не правильное сохранение в конфиг Сообщение #5
SX2

SX2

Новичок

Новичок

Дата регистрации:
27.07.2012 02:51:09

Сообщений: 15

Спасибо большое сделал так и все заработало
//************************************************************************//
// Запись настроек //
//************************************************************************//
if($action == "1"{
clear_cache();
///////////////////////////////
$keys_num = count($_POST);
$keys = array_keys($_POST);
$config = "<?php \n\n///Options///\n\n\$config = array(\n\n'version' => \"v.1.0\",\n\n";
for($i = 0; $i <= $keys_num; $i ++){
$key = $keys[$i];
$key_result = ($_POST[$key]);
if ($keys[$i]==groups){
foreach($key_result as $value) {
$string .= $value;
if (!($value==end($key_result))) $string .= ", ";
}
$config .= "'".$keys[$i]."' => array(".$string.",\n\n";
} elseif ($key!='action' and $key!=''){
if ($keys[$i]==groups) continue;
$config .= "'".$keys[$i]."' => \"".$key_result."\",\n\n";
}}
$config .= ";\n?>";
$conf_file = ROOT_DIR.'/engine/data/test_config.php';
$fp = fopen($conf_file, "w+";
$save = fwrite($fp, $config);
fclose($fp);

msg( "Info!", "Модуль \"Test\"", "Настройки успешно сохранены!<br /><br /><a href=\"$PHP_SELF?mod=test\">Вернутся назад</a>";

echofooter();
}


Если можно подскажите как сделать так что бы при сохранении не переписывало конфиг а добавляло
К примеру если есть
<?php

///Options///

$config = array(

'version' => "v.1.0",

'online' => "yes",

);
?>

То при следующим сохранении строчка
'online' => "yes",
оставалась
а строчка
'groups' => array(1, 5),
добаавлялась итд

P.S Почему у вас нет тега spoiler
Профиль Ответить
29.07.2013 21:44:47 Не правильное сохранение в конфиг Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

В этом случае Вам нужно сделать полноценный интерпретатор этого конфига, чтобы сначала все значения считывались и записывались в переменные, а затем к ним добавлялись изменения и заново перезаписывались в конфиг.
Профиль Ответить
30.07.2013 01:05:44 Не правильное сохранение в конфиг Сообщение #7
SX2

SX2

Новичок

Новичок

Дата регистрации:
27.07.2012 02:51:09

Сообщений: 15

Скажите а при таком сохранении как прописать правило


function save_group_info($level){
global $db;

if (is_numeric($level)){ if (!intval($level)) return ""; else return intval($level); }
if (!is_array($level)) return "";
if (in_array("0", $level) || count($level) < 1) return "";
$uviewlevel = $db->safesql(implode(',', $level)); return $uviewlevel;

}

if ($action == "dosavesyscon"{

$save_con = $_POST['save_con'];
$save_con['groupsv'] = save_group_info($_POST['groupsv']);
$save_con['online'] = $_POST['online'];

$find[] = "'\r'";
$replace[] = "";
$find[] = "'\n'";
$replace[] = "";

if (is_array($config)) $save_con = $save_con + $config;

$handler = fopen( ENGINE_DIR . '/data/config.php', "w" );
fwrite($handler, "<?PHP \n\n//System Configurations\n\n\$config = array (\n\n";
foreach ( $save_con as $name => $value ) {

$value = str_replace( "$", "&#036;", $value );
$value = str_replace( "{", "&#123;", $value );
$value = str_replace( "}", "&#125;", $value );

$name = str_replace( "$", "&#036;", $name );
$name = str_replace( "{", "&#123;", $name );
$name = str_replace( "}", "&#125;", $name );

fwrite( $handler, "'{$name}' => \"{$value}\",\n\n" );

}
fwrite( $handler, ";\n\n?>" );
fclose( $handler );

msg( "info", $lang['opt_sysok'], "$lang[opt_sysok_1]<br /><br /><a href=$PHP_SELF?mod=test>$lang[db_prev]</a>" );

Как указать чтобы переменная groupsv
Сохранялась не так<?php

///Options///

$config = array(

'online' => "yes",

'groupsv' => "1,2,3",

);
?>

А так
<?php

///Options///

$config = array(

'online' => "yes",

'groupsv' => array(1,2,3),

);
?>

Одним словом что бы только groupsv сохранялся в виде массива а все остальное так как и есть как добавить правило для него ?
Профиль Ответить
30.07.2013 17:30:20 Не правильное сохранение в конфиг Сообщение #8
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Поставьте условный оператор. Если имя текущей переменной такое, то обрабатывайте её по-другому.
Профиль Ответить
02.08.2013 19:02:36 Не правильное сохранение в конфиг Сообщение #9
SX2

SX2

Новичок

Новичок

Дата регистрации:
27.07.2012 02:51:09

Сообщений: 15

Михаил извините что не по теме но подскажите как прописать ?

Сам кодif($member_id['news_num']>=$module_config['news']
AND
$member_id['repa']>=$module_config['repa']
AND
$member_id['comm_num']>=$module_config['coments']
AND
$member_id['user_group']==$module_config['group_id']) {
$db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET user_group={$module_config['group_id_new']} WHERE user_id='{$member_id['user_id']}'" );


Конфиг
<?PHP

//System Configurations

$module_config = array (

'repa_on' => "yes",

'news' => "20",

'repa' => "5",

'coments' => "10",

'group_id' => "4",

'group_id_new' => "6",

);

?>


Код делает следующее:

Если юзер имеет Новостей-20, Репутацию-5, Комментариев-10
Тогда он переходит с группы 4 в группу 6

Вопрос !!! Как прописать что если в конфиге стоит
'repa_on' => "no",проверка
$member_id['repa']>=$module_config['repa']Не происходит а только учитываются другие параметры
Профиль Ответить
04.08.2013 10:48:01 Не правильное сохранение в конфиг Сообщение #10
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Для сравнения строк используйте проверку с помощью функции strcmp()
Профиль Ответить