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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Запись в файл из db
tarweb
Отправлено: 17 Марта, 2012 - 14:15:27
Post Id


Новичок


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


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




Как выбрать из полей таблицы значения и записать их в файл, чтобы эти значения обновлялись в файле но не добавлялись.
Например:
из поля "en" в файл "en.php"
из поля "ru" в файл "ru.php"
 
 Top
DeepVarvar Супермодератор
Отправлено: 17 Марта, 2012 - 14:18:57
Post Id



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


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


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




Из каких полей какой таблицы?
 
 Top
tarweb
Отправлено: 17 Марта, 2012 - 14:21:55
Post Id


Новичок


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


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




DeepVarvar пишет:
Из каких полей какой таблицы?


Например таблицы под названием "lang_en"
из поля "en" в файл "en.php"
Например таблицы под названием "lang_ru"
из поля "ru" в файл "ru.php"


Вот - может это поправите.
PHP:
скопировать код в буфер обмена
  1.  
  2. $lang = glob($path_lang."*", GLOB_ONLYDIR);
  3. $count_lang = count($lang);
  4.  
  5. foreach ($lang as $dir)
  6. {              
  7. if ((is_dir($path_lang)==TRUE)&&($path_lang!='.' && $path_lang!='..' ))
  8. {          
  9. $dirs = basename($dir);
  10. }                  
  11.  
  12. for ( $i=1; $i<=$count_lang; $i++ )
  13. {
  14. $r = $db->query ( "SELECT * from lang_$dirs WHERE id='$i' order by id" ) or die (mysql_error());        
  15. $fo = $db->fetcharray($r);
  16.  
  17. $menu_lang = '$lang_'.$fo[link].' = "'.$fo[name_top].'";';
  18.  
  19. echo "$i...$dirs...$menu_lang<br>";
  20. //Здесь вывод нормальный
  21. /*
  22. К примеру:
  23. 1...en...$lang_404 = "None found";
  24. 2...en...$lang_index = "Home";
  25. 3...en...$lang_ralty = "Real Estate";
  26. 1...ru...$lang_404 = "Ничего не найдено";
  27. 2...ru...$lang_index = "Главная";
  28. 3...ru...$lang_ralty = "Недвижимость";
  29. 1...uk...$lang_404 = "Нічого не знайдено";
  30. 2...uk...$lang_index = "Головна";
  31. 3...uk...$lang_ralty = "Нерухомість";
  32. */
  33.  
  34. //Как здесь сделать, чтобы не дописовались, а переписовались файлы ???
  35. $temp_lang    = file_get_contents("lang/temp_$dirs.php");      
  36. $fp1 = fopen ("./../lang/$dirs/$dirs.php", "a");
  37. flock($fp1,LOCK_EX);
  38. fwrite($fp1,$menu_lang."\n");
  39. fwrite($fp1,$temp_lang);
  40. fflush($fp1);
  41. flock($fp1,LOCK_UN);
  42. fclose($fp1);
  43.  
  44. }
  45.  
  46. }
  47.  

(Отредактировано автором: 17 Марта, 2012 - 15:16:38)

 
 Top
tarweb
Отправлено: 17 Марта, 2012 - 16:25:29
Post Id


Новичок


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


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




Наверное, пойду с этим вопросом регистрироваться на следующий PHP-форум.
 
 Top
Самогонщик
Отправлено: 17 Марта, 2012 - 16:38:39
Post Id



Посетитель


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


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




Перезаписывать файл целиком, не? fopen ("./../lang/$dirs/$dirs.php", "w");

Или за тебя код надо написать? это в другой раздел.
 
 Top
tarweb
Отправлено: 17 Марта, 2012 - 16:41:53
Post Id


Новичок


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


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




Самогонщик пишет:
Перезаписывать файл целиком, не? fopen ("./../lang/$dirs/$dirs.php", "w");

Или за тебя код надо написать? это в другой раздел.


Тогда будет писать только одно значение в каждый файл !!!

Например:
$lang_404 = "None found";
$lang_404 = "Ничего не найдено";
$lang_404 = "Нічого не знайдено";

(Отредактировано автором: 17 Марта, 2012 - 17:25:09)

 
 Top
Самогонщик
Отправлено: 17 Марта, 2012 - 17:23:36
Post Id



