Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: добавление в файл и чтение из файла!
 
 автор: sedek   (23.10.2004 в 20:36)
 
 

Подскажите пожалуйста как мне сделать такое!
Допустим скрипт принял параметр
$_GET['id']

скрипт должен записать его в файл добавив запятую! а дальше он должен прочитать из этого файла но без последней запятой именно только без последнеей!

   
 
 автор: cheops   (23.10.2004 в 21:02)   письмо автору
 
   для: sedek   (23.10.2004 в 20:36)
 

Не очень понятно сколько раз производится операция, и что должно происходить со старым содержимым файла при повторном вызове скрипта. Вот вариант в предположении, что новые данные должны дописываться в конец файла
<?php
  $filename 
"test.txt";
  
$str $_GET['id'];
  
// Помещаем параметр id в файл, добавляя запятую
  
$fd fopen($filename"a");
  
fwrite($fd$str.",");
  
fclose($fd);
  
// Извлекаем содержимое файла
  
$fd fopen($filename"r");
  
$bufer fread($fdfilesize($filename));
  
fclose($fd);
  
// Удаляем последнюю запятую
  
$bufer substr($bufer,0,strlen($bufer) - 1);
  echo 
$bufer;
?>

   
 
 автор: sedek   (24.10.2004 в 21:02)
 
   для: cheops   (23.10.2004 в 21:02)
 

Да он должен дописывать в файл и если возможно он должен проверить если такой параметр уже есть в файле то он не должен его дописывать! а если нет то дописать!

   
 
 автор: cheops   (24.10.2004 в 21:34)   письмо автору
 
   для: sedek   (24.10.2004 в 21:02)
 

А что передаётся в качестве параметра, дело в том, что трудно проверить имеется ли в файле что-то, если не известно что оно из себя представляет. Например, содержит ли в тексте, передаваемом через параметр id запятые или нет?

   
 
 автор: sedek   (26.10.2004 в 16:33)
 
   для: cheops   (24.10.2004 в 21:34)
 

в параметре передаётся 5 или 6 букв возможно с цифрами! Пример: D34SG4

   
 
 автор: sedek   (26.10.2004 в 18:51)
 
   для: cheops   (24.10.2004 в 21:34)
 

И ещё вопросик!
Мне нужно чтобы скрипт читал файл и то что он прочитает между запятыми подставлял в echo
примерно так:
это текстовый файл
D5HJ4,JK3TY4,LE2HE4,OR9ET4,
а вот так он должен подставить:

echo '$PID'."\r\n D5HJ4 $tex\n";
echo '$PID'."\r\n JK3TY4 $tex\n";
echo '$PID'."\r\n LE2HE4 $tex\n";
echo '$PID'."\r\n OR9ET4 $tex\n";

   
 
 автор: glsv (Дизайнер)   (26.10.2004 в 20:52)   письмо автору
 
   для: sedek   (26.10.2004 в 18:51)
 

Можно это делать через функцию fgetcsv

<?php
$handle 
fopen ("test.txt","r");
while (
$data fgetcsv ($handle1000",")) {
  foreach (
$data as $value) {
    echo 
"PID: $value</br>\n";
  }
}
fclose ($handle);
?> 


http://www.softtime.ru/dic/id_dic=170&id_group=6

   
 
 автор: cheops   (26.10.2004 в 21:02)   письмо автору
 
   для: glsv (Дизайнер)   (26.10.2004 в 20:52)
 

А проверку того факта имеется такой параметр в файле или нет, можно осуществить при помощи следующего скрипта:
<?php 
  $filename 
"test.txt"
  
$str $_GET['id']; 
  
////////////////////////////////////////////////
  // Блок проверки существования переменной в файле
  ////////////////////////////////////////////////
  // Извлекаем содержимое файла 
  
$fd fopen($filename"r"); 
  
$bufer fread($fdfilesize($filename)); 
  
fclose($fd); 
  
// Удаляем последнюю запятую 
  
$bufer substr($bufer,0,strlen($bufer) - 1); 
  
// Разбиваем переменную на подстроки
  
$content explode($bufer,",");
  
// Определяем имеется в файле значение $_GET['id']
  
