[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: удаление строки из файла. нужен ли $i++?
человекЕ
Здравствуйте. голова туго думает,устал, что здесь не так? или нормально?
$file=file('mails.txt');
$i=0;
foreach($file as $single)
{
$word=explode("::",$single);
if($_GET['ymail']==$word[0] and $_GET['numb']==$word[1])
{
unset($word[$i]);
$a=fopen("mails.txt","wb");
$b=implode($single);
$write=fwrite($a,$b);
fclose($a);
$msg="Успешно отписались";
}
else
{
$msg="такого mail'a нету";

}

return $msg;
break;
}
$i++;




Спустя 2 минуты, 33 секунды (8.02.2012 - 19:15) nugle написал(а):
ну можно сделать так
$file=file('mails.txt');
foreach($file as $single)
{
$word=explode("::",$single);
if($_GET['ymail']==$word[0] and $_GET['numb']==$word[1])
{
unset($word[0]);
$a=fopen("mails.txt","wb");
$b=implode($single); // Вот это что вообще?
$write=fwrite($a,$b);
fclose($a);
$msg="Успешно отписались";
}
else
{
$msg="такого mail'a нету";

}

return $msg;
break;
}

Спустя 1 час, 48 минут, 34 секунды (8.02.2012 - 21:04) sergeiss написал(а):
Цитата (человекЕ @ 8.02.2012 - 20:13)
голова туго думает,устал, что здесь не так?

В первую очередь здесь "не так" то, что ты не написал, для чего всё это smile.gif С этого надо было начать. Потому что по коду я вот не понял, для чего это всё надо. Какие исходные данные. И ряд других вопросов.

Спустя 21 минута, 17 секунд (8.02.2012 - 21:25) человекЕ написал(а):
суть работы:
1. чел-к вводит mail и жмет кнопку отписаться от новостей
2. скрипт шлет ему письмо в котором есть ссылка с его meil (site.ru?mail=abc)
3. попадает на страницу в котором GET срвнивается с данными из файла mails.txt
4. находит по циклу совпадающую и удаляет
у меня проблема с циклом

Спустя 3 минуты, 26 секунд (8.02.2012 - 21:29) sergeiss написал(а):
Тебе надо БД использовать. Проблема в первую очередь с этим, а не с самим циклом.

Спустя 13 минут, 10 секунд (8.02.2012 - 21:42) человекЕ написал(а):
не бд не катит пока, условия задачи не те

Спустя 23 минуты, 28 секунд (8.02.2012 - 22:05) sergeiss написал(а):
Цитата (человекЕ @ 8.02.2012 - 22:42)
не бд не катит пока, условия задачи не те

Хм... А какие же "условия задачи" должны быть, чтобы ты за БД взялся?

И кстати. Мне лично даже вникать не интересно в задачу, которая заведомо неверно построена. А тут как раз тот случай. И я подозреваю, что многие, кто заходил в тему, по этой же причине ничего не написали.

Спустя 13 часов, 12 минут, 18 секунд (9.02.2012 - 11:18) walerus написал(а):
Проблема не в этом $_GET['ymail'] случайно ?, может быть нужно $_GET['email'] ?

Не правильно написана переменная, это первое, а вообще там куча мусора и не нужных операций.

// Проверяем на существование переменных, если их нет, зачем вообще что то делать? Использую $_REQUEST, потому что не известно как придут данные, постом или просто запросом...
if ( isset( $_REQUEST['email'] ) && trim( $_REQUEST['email'] ) != '' && isset( $_REQUEST['nubm'] ) && trim( $_REQUEST['nubm'] ) != '' )
{
// Если есть переменные

$file = file( 'mails.txt' );
$find = false; // Статус найденого письма
foreach( $file as $line_key => $line )
{
$words = explode( "::", $line );

if( trim( $_REQUEST['email'] ) == trim( $word[0] ) && trim( $_REQUEST['numb'] ) == trim( $word[1] ) )
{
unset( $file[$line_key] );
$find = true;

// Останавливаем цикл, т.к. адрес найден
break;
}
}


// Если найден адрес
if ($find)
{
// Переназначаем ключи по порядку
$file = array_values( $file );

// Перезаписываем файл
file_put_contents( 'mails.txt', implode( '', $file ) );

$msg = "Успешно отписались";
}
else
$msg = "Такого mail'a нету";
}
else
{
// Если нету переменных, выводим ошибку
echo "Ошибка ввода данных !";
die;
}


И еще не понял, зачем у тебя return $msg;?, если это функция, то оберни ее в функцию, а то не понятно что вообще B)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.