Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Подскажите как реализовать

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Vaio
Отправлено: 10 Декабря, 2012 - 23:57:48
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Есть файл с командами. Вот пример:

CODE (htmlphp):
скопировать код в буфер обмена
  1. tr_test "1"
  2. mr_test "20"
  3. mt_tester 1
  4.  
  5. exec test.cfg


Мне нужно открыть файл и получить значения команд, значения могут быть и в кавычках и без.
Если мне нужно получить tr_test, mr_test а есть еще другие (mt_tester, exec test.cfg) то их также вытянуть в таком формате:



Надеюсь более менее понятно объяснил, если не понятно буду как можно подробнее объяснять.

Подскажите как такое реализовать и если можно небольшой пример.
 
 Top
Panoptik
Отправлено: 11 Декабря, 2012 - 00:10:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




получить значения команд - выполнить и получить значения?
выполнить в php или в shell?


-----
Just do it
 
 Top
Vaio
Отправлено: 11 Декабря, 2012 - 00:13:46
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Только получить, чтобы можно было на сайте изменить например tr_test "1" на tr_test "0". А потом записать обратно в файл.
 
 Top
Panoptik
Отправлено: 11 Декабря, 2012 - 00:21:14
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




ах вот что...

file comands.txt
CODE (htmlphp):
скопировать код в буфер обмена
  1. tr_test "1"
  2.     mr_test "20"
  3.     mt_tester 1
  4.     exec test.cfg


PHP:
скопировать код в буфер обмена
  1.  
  2. $commands = file('commands.txt');
  3. foreach($commands as $c) {
  4.   $c = trim($c);
  5.   if(!$c) continue;
  6.   list($f,$v) = explode(' ',$c);
  7.   if($f && $v) {
  8.     echo '<label>'.$f.' <input type="text" name="'.$f.'" value=\''.$v.'\' /></label>';
  9.   }
  10. }
  11.  


так вывести в форму, а потом собрать в массиве и записать

PHP:
скопировать код в буфер обмена
  1.  
  2. //$_GET or $_POST
  3. if($_REQUEST['save']) {
  4.   unset($_GET['save']);
  5.   foreach($_GET as $k => $v) {
  6.      $data[] = $k.' '.$v;
  7.   }
  8. }
  9. file_put_contents('commands.txt',implode(PHP_EOL,$data));
  10.  

(Отредактировано автором: 11 Декабря, 2012 - 00:22:42)



-----
Just do it
 
 Top
Vaio
Отправлено: 11 Декабря, 2012 - 00:35:13
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Все работает.

Но я не знаю как подогнать под свои нужды.

У меня будет такая форма:

CODE (htmlphp):
скопировать код в буфер обмена
  1. tr_test <input type="text" name="tr_test" value="?" />
  2. mr_test <input type="text" name="mr_test" value="?" />


Она должна находить указанные команды (tr_test и mr_test) в файле file comands.txt и получать их значения в value.
А все остальные команды, которых нет в форме (на данный момент это mt_tester и exec test.cfg), но есть в файле заносить сюда:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <textarea name="other">mt_tester 1
  2. exec test.cfg</textarea>


Извиняюсь, что сразу не так объяснил.
 
 Top
Vaio
Отправлено: 11 Декабря, 2012 - 19:01:48
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




up
 
 Top
Vaio
Отправлено: 12 Декабря, 2012 - 23:41:11
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. $commands = file('commands.txt');
  2. foreach($commands as $c) {
  3.   $c = trim($c);
  4.   if(!$c) continue;
  5.   list($f,$v) = explode(' ',$c);
  6.   $v = str_replace ('"', '', $v);
  7. }

Как с этого кода вывести $v если $f = 'mr_test'?
Так выводит все $v, которые есть в цикле:
PHP:
скопировать код в буфер обмена
  1.         $commands = file('commands.txt');
  2.         foreach($commands as $c) {
  3.           $c = trim($c);
  4.           if(!$c) continue;
  5.           list($f,$v) = explode(' ',$c);
  6.           $v = str_replace ('"', '', $v);  
  7.           if ($f && $v){
  8.                 if ($f='mr_test'){echo $v;};
  9.           }
  10.         }
 
 Top
DeepVarvar Супермодератор
Отправлено: 12 Декабря, 2012 - 23:42:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




if ($f=='mr_test')
 
 Top
Vaio
Отправлено: 13 Декабря, 2012 - 00:05:20
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Спасибо.

