Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> добавление данных в файл, добавление данных в файл 
:(
    Опции темы
supervladislav
Дата 17.11.2006, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



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

<?php
$path=getcwd();
$string=file($path.'/'.email.txt");
if(isset($_POST['mail']) && !in_array($_POST['mail'],$string))
{array_push($string,$_POST['mail']);
foreach($string as $string1){
$file=fopen($path.'/'.email.txt, "w+");
fwrite($file,$string1);
fclose($file);


} }




?>


Это сообщение отредактировал(а) supervladislav - 17.11.2006, 21:33
PM MAIL   Вверх
Nicholas_S
Дата 17.11.2006, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



Неправильная реализация: ты считываешь файл в массив, проверяешь наличие адреса, а затем добавляешь в файл этот же список+1 адрес. Плюсом проблемы с кавычками. Попробуй так:

Код

  $string = file($path.'/email.txt');
  if (isset($_POST['mail']) && !in_array($_POST['mail'], $string))
  {
      $file = fopen($path.'/email.txt', 'w+');
      fwrite($file, $_POST['mail']);
      fclose($file);
  }



Это сообщение отредактировал(а) Nicholas_S - 17.11.2006, 22:11


--------------------
...все в мире относительно
PM   Вверх
SelenIT
Дата 18.11.2006, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Nicholas_S, если делать в точности так - условие in_array вряд ли когда-либо выполнится...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
supervladislav
Дата 18.11.2006, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Цитата(SelenIT @ 18.11.2006,  00:22)
Nicholas_S, если делать в точности так - условие in_array вряд ли когда-либо выполнится...

а как тогда надо
PM MAIL   Вверх
SelenIT
Дата 18.11.2006, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Идея скрипта нормальная, просто не учтено, что при разборе файла в массив ф-цией file туда заносятся и переводы строк. Исправляется, например, небольшой правкой первой строчки
Код

$string = array_map('rtrim', file($path.'/email.txt'));


Ну и конечно, называть переменную-массив именем "строка" - мягко говоря, нелогично... smile

Это сообщение отредактировал(а) SelenIT - 18.11.2006, 00:36


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Nicholas_S
Дата 18.11.2006, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



SelenIT, спасибо, виноват. Чтобы не использовать доп. функцию, можно написать так:
Код

  if (!in_array($_POST['mail']."\r\n", $string) ...

 smile

Ну а с дозаписью в файл лоханулись оба smile Надо так:
Код

  $file = fopen($_POST['mail'], 'a');



--------------------
...все в мире относительно
PM   Вверх
supervladislav
Дата 18.11.2006, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Цитата(SelenIT @ 18.11.2006,  00:35)
Идея скрипта нормальная, просто не учтено, что при разборе файла в массив ф-цией file туда заносятся и переводы строк. Исправляется, например, небольшой правкой первой строчки
Код

$string = array_map('rtrim', file($path.'/email.txt'));


Ну и конечно, называть переменную-массив именем "строка" - мягко говоря, нелогично... smile

да какая разница как ее назвать ентож переменная)))прости я несовсем понимаю зачем нужна функция array_map)))) неработает)))он говорит что неможет найти файл или дерикторию в строке два))и еще он матерится по поводу переменной $path говрит что она неизвестная ,хотя я ее удалил уже сам код имеет вид

Код

<?php
$string = array_map('rtrim', file(email.txt));
  if (isset($_POST['mail']) && !in_array($_POST['mail'], $string))
  {
      $file = fopen(email.txt, 'a');
      fwrite($file, $_POST['mail']);
      fclose($file);
  }
  ?>

 

Это сообщение отредактировал(а) supervladislav - 18.11.2006, 00:57
PM MAIL   Вверх
Nicholas_S
Дата 18.11.2006, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



supervladislav, дарагой, ды ты чего! Будь внимателен и не торопись.

1. Правильно, что удалил $path - если ты ее не определил ранее, конечно будет ругаться. Определи заранее или оставь как есть, если файл находится в каталоге скрипта.

2. email.txt - строковой параметр, долже быть заключен в кавычки.

3. не хочешь использовать array_map, см. мой предыдущий пост.  smile 


--------------------
...все в мире относительно
PM   Вверх
supervladislav
Дата 18.11.2006, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Цитата(Nicholas_S @ 18.11.2006,  01:01)
supervladislav, дарагой, ды ты чего! Будь внимателен и не торопись.

1. Правильно, что удалил $path - если ты ее не определил ранее, конечно будет ругаться. Определи заранее или оставь как есть, если файл находится в каталоге скрипта.

2. email.txt - строковой параметр, долже быть заключен в кавычки.

3. не хочешь использовать array_map, см. мой предыдущий пост.  smile

примного благодарен,только всеравно нерабоатет 
Notice: Undefined variable: path in z:\home\localhost\www\www\site2\addemail.php on line 2
[Денвер: показать возможную причину ошибки]
Warning: file(/email.txt) [function.file]: failed to open stream: No such file or directory in z:\home\localhost\www\www\site2\addemail.php on line 2

откуда он енту переменную взял smile  ее нет ведь в скрипте.
Код


<?php
$string = array_map('rtrim', file("email.txt"));
  if (isset($_POST['mail'])) && !in_array($_POST['mail']."\r\n", $string))
  {
$file = fopen("email.txt", 'a');
fwrite($file, $_POST['mail']);
fclose($file);
  }
  ?>

PM MAIL   Вверх
SelenIT
Дата 18.11.2006, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



supervladislav, насколько я могу понять недовольство этого Денвера, PHP просто не может найти файл. Он точно называется email.txt и лежит в той же папке, что сам скрипт?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
skifoz
Дата 18.11.2006, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 23.1.2006
Где: Россия

Репутация: нет
Всего: 1



Сначала у тебя вроде как вот так открывался файл 
$path.'/email.txt'
с переменной $path, теперь этот путь исчез и не понятно откуда открыть файл.
PM MAIL WWW   Вверх
Nicholas_S
Дата 18.11.2006, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 19



supervladislav, либо жестоко закешировалось (нажми Ctrl+F5 в браузере), либо правишь не тот скрипт  smile Скрипт рабочий 100%


--------------------
...все в мире относительно
PM   Вверх
supervladislav
Дата 19.11.2006, 03:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: -8
Всего: -9



Цитата(Nicholas_S @ 18.11.2006,  11:10)
supervladislav, либо жестоко закешировалось (нажми Ctrl+F5 в браузере), либо правишь не тот скрипт  smile Скрипт рабочий 100%

не разобрался ))))я не тот скрипт редактировал ))))но всеравно ничего неработает,просто незаписывается в файл.
Код

<?php
$string = array_map('rtrim', file("email.txt"));
if(isset($_POST['mail']) && !in_array($_POST['mail']."\r\n", $string))
{$file = fopen("email.txt", "a");
fwrite($file, $_POST['mail']);
fclose($file);
  }
  ?>


PM MAIL   Вверх
BossIT
Дата 19.11.2006, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 19.11.2006

Репутация: нет
Всего: нет



supervladislav, а файл email.txt существует? И он вообще открывается?

Код

if (file_exists("email.txt"))
{
  if ($file = fopen("email.txt", "a"))
  {
     fwrite($file, $_POST['mail']."\n");
     fclose($file);
  }
  else echo "Не удалось открыть файл";
}
else echo "Файл не существует";


Что нибуть выдает?
PM MAIL   Вверх
Andres2703
Дата 19.11.2006, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 9.9.2006
Где: Иваново

Репутация: нет
Всего: нет



BossIT, при открытии файла функцией fopen() со вторым параметром не "r"/r+ , всегда когда файла нет, он создается автоматически. В твоем примере это так
Код

if ($file = fopen("email.txt", "a"))
{
  fwrite($file, $_POST['mail']."\n");
  fclose($file);
}
else echo "Не удалось открыть файл";


и функция fwrite уже сама ставит абзац, необязательно писать \n.
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0774 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.