форум вебмастероff на AlfaSpace.NET

Ubuntu и Linux |реактивный бесплатный хостинг | Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга | правила форума

  Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ °
Форум вебмастеров на AlfaSpace.NET / Болтовня / Нужна помощь (PHP)
. 1 . 2 . >>
Автор Сообщение
Vitaslon
Участник

513
# Дата: 9 Апр 2007 22:38 ° Поправил: Vitaslon


сильно не пинайте
так как только начинаю изучать

есть sql запрос
$sql_users = $db->query("SELECT user_id, name, top_comm, user_group FROM 
" . PREFIX . "_users WHERE user_group = 2 AND top_comm >= 1 ORDER BY top_comm D
ESC LIMIT ".$config['comm_limit']."");


user_group = 2 (2 это id группы пользователей)
нужно что бы присваивалось несколко групп (в ручную пробовал так user_group = 2 OR user_group = 5 OR user_group = 8) всё работает
в конфиге группы записываются через запятую
как мне эти группы от туда поднять и вставить в запрос

может чё не правильно обьяснил извиняйте

Михаил
Я знаю людей...

2539
# Дата: 9 Апр 2007 23:09


Vitaslon
Если я правильно понял тебя, то ответ такой:
В конфиге пишешь все эти группы в массиве. Типа $group=array(2,5,8);
Далее в самом файле с запросом считаешь количество элементов через count и через цикл делаешь запрос.. ну к примеру так:

$group=array(2,5,8); //Это в конфиг

$my_sql_query = "SELECT user_id, name, top_comm, user_group FROM
" . PREFIX . "_users WHERE user_group = ".$group[0]; //Начало строки запроса

$kolvo=count($group); //подсчет элементов в запросе
for($i=1;$i==$kolvo;$i++){
$my_sql_query.=" OR user_group = ".$group[i]." "; // Добавление других групп
}

$my_sql_query.=" AND top_comm >= 1 ORDER BY top_comm D
ESC LIMIT ".$config['comm_limit'].""; //Окончание строки запроса


$sql_users = $db->query($my_sql_query); // Вот и сам запрос


Вроде так. Хотя на правильность не претендую - утро и мозги плохо варят.

Vitaslon
Участник

513
# Дата: 9 Апр 2007 23:31


видимо я всё таки не совсем дописал вопрос
намбр ту

из админки групы записываются в конфиг (я решил обойтись посредством самого движка ДЛЕ)
showRow('группы пользователей','укажите группы которые участвуют в TOPe' 
,"<input class=edit type=text style=\"text-align: center;\" name='save_con[gr_l
imit]' value=\"{$config['gr_limit']}\" size=10>", "Yes"); showRow('Обнуление счётчика комментариев в TOPе','После нажатия действие вер
нуть нельзя' ,"<a href=$PHP_SELF?mod=comoption>Обнулить</a>");


а вот как они туда записываются
elseif($action == "dosavemodruportal") 
{ 
    $find[] 	= "'\r'"; 
    $replace[] 	= ""; 
    $find[] 	= "'\n'"; 
    $replace[] 	= ""; 
     
    $save_con = $save_con + $config; 
     
if($member_db[1] != 1){ msg("error", $lang['opt_denied'], $lang['opt_denied']);  
} $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=trim(stripslashes ($value)); $value=htmlspecialchars ($value, ENT_QUOTES); $value = preg_replace($find,$replace,$value); fwrite($handler, "'{$name}' => \"{$value}\",\n\n"); } fwrite($handler, ");\n\n?>"); fclose($handler); clear_cache (); msg("info", $lang['opt_sysok'], "Настройки модулей были успешно сохранены<br
/><br /><a href=$PHP_SELF?mod=options&action=modruportal>$lang[db_prev]</a>"); }


в конфиге
'gr_limit' => "2,5,8",



а потом уже всё остальное)))

Vitaslon
Участник

513
# Дата: 11 Апр 2007 00:32


SELECT user_id, name, top_comm, user_group FROM dle_users WHERE user_gro 
up = AND top_comm >= 1 ORDER BY top_comm DESC LIMIT 3


вот что выдало в ошибке
так как записать в конфиг в масиве не смог
попробовал так как сейчас группы туда записываются
и итог ошибка
группы вообще не назначаются

Vitaslon
Участник

513
# Дата: 12 Апр 2007 00:42 ° Поправил: Vitaslon


я моленько ступил
вчера пробовал так
$group=array($config['gr_limit']); //из конфига 
 
$my_sql_query = "SELECT user_id, name, top_comm, user_group FROM 
" . PREFIX . "_users WHERE user_group = ".$group[0]; //Начало строки запроса 
 
$kolvo=count($group); //подсчет элементов в запросе 
for($i=1;$i==$kolvo;$i++){ 
    $my_sql_query.=" OR user_group = ".$group[i]." "; // Добавление других групп 
} 
 
$my_sql_query.=" AND top_comm >= 1 ORDER BY top_comm DESC LIMIT ".$config['comm_ 
limit'].""; //Окончание строки запроса 
 
 
$sql_users = $db->query($my_sql_query); // Вот и сам запрос





выдало

[script]SELECT user_id, name, top_comm, user_group FROM dle_users WHERE user_gro up = 2,5,8 OR user_group = AND top_comm >= 1 ORDER BY top_comm DESC LIMIT 3[/s
cript]



тоесть подсчёт элементов не прошол
и вставка значения тоже

и вообще здесь есть кто ?
может кто помоч ?

Vitaslon
Участник

513
# Дата: 12 Апр 2007 04:02


Михаил
оказывается ты всё усложнил оказывается всё было просто)))
один человек посказал
$sql_users = $db->query("SELECT user_id, name, top_comm, user_group FROM 
" . PREFIX . "_users WHERE user_group IN (2,5,8) AND top_comm >= 1 ORDER BY top
_comm DESC LIMIT ".$config['comm_limit']."");


Vitaslon
Участник

513
# Дата: 16 Мар 2008 10:41 ° Поправил: Vitaslon


продолжаем изучать)))
задача такова нужно записать в конфиг название поля и данные поля в нашем случае текст
вот что я смастерил
код взят из движка всё лишнее удалил но видимо удалил и не лишнее потому что запись не производится
<?php 
 
function showRow($title="") 
{ 
    echo"$title"; 
} 
 
echo <<<HTML 
<form action="" method="post"> 
HTML; 
 
showRow("<input type=text name='save_con[text_1]' value='{$config['text_1']}'>") 
    ; 
showRow("<input type=text name='save_con[text_2]' value='{$config['text_2']}'>") 
    ; 
     
    echo ""; 
     
    echo <<<HTML 
    <input type=hidden name=action value=save><input type="submit" value="go"></ 
    form> 
    HTML; 
     
    // ******************************************************* 
    // Save Config 
    // ******************************************************* 
     
    if($action = "save") 
    { 
        $find[] = "'\r'"; 
        $replace[] = ""; 
        $find[] = "'\n'"; 
        $replace[] = ""; 
         
        $save_con = $save_con + $config; 
         
        $handler = fopen('config.php', "w"); 
        fwrite($handler, "<?PHP \n\n\$config = array (\n\n"); 
        if (is_array($save_con)) { 
            foreach($save_con as $name => $value) 
            { 
                $value = preg_replace($find,$replace,$value); 
            fwrite($handler, "'{$name}' => \"{$value}\",\n\n"); 
            } 
        } 
        fwrite($handler, ");\n\n?>"); 
        fclose($handler); 
    } 
     
    ?>



вернее запись есть вот такого вида
<?PHP 
 
$config = array ( 
 
); 
 
?>



помогите с проблемой
может есть у кого учебники с множеством примеров готовых скриптов с расшифровками?

Vitaslon
Участник

513
# Дата: 16 Мар 2008 10:44


а вот что выдаёт при попытках записать
Notice: Undefined variable: config in E:\www\home\for-mobiles.ru\www\adm 
in.php on line 13 Notice: Undefined variable: config in E:\www\home\for-mobiles.ru\www\admin.php o
n line 14 Notice: Undefined variable: save_con in E:\www\home\for-mobiles.ru\www\admin.php
on line 33 Notice: Undefined variable: config in E:\www\home\for-mobiles.ru\www\admin.php o
n line 33


Vitaslon
Участник

513
# Дата: 19 Мар 2008 14:03


up
так проблему и не решил

acsid
Alfa Guru

2384
# Дата: 21 Мар 2008 17:31 ° Поправил: acsid


Вот так, если я тебя правильно понял
 
///если цифры в $config['gr_limit']="5,6,8";  указаны через запятую, тогда: 
 
$group=explode(",",$config['gr_limit']); 
$sql_users = $db->query("SELECT 
user_id, 
name, 
top_comm, 
user_group FROM  " . PREFIX . "_users 
WHERE 
user_group='${group[0]}' AND 
user_group='${group[1]}' AND 
user_group='${group[2]}' AND 
    top_comm >= 1 
    ORDER BY top _comm DESC 
    LIMIT ".$config['comm_limit']."");


Vitaslon
Участник

513
# Дата: 21 Мар 2008 18:37


acsid
нет моленько неправильно понял))
это если я неошибаюсь наоборот извлечение из конфига даных
а мне нужно их наоборот записать в конфиг
пример скрипта я написал выше
это отдельный файл который пишет в свой конфиг
вернее должен писать, но не пишет

acsid
Alfa Guru

2384
# Дата: 21 Мар 2008 20:46 ° Поправил: acsid


if($action = "save") 
{ 
    $find[] = "'\r'"; 
    $replace[] = ""; 
    $find[] = "'\n'"; 
    $replace[] = ""; 
     
     
     
    $handler = fopen('config.php', "w"); 
    fwrite($handler, "<?PHP \n\n\$config = array (\n\n"); 
    $i=1; 
     
    foreach($_POST["save_con[text_$i]"] as $name => $value) 
    { 
         
        if(isset($_POST["save_con[text_$i]"])){ 
            $value=$value + $config; 
            $value = preg_replace($find,$replace,$value); 
        fwrite($handler, "'{$name}' => \"{$value}\",\n\n"); 
            $i++; 
        } 
    } 
     
    fwrite($handler, ");\n\n?>"); 
    fclose($handler); 
} 


Vitaslon
Участник

513
# Дата: 21 Мар 2008 23:01


acsid
твой вариант тоже записывает только
<?PHP 
 
$config = array ( 
 
); 
 
?>


acsid
Alfa Guru

2384
# Дата: 22 Мар 2008 19:22 ° Поправил: acsid


» Vitaslon
твой вариант тоже записывает только

<?PHP

$config = array (

);

?>

Ну значит не проходит по условию:
» acsid
if(isset($_POST["save_con[text_$i]"])){


проверяй почему.По идее скрипт правильный если форма отправляет

<input type=text name='save_con[text_1]' value='{$config['text_1']}'> 
<input type=text name='save_con[text_2]' value='{$config['text_2']}'> 
<input type=text name='save_con[text_3]' value='{$config['text_3']}'> 
<input type=text name='save_con[text_4]' value='{$config['text_4']}'> 
    ....и так далее 
<input type=text name='save_con[text_128]' value='{$config['text_128']}'> 
    ...до бесконечности




Должно работать.Проверяй почему данные из формы не отправляются постом

Vitaslon
Участник

513
# Дата: 22 Мар 2008 21:23


так и немогу разобратся почему данные не передаются из формы
да и ещё acsid по твоему примеру добавилась ещё одна ошибка
Warning: Invalid argument supplied for foreach() in E:\www\home\for-mobi 
les.ru\www\admin.php on line 39


acsid
Alfa Guru

2384
# Дата: 22 Мар 2008 23:48 ° Поправил: acsid


Vitaslon
попробуй делать

<input type=text name='save_con_1' value='{$config['text_1']}'>

 
if($action = "save") 
{ 
     
    $handler = fopen('config.php', "w"); 
    fwrite($handler, "<?PHP \n\n\$config = array (\n\n"); 
    $i=1; 
     
    foreach($_POST["save_con_$i"] as $name => $value) 
    { 
        if($_POST["save_con_$i]"]!=''){ 
        fwrite($handler, "'{$name}' => \"{$value}\",\n\n"); 
            $i++; 
        } 
    } 
     
    fwrite($handler, ");\n\n?>"); 
    fclose($handler); 
} 


Vitaslon
Участник

513
# Дата: 23 Мар 2008 11:50


acsid
ничего не изменилось ни запись ни ошибки
всё по прежнему

Cryptex
Участник

247
# Дата: 23 Мар 2008 13:09 ° Поправил: Cryptex


щаз я попробую... у меня покрайней мере ужо запись
<?PHP 
 
$config = array ( 
 
'text_1' => "0", 
 
'text_2' => "0", 
 
); 
 
?>



Могу сказать, что ему (пхп) чот не нравяться скобки в name
 name="save_con[text_1]"


Cryptex
Участник

247
# Дата: 23 Мар 2008 13:26 ° Поправил: Cryptex


Короче Если чо исправите подправите и т.п. )) довёл до рабочего состояния)) сильно не пинать
<?php 
$config[text_1] = "conf 1"; 
$config[text_2] = "conf 2"; 
 
function showRow($title="") 
{ 
    echo"$title"; 
} 
 
$do = $_GET["do"]; 
 
echo <<<HTML 
<form action="?do=save" method="post"> 
HTML; 
 
showRow("<input type=\"text\" name=\"var1\" value=\"$config[text_1]\">"); 
showRow("<input type=\"text\" name=\"var2\" value=\"$config[text_2]\">"); 
 
echo <<<HTML 
<input type="submit" value="go"> 
</form> 
HTML; 
 
// ******************************************************* 
// Save Config 
// ******************************************************* 
 
if($do == "save") { 
    $save_con[text_1] = $_REQUEST['var1']; 
    $save_con[text_2] = $_REQUEST['var2']; 
    print "Form 1 - $save_con[text_1]<br>Form 2 - $save_con[text_2]<br>"; 
     
    $find[] = "'\r'"; 
    $replace[] = ""; 
    $find[] = "'\n'"; 
    $replace[] = ""; 
     
    //$save_con[text_1] = $save_con[text_1] + $config[text_1]; 
    //$save_con[text_2] = $save_con[text_2] + $config[text_2]; 
    //Если убрать "//" то value будет равно 0... видать сраатывает математическа 
я функция сложения, а не то, что вам хотелось бы... $handler = fopen('config.php', "w"); fwrite($handler, "<?PHP \n\n\$config = array (\n\n"); if (is_array($save_con)) { print "Условие is_array выполнено<br>"; foreach($save_con as $name => $value) { print "name - $name<br>"; print "value - $value<br>"; $value = preg_replace($find,$replace,$value); fwrite($handler, "'{$name}' => \"{$value}\",\n\n"); } } else { print "Условие is_array невыполнено"; } fwrite($handler, ");\n\n?>"); fclose($handler); } ?>




Записывает:
<?PHP 
 
$config = array ( 
 
'text_1' => "conf 1", 
 
'text_2' => "conf 2", 
 
); 
 
?>


Vitaslon
Участник

513
# Дата: 23 Мар 2008 13:38


Cryptex
ни чё не понял что ты хотел сказать)
появились изменения
сделал так
<?php 
 
function showRow($title="") 
{ 
    echo"$title"; 
} 
 
echo <<<HTML 
<form action="" method="post"> 
HTML; 
 
showRow("<input type=text name='save_con_1' value='{$config['text_1']}'>"); 
showRow("<input type=text name='save_con_2' value='{$config['text_2']}'>"); 
     
    echo ""; 
     
    echo <<<HTML 
    <input type="hidden" name="action" value="save"><input type="submit" value=" 
go"></form> HTML; // *************************************************************************
******* // Save System Configuration // *************************************************************************
******* if($action = "save") { $handler = fopen('config.php', "w"); fwrite($handler, "<?PHP \n\n\$config = array (\n\n"); $i=1; if($_POST["save_con_$i"]!=''){ fwrite($handler, "'{$name}' => \"{$value}\",\n\n"); $i++; } fwrite($handler, ");\n\n?>"); fclose($handler); } ?>


ошибка вроде не изменилась
Notice: Undefined variable: config in E:\www\home\for-mobiles.ru\www\adm 
in.php on line 13 Notice: Undefined variable: config in E:\www\home\for-mobiles.ru\www\admin.php o
n line 14 Notice: Undefined variable: name in E:\www\home\for-mobiles.ru\www\admin.php on
line 34 Notice: Undefined variable: value in E:\www\home\for-mobiles.ru\www\admin.php on
line 34


но появилась новая запись в конфиге
<?PHP 
 
$config = array ( 
 
'' => "", 
 
); 
 
?>


Vitaslon
Участник

513
# Дата: 23 Мар 2008 13:41


Cryptex
пока ответ писал уже новое сообщение
сейчас буду пробовать)

Cryptex
Участник

247
# Дата: 23 Мар 2008 13:44


$config['text_1'] и $config['text_2'] - на строчках 13 - 14 пустые... поэтому в своём варианте я их определил в самом верху скрипта

$config[text_1] = "conf 1"; 
$config[text_2] = "conf 2"; 



на строке 34... короче пустые name и value )) ты забыл foreach

Vitaslon
Участник

513
# Дата: 23 Мар 2008 13:48


Cryptex
ты всё усложнил)
строки с текстом 1 и 2 приведены для примера
на самом деле их будет около 100
и для каждого определение писать?
и твой вариант тоже что то не хочет работать
Parse error: parse error, unexpected T_SL, expecting ',' or ';' in E:\ww 
w\home\for-mobiles.ru\www\admin.php on line 12


Vitaslon
Участник

513
# Дата: 23 Мар 2008 13:49


» Cryptex
на строке 34... короче пустые name и value )) ты забыл foreach

не забыл
а умышлено убрал)))
так как вываливалась ошибка
Warning: Invalid argument supplied for foreach() in E:\www\home\for-mobi 
les.ru\www\admin.php on line 39


Cryptex
Участник

247
# Дата: 23 Мар 2008 13:59


может и усложнил...)) но у меня он работает
При условии, конечно, если его тупо скопировать... а foreach нужен... ибо без него будут пустыми $name & $value
можешь конечно как-то иначе попробовать их определить...

Vitaslon
Участник

513
# Дата: 23 Мар 2008 14:57 ° Поправил: Vitaslon


Cryptex
спасибо заработало (неработало по причине копипаст, пробелы удалил) всё записывает но добавились ещё ошибки
Notice: Undefined variable: config in E:\www\home\for-mobiles.ru\www\adm 
in.php on line 15 
 
Notice: Undefined variable: config in E:\www\home\for-mobiles.ru\www\admin.php o 
n line 16 
 
 
Notice: Use of undefined constant text_1 - assumed 'text_1' in E:\www\home\for-m 
obiles.ru\www\admin.php on line 30 
 
Notice: Use of undefined constant text_2 - assumed 'text_2' in E:\www\home\for-m 
obiles.ru\www\admin.php on line 31 
Form 1 - почпотпвс 
Form 2 - опсосо 
Условие is_array выполнено 
name - text_1 
value - почпотпвс 
name - text_2 
value - опсосо


Cryptex
Участник

247
# Дата: 23 Мар 2008 15:08


Если в php.ini поставить
ERROR_REPORTING (или как там правильно) E_ALL & ~E_NOTICE
то ошибок вот этих не будет... например на муне и спейсе они показываться не будут... а так они символизируют то, что какая-либо переменная пустая.. например:

Ошибка будет:
<?php 
print "Привет $var!"; 
?>



Не будет:
<?php 
$var = "Vitalson"; 
print "Привет $var!"; 
?>


Vitaslon
Участник

513
# Дата: 23 Мар 2008 15:35


Cryptex
проблему ошибок решил
дописав сверху
error_reporting (E_ERROR);



также решил проблему с определением строчек 13 и 14
дописав после
error_reporting (E_ERROR);



вот это
include_once ('config.php');


осталась незначительная проблемка, так для правильности
при нажатие кнопки обновляется страница и формы пустые но в конфиге всё записано после обновления страницы данные появляются

Cryptex
Участник

247
# Дата: 23 Мар 2008 15:56


Vitaslon
Значит попробуй сделать в таком порядке:
1. if($action == "save"){

}

2. Получение данных из configa
3. сами формы

Vitaslon
Участник

513
# Дата: 23 Мар 2008 16:38


Cryptex
пробовал менять местами операции
но работает только в том виде который сейчас
да и лана, не это главное
главное что всё работает))))
всем спасибо, кто помог даже кто думал помочь))
будем дальше творить

. 1 . 2 . >>
Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:62149, gzipped size:14767

Mp3 Download || Webs Studio™ || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]