Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2012, 13:18   #1
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию Частично обновить файл кеша ,с раcширением tmp

Имеется файл с расширением tmp. Задача стоит не удалять файл ,а частично обновить ориентируясь по id. Не разу не приходилось делать, да и в нете не могу подходящую статейку найти.
Скажите пожалуйста, как обновить? Тоесть в sql ubdate, а как будит чтоб обновить файл?
Predator199 вне форума Ответить с цитированием
Старый 21.09.2012, 13:27   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Каков формат записей в этом файле?
Как в этих записях определяется id, который нужно обновить?
Andkorol вне форума Ответить с цитированием
Старый 21.09.2012, 13:29   #3
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Код:
a:8:{i:0;a:12:{s:2:"id";s:3:"410";s:3:"asus";s:14:"32";}
Получаю id, - 410.Далее "исполняется" код и обновляет содержимое asus - "32".
Predator199 вне форума Ответить с цитированием
Старый 21.09.2012, 13:39   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

На вид – обычный сериализованный массив.
Попробуй считать содержимое файла в переменную, и потом обработать её при помощи unserialize.
Должен получиться ассоциативный массив.
Находишь в массиве нужный элемент – обновляешь в нем информацию.
Затем массив пропускаешь через serialize, и записываешь обратно в файл.
Andkorol вне форума Ответить с цитированием
Старый 21.09.2012, 13:59   #5
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Нашел пример serialize, а вот как правильно все прописать толком не знаю.
Переписал как считаю правильным. Какие ошибки?
PHP код:
$conn odbc_connect ("webdb""php""chicken");
$session_data='как я понял суда путь до файла';
$sqldata = array (serialize($session_data));// пропускаем через serialize.
$stmt odbc_prepare ($conn"UPDATE sessions SET asus = 44 WHERE  id = 410");//Обновляем нужную запись. 

Как записать массив в файл? Из примера.
PHP код:
if (!odbc_execute ($stmt, &$sqldata)) {
$stmt odbc_prepare($conn,"INSERT INTO sessions (id,asus) VALUES(?, ?)");


Так?

Последний раз редактировалось Predator199; 21.09.2012 в 14:06.
Predator199 вне форума Ответить с цитированием
Старый 21.09.2012, 14:03   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Predator199 Посмотреть сообщение
Нашел пример serialize, а вот как правильно все прописать толком не знаю.
Переписал как считаю правильным. Какие ошибки?
PHP код:
$session_data='как я понял суда путь до файла';
$sqldata = array (serialize($session_data));// пропускаем через serialize.
$stmt odbc_prepare ("UPDATE sessions SET asus = 44 WHERE  id = 410");//Обновляем нужную запись. 
Так?
Бред полнейший...

Последовательность операций:
file_get_contents
unserialize
foreach
serialize
file_put_contents


PS: причем тут вообще ODBC..? Перестань писать чушь, соберись, прочитай все еще раз внимательно, подумай – и только потом начинай писать код.

Последний раз редактировалось Andkorol; 21.09.2012 в 14:14. Причина: PS
Andkorol вне форума Ответить с цитированием
Старый 21.09.2012, 14:19   #7
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

PHP код:
function fore() {    
global 
$db;
$result $db->Query("Запрос на вывод результата в цикле");
    foreach (
$result as $obj) {
            
$id $obj->id;
            
$asus $obj->asus;
            
$for[] = array(    
                
'id' => $id,
                
'asus' => $asus,
            );
    }
    return 
$for;
}




$gg file_get_contents(путь до файла);
$sqldata = array (unserialize($gg));

$for fore(rr);        
foreach(
$for as $row) {

}
Здесь запрос на обновление с полученными данными из цикла (1).
$sqldata = array (serialize($gg));
$insert file_put_contents($gg); 
Так?

Последний раз редактировалось Predator199; 21.09.2012 в 14:21.
Predator199 вне форума Ответить с цитированием
Старый 21.09.2012, 14:29   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Predator199 Посмотреть сообщение
Так?
OMFG...

Попробуем еще раз, с комментариями:
file_get_contents – получаем содержимое файла в переменную.
unserialize – формирует массив из этой переменной.
foreach – проходим по массиву, ищем id, равное 410, изменяем информацию в этом элементе.
serialize – измененный массив преобразуем в строку.
file_put_contents – записываем эту строку обратно в файл.

Здесь будет кода строк на 5 всего.
Andkorol вне форума Ответить с цитированием
Старый 21.09.2012, 14:44   #9
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

PHP код:
            $gg file_get_contents(путь до файла servers.tmp);
            
$sql= array (unserialize($session_data));
          
суда foreach
            
$asus '66';
            
$result $db->Query("UPDATE `pc` SET asus = '{$asus}' WHERE id =410"); //обновляем данные
            
            
$sqldata = array (serialize($session_data));
            
$insert file_put_contents($gg); 
Так? Не знаю как правильно применить конструкцию foreach.
$gg = foreach($session_data);

Последний раз редактировалось Predator199; 21.09.2012 в 14:46.
Predator199 вне форума Ответить с цитированием
Старый 21.09.2012, 14:50   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Predator199 Посмотреть сообщение
Не знаю как правильно применить конструкцию foreach.
В мануале находишь описания и примеры использования для каждой из необходимых функций или конструкций языка, внимательно их изучаешь – затем применяешь в своем коде.
То, что ты чего-то не знаешь или не понимаешь – это целиком и полностью твоя заслуга/проблема.
Читай, разбирайся.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранить изображение компонента в файл, даже если он частично не виден. Son Компоненты Delphi 4 26.07.2012 22:47
Можно ли програмно узнать являеться ли файл .tmp мп3шным? Дима я Общие вопросы Delphi 20 10.07.2010 14:59
Ребилд кеша zumm Общие вопросы Delphi 6 24.05.2010 22:04
Ассоциативность кеша meradone Помощь студентам 4 03.12.2009 20:32
Как частично скрыть строки таблицы... krupnoff PHP 11 21.08.2007 23:49