Посетитель


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


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




Ага, так открывай файл заранее.

У меня вопросы: почему ты делаешь внутренний цикл по количеству языков ($i<=$count_lang) и почему ты выбираешь из базы данных только одну строчку каждый раз?
 
 Top
tarweb
Отправлено: 17 Марта, 2012 - 17:31:32
Post Id


Новичок


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


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




Только перебором, так как таблицы языков могут добавляться.
Поэтому заранее открывать файл невозможно, так как нужно делать перебор файлов в соответствии с наличием языков.
 
 Top
Самогонщик
Отправлено: 17 Марта, 2012 - 17:37:32
Post Id



Посетитель


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


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




Так делаем перебор по языкам (внешний цикл) а потом выжираем таблицу целиком и целиком пишем её в файл. У тебя имя таблицы и файлов завязано на $dirs, но никак не на $i.

А так получается, что из каждой таблицы ты прочитаешь столько же значений сколько у тебя языков (да ещё не эффективно), тебе не кажется это странным?
 
 Top
tarweb
Отправлено: 17 Марта, 2012 - 17:43:43
Post Id


Новичок


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


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




Самогонщик пишет:
Так делаем перебор по языкам (внешний цикл) а потом выжираем таблицу целиком и целиком пишем её в файл. У тебя имя таблицы и файлов завязано на $dirs, но никак не на $i.



$i - выбор значений из таблиц.
Не поверишь, перебрал десятки вариантов и этот тоже.

Самогонщик пишет:
А так получается, что из каждой таблицы ты прочитаешь столько же значений сколько у тебя языков (да ещё не эффективно), тебе не кажется это странным?


В админ-панели мне не нужно эффективность, главное чтобы работало !

(Отредактировано автором: 17 Марта, 2012 - 17:50:06)

 
 Top
Самогонщик
Отправлено: 17 Марта, 2012 - 17:57:49
Post Id



Посетитель


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


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




Вот у тебя 3 языка, будет работать для 3-х страниц. Будет 4 языка, будет работать для 4-х страниц. Тебя ничего не смущает?

(Отредактировано автором: 17 Марта, 2012 - 17:58:51)

 
 Top
tarweb
Отправлено: 17 Марта, 2012 - 18:07:51
Post Id


Новичок


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


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




Самогонщик пишет:
Вот у тебя 3 языка, будет работать для 3-х страниц. Будет 4 языка, будет работать для 4-х страниц. Тебя ничего не смущает?


Про страницы не понял - есть запись в конфигурационные файлы.
 
 Top
Самогонщик
Отправлено: 17 Марта, 2012 - 18:13:52
Post Id



Посетитель


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


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




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

tarweb пишет:
Про страницы не понял - есть запись в конфигурационные файлы.

К примеру у тебя есть 3 языка и в один из файлов пишется:
1...en...$lang_404 = "None found";
2...en...$lang_index = "Home";
3...en...$lang_ralty = "Real Estate";

А если языка будет 2, в файл только такое запишется?
1...en...$lang_404 = "None found";
2...en...$lang_index = "Home";

Если верить коду, то да. И это очень странно.
(Добавление)
Не совсем такое, но это иллюстрация к трём и двум записям.
 
 Top
tarweb
Отправлено: 17 Марта, 2012 - 18:25:28
Post Id


Новичок


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


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




Я уже запутался - это я уже отвечаю сам себе на вопросы ?

Нет - есть цикл foreach, в котором четко перебираються по названию и числу языков, существующих папок, а потом в этом же цикле и записуються в файлы папок.

(Отредактировано автором: 17 Марта, 2012 - 18:42:25)

 
 Top
Самогонщик
Отправлено: 17 Марта, 2012 - 18:56:14
Post Id



Посетитель


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


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




Всё нормально, расслабься, дыши.

У тебя есть внутренний цикл for ( $i=1; $i<=$count_lang; $i++ ). Вопрос, почему он ограничен $count_lang ?

tarweb пишет:
Я уже запутался - это я уже отвечаю сам себе на вопросы ?
Нет, ты отвечаешь на мои вопросы. Был конкретный совет: подыми открытие файла выше цикла for ( $i=1; $i<=$count_lang; $i++ ) и открывай на перезапись.
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB