форум вебмастеро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 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' а вот как они туда записываются 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']); в конфиге 'gr_limit' => "2,5,8", а потом уже всё остальное))) |
| Vitaslon Участник 513 |
# Дата: 11 Апр 2007 00:32SELECT user_id, name, top_comm, user_group FROM dle_users WHERE user_gro вот что выдало в ошибке так как записать в конфиг в масиве не смог попробовал так как сейчас группы туда записываются и итог ошибка группы вообще не назначаются |
| 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 |
| 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 |
| 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 ° Поправил: acsidif($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 |
| 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... видать сраатывает математическа Записывает: <?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=" ошибка вроде не изменилась Notice: Undefined variable: config in E:\www\home\for-mobiles.ru\www\adm но появилась новая запись в конфиге <?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 |
| 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 . >> |
|
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:62149, gzipped size:14767 |