|
|
|
| Привет!
Допустим есть Файл в котором франится инфа о пользователях примерного содержания:
Сергей|г.Москва|sergey@mail.ru|8901765459
Дмитрий|г.Сургут|diman_surgut@pochta.ru|46789
Елена|г.Сочи|lena@list.ru|89007665456
Олеся|г.Новый Уренгой|lesy@mail.ru|8126544456
Никита|г.Екатеринбург|nikitos@mail.ru|876454678
......
Как заменить место жительства юзера Олеси на новое??? | |
|
|
|
|
|
|
|
для: method
(05.06.2005 в 02:51)
| | Это можно осуществить при помощи следующего скрипта
<?php
// Имя файла
$filename = "file.txt";
// Помещаем содержимое файла в
// массив $content, каждый элемент
// котого соотвествует одной строке
$content = file($filename);
// В цикле ищем строку с именем Олеся
foreach($content as $line)
{
// Разбиваем строку на части
$arr = explode("|",$line);
// Меняем местожительства
if($arr[0] == "Олеся")
{
$arr[1] = "Москва";
// Собираем строку по новой
$line = implode("|",$arr);
}
// Уничтожаем массив $arr
unset($arr);
// Формируем новое содержимое файла
$buffer .= $line;
}
// Перезаписываем файл
$fd = fopen($filename,"w");
fwrite($fd,$buffer);
fclose($fd);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(05.06.2005 в 12:30)
| | Спасиба cheops =)
Всё таки пришлось читать файл в массив и потом уничтожать все записи,
а уже потом вставлять обновленную запись поновому......
array_push есть такая функция, я мудрил мудрил с ней чёто пока не выходит..... | |
|
|
|
|
|
|
|
для: cheops
(05.06.2005 в 12:30)
| | Только одна поправочка.....
Программа будет работать быстрее, если сначала проверить, нужная ли это строка, а затем ее обрабатывать, и если не использовать цикл foreach.....
Т.е. примерно вот так...
<?php
$filename = "file.txt"; // Задаем имя файла
$content = file($filename); // Помещаем содержимое файла в массив $content,
// каждый элемент котого соотвествует одной строке
$fstr = "Олеся"; // Определяем искомую строку
$fstrlen = strlen($fstr); // и ее длину
$cont_co = sizeof($content); // Определяем количество строк в файле
for($i = 0; $i < $cont_co; $i++) // Ищем в цикле строку с нужным именем
{ if(substr($content[$i],0,$fstrlen) == $fstr) // Если это искомая строка
{ $arr = explode("|",$line); // Разбиваем строку на части
$arr[1] = "Москва"; // Меняем место жительства
$line = implode("|",$arr); // Собираем строку по новой
unset($arr); // И уничтожаем массив $arr
}
$buffer .= $line; // Формируем новое содержимое файла
}
$fd = fopen($filename,"w"); // Перезаписываем файл
fwrite($fd,$buffer);
fclose($fd);
?>
|
| |
|
|
|
|
|
|
|
для: Sfinks
(06.06.2005 в 04:15)
| | CHEOPS спасибо ещё раз :)
: Sfinks'у тоже спасибо :)
то чего я хотел я почти добился,
а почти потомочту не получается у меня сделать одну
немаловажную деталь, вот есть файл юзеров, на страничке zamen.php
в полях тэга SELECT отображаются ники юзеров(берутся из файла users.txt см. 1 пост)
надо сделать чтоб при выборе ника юзера, в поле типа input добавлялось
текущее место жительства этого юзера, а там уж мы сами будем смотреть
редактировать или нет ;)
файл zamen.php:
<!doctype html public "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<title>Обновление места жительства</title>
</head>
<body><form action="zamen.php" method="POST" name="zamena">
<input type="hidden" name="action" value="">
<select name="users" >
<?php
Error_Reporting(0);
$users = $_POST['users'];
$text = $_POST['text'];
$view=file("users.txt");
$co = sizeof($view);
for($i=0;$i<$co;$i++){
list($name,$city,$mail,$tel) = split('[|]', trim($view[$i]));
if($name!==""){
print "<option value='".$name."'>".$name."</option>";}
}
fclose($view);
?>
</select>
<input type="text" name="text" value="<? print $city; ?>">
<input type="submit" name="submit" value="Обновить"></form>
</body>
</html>
<?
if(isset($_POST['action']))
{
if($text==""){$submit = false;}
if($text!==""){
$content = file("users.txt");
foreach($content as $line){
$arr = explode("|",$line);
if($arr[0] == $users)
{
$arr[1] = $text;
$line = implode("|",$arr);
}
unset($arr);
$buffer .= $line;
}
$fd = fopen("users.txt","w");
fwrite($fd,$buffer);
fclose($fd);}
}
?>
|
Спасибо за внимание. | |
|
|
|
|
|
|
|
для: method
(06.06.2005 в 12:10)
| | Это надо на JavaScropt писать... так как действие уже переместилось на машину пользователя, а PHP работает только на сервере. | |
|
|
|
|
|
|
|
для: cheops
(06.06.2005 в 12:37)
| | А как удалить полностью строку если пользоваться одним из выше написаным скриптом? | |
|
|
|
|