if(!in_array($_GET['id'],$content))
  {
    
// Если такого значения нет - добавляем его в файл
    
$fd fopen($filename"a"); 
    
fwrite($fd$str.","); 
    
fclose($fd); 
  }
?>

   
 
 автор: sedek   (29.10.2004 в 20:18)
 
   для: cheops   (26.10.2004 в 21:02)
 

Почемуто всёравно записывает в файл даже если параметр передали несколько раз то всё записывает даже если там есть такой параметр!

   
 
 автор: cheops   (29.10.2004 в 22:18)   письмо автору
 
   для: sedek   (29.10.2004 в 20:18)
 

Хм... если вы выложите файл и укажите параметры - будет гораздо проще отладить скрипт...

   
 
 автор: sedek   (29.10.2004 в 22:41)
 
   для: cheops   (29.10.2004 в 22:18)
 

Вот файл!

   
 
 автор: cheops   (30.10.2004 в 12:18)   письмо автору
 
   для: sedek   (29.10.2004 в 22:41)
 

Нашёл свою опечатку... замените пожалуйста строку
<?php
  
// Разбиваем переменную на подстроки
  
$content explode($bufer,",");
?>

на
<?php
  
// Разбиваем переменную на подстроки
  
$content explode(",",$bufer);
?>

   
 
 автор: sedek   (03.11.2004 в 14:33)
 
   для: cheops   (26.10.2004 в 21:02)
 

И ещё допустим скрипт ринял параметр
$_GET['param1']
и
$_GET['id']
$_GET['nick']
он их записал в файлы
а получив в переменной offline
if($_GET['param1'] == "offline")

он должен он должен удалить из файлов id и nick те что принял в $_GET['id']
$_GET['nick'] и вывести сообщение!

   
 
 автор: cheops   (03.11.2004 в 23:30)   письмо автору
 
   для: sedek   (03.11.2004 в 14:33)
 

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

   
 
 автор: sedek   (05.11.2004 в 16:00)
 
   для: cheops   (03.11.2004 в 23:30)
 

<?php
header
("Content-Type: text/plain");
$menu = array(
1  => '1',
2  => '2',
3  => '3',
4  => '4',
5  => '5',
6  => '6',
7  => '7',
);
srand ((double) microtime() * 1000000);
$rnd rand(1,7);
$_GET['param1'] = stripslashes($_GET['param1']);
$_GET['voc'] = stripslashes($_GET['voc']);
if(isset(
$_GET['param1']))
if(isset(
$_GET['voc']))
if(isset(
$_GET['nick']))
if(isset(
$_GET['id']))
if(isset(
$_GET['master']))
$kom $_GET['param1'];
$master $_GET['master'];
$msg $_GET['voc'];
$nik $_GET['nick'];
$filename "pid.txt";
$str $_GET['id'];
$fd fopen($filename"r");
$bufer fread($fdfilesize($filename));
fclose($fd);
$bufer substr($bufer,0,strlen($bufer) - 1);
$content explode(",",$bufer);
if(!
in_array($str,$content))
{
$fd fopen($filename"a");
fwrite($fd,$str.",");
fclose($fd);
}
$nic "niks.txt";
$fg fopen($nic"r");
$bufer fread($fg,filesize($nic));
fclose($fg);
$bufer substr($bufer,0,strlen($bufer) - 1);
$content explode(",",$bufer);
if(!
in_array($nik,$content))
{
$fg fopen($nic,"a");
fwrite($fg,$nik.",");
fclose($fg);
}
////////geton///////
if($_GET['param1'] == "geton")
{
$fg fopen($nic"r");
$bufer fread($fg,filesize($nic));
fclose($fg);
$bufer substr($bufer,0,strlen($bufer) - 1);
echo 
"CHAT-$master> В ON $bufer";
exit();
}
if(
$_GET['param1'] == "Geton")
{
$fg fopen($nic"r");
$bufer fread($fg,filesize($nic));
fclose($fg);
$bufer substr($bufer,0,strlen($bufer) - 1);
echo 
"CHAT-$master> В ON $bufer";
exit();
}
if(
$_GET['param1'] == "GETON")
{
$fg fopen($nic"r");
$bufer fread($fg,filesize($nic));
fclose($fg);
$bufer substr($bufer,0,strlen($bufer) - 1);
echo 
"CHAT-$master> В ON $bufer";
exit();
}
/////////////////////
echo "CHAT-$master> Ваше сообщение отправлено!";
$handle fopen ("pid.txt","r");
while (
$data fgetcsv($handle1000","))
{
foreach (
$data as $value)
{
echo 
'$PID'."\r\n $value chat-$nik$msg\n";
}
}
?>