А как сделать, если if не выполняется, то все значения $f и $v заносить в textarea
Вот как я сделал:
PHP:
скопировать код в буфер обмена
  1. $commands = file('commands.txt');      
  2. foreach($commands as $c) {
  3.         $c = trim($c);
  4.         if(!$c) continue;
  5.         list($f,$v) = explode(' ',$c);
  6.         $v = str_replace ('"', '', $v);  
  7.         if ($f=='mr_test'){    
  8.                 echo $v;
  9.         } else {
  10.                 echo '<textarea name="other">';
  11.                 echo ''.$f.' '.$v.'';
  12.                 echo '</textarea>';
  13.         }
  14. }

Результат: http://clip2net[dot]com/s/2BaHr
Выходят 3 textarea, а нужно чтобы все в 1 записывались.
 
 Top
DeepVarvar Супермодератор
Отправлено: 13 Декабря, 2012 - 00:08:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. $textareacontent = "";
  2. $commands = file('commands.txt');      
  3.   foreach($commands as $c) {
  4.     $c = trim($c);
  5.     if(!$c) continue;
  6.     list($f,$v) = explode(' ',$c);
  7.     $v = str_replace ('"', '', $v);  
  8.     if ($f=='mr_test'){    
  9.       echo $v;
  10.     } else {
  11.       $textareacontent .= ''.$f.' '.$v.'';
  12.     }
  13. }
  14. echo '<textarea>' . $textareacontent . '</textarea>';
 
 Top
Vaio
Отправлено: 13 Декабря, 2012 - 00:35:59
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




А как это можно связать

CODE (html):
скопировать код в буфер обмена
  1. <input type="text" name="tr_test" value="" />
  2. <input type="text" name="mr_test" value="" />

Проверять если $f == name, то в value заносить $v
если нет, то в value заносить значение по умолчанию для этого name, а все остальные $f и $v заносить в textarea.

Никак не могу сообразить как это сделать.
 
 Top
ky61k
Отправлено: 13 Декабря, 2012 - 00:56:46
Post Id



Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Спасибо Panoptik, помог..
 
 Top
Vaio
Отправлено: 13 Декабря, 2012 - 22:24:05
Post Id


Гость


Покинул форум
Сообщений всего: 116
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Сделал, то что хотел.

commands.txt
CODE (htmlphp):
скопировать код в буфер обмена
  1. dr_body "1"
  2. mr_test "20"
  3. mt_deld 1
  4. dk_daswrq 10
  5. sa_tres 11
  6. de_sawe 2
  7. lo_pops 1
  8. lo_pay 12
  9. sd_kar 24
  10. sa_loid 120
  11. exec test.cfg


PHP:
скопировать код в буфер обмена
  1. $textareacontent = "";
  2. $commands = file('commands.txt');      
  3. foreach($commands as $c) {
  4.         $c = trim($c);
  5.         if(!$c) continue;
  6.         list($f,$v) = explode(' ',$c);
  7.         if (!preg_match("/[a-z][a-z]_/i", $f)) continue;
  8.         $v = str_replace ('"', '', $v);  
  9.  
  10.         if ($f=='dr_body'){    
  11.                 $dr_body=$v;
  12.         } elseif ($f=='mr_test'){
  13.                 $mr_test=$v;
  14.         } elseif ($f=='mt_deld'){
  15.                 $mt_deld=$v;
  16.         } elseif ($f=='dk_daswrq'){
  17.                 $dk_daswrq=$v;
  18.         } elseif ($f=='sa_tres'){
  19.                 $sa_tres=$v;
  20.         } elseif ($f=='sa_loid'){
  21.                 $sa_loid=$v;           
  22.         } else {
  23.                 $textareacontent .= "".$f." ".$v." \n";
  24.         }
  25. }
  26.  
  27. echo 'dr_body <input type="text" name"dr_body" value="'.((empty($dr_body)) ? '100' : ''.$dr_body.'').'" /><br />';
  28. echo 'mr_test <input type="text" name"mr_test" value="'.((empty($mr_test)) ? '100' : ''.$mr_test.'').'" /><br />';
  29. echo 'mt_deld <input type="text" name"mt_deld" value="'.((empty($mt_deld)) ? '100' : ''.$mt_deld.'').'" /><br />';
  30. echo 'dk_daswrq <input type="text" name"dk_daswrq" value="'.((empty($dk_daswrq)) ? '100' : ''.$dk_daswrq.'').'" /><br />';
  31. echo 'sa_tres <input type="text" name"sa_tres" value="'.((empty($sa_tres)) ? '100' : ''.$sa_tres.'').'" /><br />';
  32. echo 'sa_loid <input type="text" name"sa_loid" value="'.((empty($sa_loid)) ? '100' : ''.$sa_loid.'').'" /><br />';
  33.  
  34. echo '<textarea>' . $textareacontent . '</textarea>'


Если будет 30 команд немного не удобно будет их проверять через if, но лучше я ничего не могу придумать. Если кто-то подскажет как упростить буду только благодарен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB