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

Форум PHP

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

 

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

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

тема: Добавление и удаление строк в файле
 
 автор: 2wings   (14.09.2011 в 20:13)   письмо автору
 
 

Здравствуйте, помогите!
Хочу написать скрипт подписки и отказа от рассылки.Не правельно перезаписывается файл после удаления строки с E-mail, и строки(первая) не удаляются, записываются пустые строки.




elseif($pod=="1"){

                     $p="\n$ml";
                         $pd=fopen($pdk,'a');
                     fwrite($pd,$p);
                     fclose($pd);
                     
                                         
                     $pd=fopen($pdk,'r');
                     $r=fread($pd,20000);
                     fclose($pd);
                
                     $lines=file($pdk);
                     $a=count($lines);
                     for($i=1;$i<$a;$i++){
                     mail ("$lines[$i]", "Подписка", $txt,$headers);
                                    }
                             echo "<div style=color:silver;>Вы подписались на рассылку, спасибо!<br></div>";
                                            }

                elseif($pod=="2"){
                    
                    
                     $lines=file($pdk);
                     $a=count($lines);
                     for($i=1;$i<$a;$i++){
                         if($ml==$lines[$i]){

                        unset($lines[$i]);
                                   }
                                  }
                        $pd=fopen("$pdk","w+") or die('файл недоступен для записи'); 
                        fputs($pd,implode("",$lines)); 
                         fclose($pd);
                         
                    echo "<div style=color:silver;>Вы отказались от рассылки.<br></div>";
                                                 
                    }            

  Ответить  
 
 автор: cheops   (14.09.2011 в 20:49)   письмо автору
 
   для: 2wings   (14.09.2011 в 20:13)
 

А пример готового файла можно глянуть?

PS В цикле for счетчик $i лучше начинать с нуля 0, иначе будете пропускать первый элемент.

  Ответить  
 
 автор: 2wings   (14.09.2011 в 21:36)   письмо автору
 
   для: cheops   (14.09.2011 в 20:49)
 

Вот код,еще вставил if($lines==""){continue;}, не помогает, начинать цикл с 0 то же без изменения.Для работы нужны два файла txt: podpiska.txt и coment.txt.


<?php
$headers 
'Content-type: text/html; charset=utf-8';
$time=date("H:i d M Y");
$nm=$_POST['nm'];
$ml=$_POST['ml'];
$txt=$_POST['txt'];
$pod=$_POST['d'];
$pdk="podpiska.txt";
            if (!isset(
$_POST['nm'])){
                echo 
"<form method='post'>
                    <input type='text' name='nm'>&nbsp;Имя<br><br>
                    <input type='text' name='ml'>&nbsp;E-mail<br><br>
                    <textarea name='txt' rows='7' cols='50'>&nbsp;</textarea><br><br>
                    <select name='d'>
                    <option value='' selected>
                        <option value='1'>Подписаться
                         <option value='2'>Отказаться 
                      </select>&nbsp;Подписаться на комментарии<br><br>
                    <input type='submit' value='Отправить'>&nbsp;<input type='reset' value='Clear' alt='Click here to start over' /><br>
                    </form><br>"
;
                    
                    
                         
$f="coment.txt";
                                                         
                             
$com=fopen($f,'r');
                             
$r=fread($com,20000);
                             
fclose($com);
                    
                                 
$lines=file($f);
                                 
$a=count($lines);
                                 for(
$i=1;$i<$a;$i++){
                                 echo 
$lines[$i];
                                                   }
                                         }
                elseif(empty(
$txt)||empty($nm)||$ml==''                    echo "<div style=color:red;>Вы не заполнили форму</div>";
                    echo 
"<form method='post'>
                         <input type='text' name='nm'>&nbsp;Имя<br><br>
                         <input type='text' name='ml'>&nbsp;E-mail<br><br>
                         <textarea name='txt' rows='7' cols='50'>&nbsp;</textarea><br><br>
                         <select name='d'>
                             <option value='' selected>
                                        <option value='1'>Подписаться
                                  <option value='2'>Отказаться 
                               </select>&nbsp;&nbsp;&nbsp;Подписаться на комментарии<br><br>
                         <input type='submit' value='Отправить'>&nbsp;<input type='reset' value='Clear' alt='Click here to start over' /><br>
                         </form>"
;
                }
            
                    elseif(
$pod==""){
                        
                         echo
"<form method='post'>
                         <input type='text' name='nm'>&nbsp;Имя<br><br>
                         <input type='text' name='ml'>&nbsp;E-mail<br><br>
                         <textarea name='txt' rows='7' cols='50'>&nbsp;</textarea><br><br>
                         <select name='d'>
                    <option value='' selected>
                        <option value='1'>Подписаться
                         <option value='2'>Отказаться 
                      </select>&nbsp;&nbsp;Подписаться на комментарии<br><br>
                         <input type='submit' value='Отправить'>&nbsp;<input type='reset' value='Clear' alt='Click here to start over' /><br>
                         </form><br>"
;
                        
                        
$a="\n<div id='footer2'><b><a href=\"mailto:$ml\">$nm</a><br>$time </b><br><hr width=699 align=left>$txt</div><br>";    
                        
                                                         
                       
$com=fopen("coment.txt",'a');
                     
fwrite($com,$a);
                     
fclose($com);
                     
                     
$f="coment.txt";
                     
                     
$com=fopen($f,'r');
                     
$r=fread($com,20000);
                     
fclose($com);
                
                     
$lines=file($f);
                     
$a=count($lines);
                     for(
$i=0;$i<$a;$i++){
                     echo 
$lines[$i];
                    }
                    
                    
                     
$lines=file($pdk);
                     
$a=count($lines);
                     for(
$i=0;$i<$a;$i++){
                     
mail ("$lines[$i]""Подписка"$txt,$headers);
                            }
                        }

                elseif(
$pod=="1"){

                     
$p="\n$ml";
                         
$pd=fopen($pdk,'a');
                     
fwrite($pd,$p);
                     
fclose($pd);
                     
                                                                                                                          
$lines=file($pdk);
                     
$a=count($lines);
                     for(
$i=0;$i<$a;$i++){
                     
mail ("$lines[$i]""Подписка"$txt,$headers);
                                    }
                             echo 
"<div style=color:silver;>Вы подписались на рассылку, спасибо!<br></div>";
                                            }

                elseif(
$pod=="2"){
                    
                    
                     
$lines=file($pdk);
                     
$a=count($lines);
                     for(
$i=0;$i<$a;$i++){
                         if(
$ml==$lines[$i]){

                        unset(
$lines[$i]);
                                   }
                                  }
                        
$pd=fopen("$pdk","w+"); 
                        if(
$lines==""){continue;}

                            
fputs($pd,implode("\n",$lines)); 
                         
fclose($pd);
                         
                    echo 
"<div style=color:silver;>Вы отказались от рассылки.<br></div>";
                                             
                    }                    
?>

  Ответить  
Rambler's Top100
вверх

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