Главная · Статьи · Файлы · Фото галерея · Видео онлайн
Библиотека
По авторам
По жанрам
Поиск по названию
Навигация
Главная
Статьи
Файлы
Обратная связь
Фото галерея
Видео онлайн
Поиск

Работа
Заказать сайт или программу

Примеры работ
Последние статьи
Технология уничтожения
«Мы – русские»
Ф.М. Достоевский - Д...
Европа против России...
Первые английские ко...
Reklama

Урок 4. Работа с текстовыми файлами, как базами

<b>foreach</b>



еще один любопытный цикл.



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



Есть два вида синтаксиса: второй является расширением первого и используется
реже:



foreach(array_expression as $value) statement

foreach(array_expression as $key => $value) statement





Первый вид циклически проходит по массиву, заданному в array_expression. При
каждом проходе значение текущего элемента присваивается переменной $value, а
внутренний указатель массива передвигается на единицу (поэтому при следующем
проходе вы просмотрите значение следующего элемента).



Второй вид выполняет то же самое, но ключ/key текущего элемента присваивается
переменной $key.









для того что бы нам стало понятней пример



создаем текстовый файл test.dat



вот его содержимое



Иванов|Иван|Иванович|

Петров|Петр|Петрович|

Сидоров|Сидр|Сидорович|



символ | мы используем как разделитель полей



теперь мы хотим считать этот файл разбить по полям и вывести на экран



<?

$cat_line = file("test.dat"); //считываем файл

foreach($cat_line as $line){ //считываем по строчно и проходим по циклу пока
файл не закончится

$cat = explode("|", $line); // каждую строчку разбиваем на поля и загоняем в
массив

echo $cat[0]," ",$cat[1]," ",$cat[2],"

"; // полученные результат выводим на экран

}

?>





пример работы скрипта



Пример 8





как видим в результате мы можем получить данные из текстового файла, а дальше с
ними работать.



следующий раз расмострим как редактировать и сохранять эти данные в файл
обратно.


 



Для того что бы редактировать наш файл с данными надо присвоить каждой его
записи индекс (уникальное числовое значение)



1|Иванов|Иван|Иванович|

2|Петров|Петр|Петрович|

3|Сидоров|Сидр|Сидорович|



сохраним эти данные в файле test1.dat (кстати для тех кто тестирует все на
нелокальных веб-серверах - поставьте этому фалц права доступа 666 или 777)



пример работы скрипта


http://allmustdie.citadelchaos.ru/uroki/4.1.php








текст скрипта


 
<?
if($act == "edit")
{
$old_db = file("test1.dat");
$new_db = fopen("test1.dat", "w");
foreach($old_db as $old_db_line){
$old_db_arr = explode("|", $old_db_line);
if($id != $old_db_arr[0]){
fwrite($new_db,"$old_db_line");
}else{
fwrite($new_db,"$old_db_arr[0]|$familiyaf|$imyaf|$otchestvof|\n");
}
}
fclose($new_db);


}


$cat_line = file("test1.dat");
foreach($cat_line as $line){
$cat = explode("|", $line);
echo $cat[1]," ",$cat[2]," ",$cat[3]," <a href='4.1.php?id=$cat[0]'>Редактировать</a><br>";
if($id==$cat[0])
{
$familiya=$cat[1];
$imya=$cat[2];
$otchestvo=$cat[3];
}
}

if($id)
{
?>
<form method="POST" action="4.1.php?id=<? echo $id; ?>&act=edit">
ID <? echo $id; ?>
<p>Фамилия<input type="text" name=familiyaf size="30" value="<? echo $familiya; ?>"></p>
<p>Имя<input type="text" name=imyaf size="30" value="<? echo $imya; ?>"></p>
<p>Отчество<input type="text" name=otchestvof size="30" value="<? echo $otchestvo; ?>"></p>
<p><input type="submit" value="Сохранить" name="B1"></p>
</form>
<?
}
?>





<hr>



а теперь разберем сам скрипт



 


$cat_line = file("test1.dat");
foreach($cat_line as $line){
$cat = explode("|", $line);
echo $cat[1]," ",$cat[2]," ",$cat[3]," <a href='4.1.php?id=$cat[0]'>Редактировать</a><br>";
}





как и на прошлом уроке. мы считываем данные из файла. загружаем их в массив и
выводим на экран. + добавляем ссылку для редактирования


a href='4.1.php?id=$cat[0]'>Редактировать</a>

в этом коде мы вызываем сам скрипт но еще переаем значения переменной ID




таким образом мы можем передавать через адресную строчку значения переменных,
они идут после знака "?". если переменных несколько то они указываются через
"&". ?per1=1&per2=2&per3=tri







далее

Полный код скрипта



 



if($id==$cat[0])
{
$familiya=$cat[1];
$imya=$cat[2];
$otchestvo=$cat[3];
}

if($id)
{
?>
<form method="POST" action="4.1.php?id=<? echo $id; ?>&act=edit">
ID <? echo $id; ?>
<p>Фамилия<input type="text" name=familiyaf size="30" value="<? echo $familiya; ?>"></p>
<p>Имя<input type="text" name=imyaf size="30" value="<? echo $imya; ?>"></p>
<p>Отчество<input type="text" name=otchestvof size="30" value="<? echo $otchestvo; ?>"></p>
<p><input type="submit" value="Сохранить" name="B1"></p>
</form>
<?
}
?>













если переменная ID не задана (а она задается при нажатии на одну из ссылок
"редактировать") то этот блок не отрабатывает. если же кликнули на одну из
ссылок то ID получает значение равное значению индекса из файла и значения
других полей присваиваются переменным $familiya

$imya

$otchestvo

эти значения мы выводим в поля формы которая тоже появляется при нажатии на
ссылку



в форме мы можем редактировать данные в полях и сохранять изменения.



 


if($act == "edit")
{
$old_db = file("test1.dat");
$new_db = fopen("test1.dat", "w");
foreach($old_db as $old_db_line){
$old_db_arr = explode("|", $old_db_line);
if($id != $old_db_arr[0]){
fwrite($new_db,"$old_db_line");
}else{
fwrite($new_db,"$old_db_arr[0]|$familiyaf|$imyaf|$otchestvof|\n");
}
}
fclose($new_db);


}





как видим если переменная $act имеет значение "edit", то происходит запись
изменений. запись происходит так. считываем в массив файл test1.dat и этот же
файл мы открываем с параметром -w. т.е. файл обнуляется и открыт для записи.


далее. мы как всегда разбиваем полученные данные на части и загружаем в
массив. полученный массив мы записываем в тот же файл но при совпадении
индекса с ID мы записываем новые данные, которы получили из формы.



потом файл закрывается. результат. мы имеем файл с новыми данными. можете
поэксперементировать на моем файле или попробуйте у себя


 


 


Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Забыли пароль?
Запросите новый здесь.
Сейчас на сайте
Гостей: 1
На сайте нет зарегистрированных пользователей

Пользователей: 1
Не активированный пользователь: 0
новичок: AMD
Статистика
Яндекс.Метрика
Rambler's Top100


PR-CY.ru
Protected by Copyscape Online Plagiarism Checker
Back To Top Back To Top Back To Top

Best Viewed 1280x1024