[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись файла из массива
tar
Пишет в файл по одному разу.
//Папка языков
$path_lang = "lang";

//Массив языков(ru, uk, en)
foreach (glob($path_lang."*") as $dir)
{
if ((is_dir($path_lang)==TRUE)&&($path_lang!='.' && $path_lang!='..' ))
{
$dirs = basename($dir);
}

$ro = $db->query ( "select * from pages_$dirs order by id " ) or die (mysql_error());
$res = $db->numrows ($ro);

//Массив переменных в базе
for ( $i=1; $i<=$res; $i++ )
{
//Таблицы языков с данными link, name(pages_ru, pages_uk, pages_en)
$r = $db->query ( "SELECT * from pages_$dirs WHERE id='$i' order by id" ) or die (mysql_error());
$fo = $db->fetcharray($r);

$menu_lang = '$lang_'.$fo[link].' = "'.$fo[name_top].'";';

//Здесь вывод нормальный
echo "$i...$dirs...$menu_lang <br>";
/*К примеру:
1...en...$lang_404 = "None found";
2...en...$lang_index = "Home";
3...en...$lang_ralty = "Real Estate";
1...ru...$lang_404 = "Ничего не найдено";
2...ru...$lang_index = "Главная";
3...ru...$lang_ralty = "Недвижимость";
1...uk...$lang_404 = "Нічого не знайдено";
2...uk...$lang_index = "Головна";
3...uk...$lang_ralty = "Нерухомість";
*/


//Записывает в файл - только по одному разу в каждую папку языков при $i>1 ???

$temp_lang = file_get_contents("$path_lang/temp_$dirs.php");
$fp1 = fopen ("./../$path_lang/$dirs/$dirs.php", "w");
flock($fp1,LOCK_EX);
ftruncate ($fp1,0);
fwrite($fp1,$menu_lang."\r\n");
fwrite($fp1,$temp_lang);
fflush($fp1);
flock($fp1,LOCK_UN);
fclose($fp1);
}
}

/*К примеру:
$lang_ralty = "Real Estate"; (в файл en.php)
$lang_ralty = "Недвижимость"; (в файл ru.php)
$lang_ralty = "Нерухомість"; (в файл uk.php)
*/




Спустя 1 час, 28 минут, 54 секунды (12.03.2012 - 21:44) tar написал(а):
Народ АУУУУУУУУУУ
Я падаю.......

Спустя 1 час, 11 минут (12.03.2012 - 22:55) tar написал(а):
user posted image

Спустя 6 часов, 46 минут, 45 секунд (13.03.2012 - 05:42) Visman написал(а):
И в чем вопрос?

Спустя 3 часа, 54 минуты, 41 секунда (13.03.2012 - 09:37) tar написал(а):
Вопрос закоментирован

//Записывает в файл - только по одному разу в каждую папку языков при $i>1 ???

Спустя 12 минут, 5 секунд (13.03.2012 - 09:49) sergeiss написал(а):
Во-первых, не надо делать запросы к БД в цикле. Это принципиально не верно, хотя и работает smile.gif Сделай один запрос и бери данные.
Во-вторых, ты внутри цикла открываешь файл на запись (режим "w"), а не на добавление (!!!). Конечно, там только последняя запись будет. Потому что файл каждый раз пересоздается.

Спустя 7 часов, 8 минут, 29 секунд (13.03.2012 - 16:57) tar написал(а):
Спасибо - файл на запись (режим "w") понял !

Но мне нужно только режим "w" с перезаписью, иначе будут плодиться
все время дублирующие данные.

Не понял - как одним запросом вытаскивать данные из множества таблиц.

Спустя 41 минута, 27 секунд (13.03.2012 - 17:39) sergeiss написал(а):
Цитата (tar @ 13.03.2012 - 17:57)
Но мне нужно только режим "w" с перезаписью, иначе будут плодиться
все время дублирующие данные.

Так ты открой файл ДО начала цикла, а закрой по окончании цикла. Если это, конечно, соответствует логике твоего приложения.

Цитата (tar @ 13.03.2012 - 17:57)
Не понял - как одним запросом вытаскивать данные из множества таблиц.

Это про JOIN почитай в хэлпе. Хотя в твоем случае я вообще не понял, что ты делаешь с данными. Сначала выбираешь всё, идешь по этим данным в цикле, выбирая их же опять... Хрень какая-то smile.gif

Спустя 27 минут, 33 секунды (13.03.2012 - 18:06) tar написал(а):
Цитата (sergeiss @ 13.03.2012 - 14:39)
Так ты открой файл ДО начала цикла, а закрой по окончании цикла. Если это, конечно, соответствует логике твоего приложения.


Файл должен открываться только в цикле для выбора папки и файла языков
$fp1 = fopen ("./../$path_lang/$dirs/$dirs.php", "w");


Цитата (sergeiss @ 13.03.2012 - 14:39)
Это про JOIN почитай в хэлпе. Хотя в твоем случае я вообще не понял, что ты делаешь с данными. Сначала выбираешь всё, идешь по этим данным в цикле, выбирая их же опять... Хрень какая-то


Первый запрос для массива for что-бы определить количество - $res.
По другому определить $res я не смог придумать.
(Количество итераций внутри foreach определить не возможно)

JOIN - сначала, я думаю, надо определить как-то, какие таблицы выбирать
(принадлежит она к языкам или нет)
И потом, одинаковых данных в таблицах для объединения у меня нет.

Спустя 2 часа, 17 минут, 16 секунд (13.03.2012 - 20:24) sergeiss написал(а):
Цитата (tar @ 13.03.2012 - 19:06)
(Количество итераций внутри foreach определить не возможно)

Всё понятно с тобой smile.gif

Иди сюда http://phpforum.ru/index.php?showtopic=21916 и читай. Тебе не нужен цикл foreach вообще.

Спустя 1 час, 31 минута, 54 секунды (13.03.2012 - 21:56) tar написал(а):
Цитата (sergeiss @ 13.03.2012 - 17:24)
Иди сюда http://phpforum.ru/index.php?showtopic=21916 и читай

Вывод из базы - это хорошо, но мне нужно этот вывод как-то раскидать по файлам, которые соответствуют названиям таблиц.
Данные таблицы pages_ru - папка ru/файл ru
Данные таблицы pages_en - папка ru/файл en
И так далее....

p.s. Вроде все так просто.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.