Главное чтобы он когда запишет id не выводил его в конце в echo тут
$handle = fopen ("pid.txt","r");
while ($data = fgetcsv($handle, 1000, ","))
{
foreach ($data as $value)
{
echo '$PID'."\r\n $value chat-$nik> $msg\n";
}
}

   
 
 автор: sedek   (06.11.2004 в 22:55)
 
   для: sedek   (05.11.2004 в 16:00)
 

Записать в файл если его там нет он должен а вот сообщение посылать на него не должен!

   
 
 автор: cheops   (06.11.2004 в 23:55)   письмо автору
 
   для: sedek   (06.11.2004 в 22:55)
 

Пропустил ваш пост... постараюсь завтра сделать...

   
 
 автор: sedek   (07.11.2004 в 22:42)
 
   для: cheops   (06.11.2004 в 23:55)
 

И ещё Я уже задавал такой вопрос!
Хотелось бы осуществить проверку на существование в $_GET['param1'] определённых данных если там начинается на <ems:picture и заканчивается на "> то запись в файл производится а если нет то выводится сообщение! Меня интерисует сама проверка!
И возможно ли такое если $_GET['param1'] == "add" то то что будет в $_GET['voc']должно записаться в файл!
или если в $_GET['param1'] данные начинаются с ADD то то что будет после ADD должно записаться в файл!
Если возможно конечно!

   
 
 автор: cheops   (07.11.2004 в 22:55)   письмо автору
 
   для: sedek   (07.11.2004 в 22:42)
 

Всё это пишется в тот же файл? или другой?

   
 
 автор: sedek   (07.11.2004 в 23:11)
 
   для: sedek   (07.11.2004 в 22:42)
 

Проверка в другой а ADD в тот!

   
 
 автор: cheops   (07.11.2004 в 23:12)   письмо автору
 
   для: sedek   (07.11.2004 в 22:42)
 

Хм.. давайте по порядку вот вариант с offline - это то или нет?

   
 
 автор: sedek   (07.11.2004 в 23:43)
 
   для: cheops   (07.11.2004 в 23:12)
 

да в этот ещё чтобы то что примет в $_GET['id'] записал в файл но не выводил в echo
тут $handle = fopen ("pid.txt","r");
while ($data = fgetcsv($handle, 1000, ","))
{
foreach ($data as $value)
{
echo '$PID'."\r\n $value chat-$nik> $msg\n";
}
}
и то что ADD

   
 
 автор: cheops   (08.11.2004 в 00:04)   письмо автору
3.1 Кб
 
   для: sedek   (07.11.2004 в 23:43)
 

Хм... файл получается запутанный какой-то... по моему там всё по другому нужно делать, непонятно так же как должны разделяться $id и $msg в файле pid.txt...

   
 
 автор: sedek   (09.11.2004 в 20:37)
 
   для: cheops   (08.11.2004 в 00:04)
 

Простите у меня комп сломался!
<?php
header
("Content-Type: text/plain");
$_GET['param1'] = stripslashes($_GET['param1']);
$_GET['voc'] = stripslashes($_GET['voc']);
if(isset(
$_GET['param1']))
if(isset(
$_GET['voc']))
//Тут принимает параметр id
if(isset($_GET['id']))
$kom $_GET['param1'];
$msg $_GET['voc'];
$str $_GET['id'];
//Тут записывает в файл его
$filename "pid.txt";
$fd fopen($filename"r");
$bufer fread($fdfilesize($filename));
fclose($fd);
$bufer substr($bufer,0,strlen($bufer) - 1);
$content explode(",",$bufer);
if(!
in_array($str,$content))
{
$fd fopen($filename"a");
fwrite($fd,$str.",");
fclose($fd);
}
echo 
"CHAT-$master> Ваше сообщение отправлено!";
//А тут прочитав файл посылает на все id сообщение
//А надо чтоб тут посылал на все что в файле кроме
// того что принял в  if(isset($_GET['id']))
$handle fopen ("pid.txt","r");
while (
$data fgetcsv($handle1000","))
{
foreach (
$data as $value)
{
echo 
'$PID'."\r\n $value chat-$nik$msg\n";
}
}
?>

И отдельный блок!
допустим пользователь хочет добавить картинку в каталог pic.txt
он посылает в скрипт add картинка
скрипт приняв в $_GET['param1']; ADD картинка, должен записать в файл pic.txt только то что стоит после ADD и послать сообщение успешно добавлено! А если нет слова ADD то просто продолжить выполнение скрипта!

   
 
 автор: sedek   (09.11.2004 в 21:01)
 
   для: sedek   (09.11.2004 в 20:37)
 

<?php
header
("Content-Type: text/plain");
$add "catalog.txt";
if(
$_GET['param1'] == "")
{
echo 
"Вы ничего не добавили!!!";
exit();
}
$_GET['param1'] = stripslashes($_GET['param1']);
if(isset(
$_GET['param1']))
if(isset(
$_GET['nick']))
if(isset(
$_GET['id']))
//Тут надо сделать проверку на правильность введённых данных
//$_GET['param1'] должно начинаться с <ems:picture и заканчиваться ">
//но чтоб это было один раз
// Допустим <ems:picture hex="dfsdfsdfgsdgfsdfsdfsdfs">
//А если будет так <ems:picture hex="dfsdfsdfgsdgfsdfsdfsdfs"><ems:picture hex="dfsdfsdfgsdgfsdfsdfsdfs">
// Или просто текст то скрипт должен вывести сообщение об ошибке
// А если так и есть то в конце производится запись
$_GET['param1'] = substr($_GET['param1'],0,800);
$filename "pid.txt";
  
$str $_GET['id'];
  
$fd fopen($filename"r");
  
$bufer fread($fdfilesize($filename));
  
fclose($fd);
  
$bufer substr($bufer,0,strlen($bufer) - 1);
  
$content explode(",",$bufer);
  if(!
in_array($_GET['id'],$content))
  {
    
$fd fopen($filename"a");
    
fwrite($fd$str.",");
    
fclose($fd);
  }
$tex "Добавил: ".$_GET['nick'].">".$_GET['param1'];
$handle fopen ("pid.txt","r");
while (
$data fgetcsv ($handle1000",")) {
  foreach (
$data as $value) {
    echo 
'$PID'."\r\n $value $tex\n";
  }
}
fclose ($handle);
{
$fp fopen($add,'a');
if(
fwrite($fp,"Добавил: ".$_GET['nick'].": ".$_GET['param1']."\r\n"))
fclose($fp);
}
?>

   
 
 автор: sedek   (09.11.2004 в 22:33)   письмо автору
 
   для: cheops   (07.11.2004 в 23:12)
 

Спасибо огромное! Offline Работает отлично!

   
 
 автор: sedek   (10.11.2004 в 21:16)   письмо автору
 
   для: sedek   (09.11.2004 в 22:33)
 

Извените если достал!

   
 
 автор: glsv (Дизайнер)   (11.11.2004 в 00:02)   письмо автору
 
   для: sedek   (10.11.2004 в 21:16)
 

Так а.... все работает? Или еще что то осталось неотвеченное? :)

   
 
 автор: sedek   (11.11.2004 в 21:24)   письмо автору
 
   для: glsv (Дизайнер)   (11.11.2004 в 00:02)
 

последние мои 2 сообщения с кодом неотвечены! Спасибо!

   
 
 автор: cheops   (11.11.2004 в 22:21)   письмо автору
 
   для: sedek   (11.11.2004 в 21:24)
 

Давайте новую тему заведём, я крайне неохотно захожу в темы с числом сообщений больше 30 :)))

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=755

   
 
 автор: sedek   (03.11.2004 в 14:16)
 
   для: glsv (Дизайнер)   (26.10.2004 в 20:52)
 

А возможно так чтобы он выводил в echo те что взял из файла кроме того что принял в $_GET['id']!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования