За последние 24 часа нас посетили 18678 программистов и 1581 робот. Сейчас ищут 1180 программистов ...

Не перезаписывается строчка в текстовом файле

Тема в разделе "PHP для новичков", создана пользователем Kuzma92, 15 мар 2024.

  1. Kuzma92

    Kuzma92 Новичок

    С нами с:
    6 мар 2024
    Сообщения:
    13
    Симпатии:
    0
    Здравствуйте всем. У меня есть такой фрагмент кода:

    Код (Text):
    1.   if(isset($_GET['ban']) && in_array($_GET['ban'],$cat))
    2.     {
    3.        $file=file("us/db/us/$_GET[ban]");
    4.        $f=fopen("us/db/us/$_GET[ban]","w");
    5.        for($n=0;$n<count($file);$n++)
    6.          {
    7.            if($n!=6)fwrite($f,$file[$n]);
    8.            else
    9.              {
    10.                if($file[6]=='1')fwrite($f,"0\r\n"); // тут
    11.                else fwrite($f,"1\r\n"); // и тут
    12.              }
    13.          }
    14.        fclose($f);
    15.  
    16. echo"<a href=users.php?ban=$cat[$x]&page=$page&ind=$index>Заблокировать</a>";
    который отвечает за то, чтобы перезаписать строку №7 в текстовом файле. В файле всего 8 строк.

    Проблема у меня заключается в следующем:

    - если я не указываю перенос строки "\r\n" (в коде указано где), то файл перезаписывается. Но при этом восьмая строка сливается с седьмой, это логично.

    - но если я использую перенос строки "\r\n", то при нажатии на ссылку ничего не происходит, т.е. страница перезагружается, а файл не перезаписывается.

    Не могу понять, почему так происходит. Подскажите, пожалуйста.
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    424
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Добрый день!
    Попробуйте закоментировать две первые строки Вашего кода и распечатайте содержимое файла до и после сохранения
    PHP:
    1. <?
    2. $fileName = "test7.txt";
    3. $file=file($fileName);
    4. echo "<pre>";
    5. print_r($file);
    6. /*
    7. Array
    8. (
    9.     [0] => 0
    10.  
    11.     [1] => 1
    12.  
    13.     [2] => 2
    14.  
    15.     [3] => 3
    16.  
    17.     [4] => 4
    18.  
    19.     [5] => 5
    20.  
    21.     [6] => 6
    22.  
    23.     [7] => 7
    24. )
    25. */
    26. //if(isset($_GET['ban']) && in_array($_GET['ban'],$cat))
    27. //{
    28.     $f=fopen($fileName,"w");
    29.     for($n=0;$n<count($file);$n++)
    30.     {
    31.         if($n!=6)fwrite($f,$file[$n]);
    32.         else
    33.         {
    34.             if($file[6]=='1')
    35.                 fwrite($f,"0\r\n"); // тут
    36.             else
    37.                 fwrite($f,"1\r\n"); // и тут
    38.         }
    39.     }
    40.     fclose($f);
    41. //}
    42. $file=file($fileName);
    43. print_r($file);
    44. /*
    45. Array
    46. (
    47.     [0] => 0
    48.  
    49.     [1] => 1
    50.  
    51.     [2] => 2
    52.  
    53.     [3] => 3
    54.  
    55.     [4] => 4
    56.  
    57.     [5] => 5
    58.  
    59.     [6] => 1
    60.  
    61.     [7] => 7
    62. )
    63. */
    64. ?>
    Из этого следкет, что проблема не в переносе строк, а в линке и в операторе
    PHP:
    1. if(isset($_GET['ban']) && in_array($_GET['ban'],$cat))
    Удачи!
     
    Kuzma92 нравится это.
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    это прикол использовать условные конструкции без фигурных скобок ?
     
    don.bidon нравится это.
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    914
    Симпатии:
    143
    в своё время пресс каках в крупном проекте наловил из-за этого )
     
  5. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    424
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Был задан вопрос о том, почему не выполняется часть кода, следующая после открывающей фигурной скобки условной конструкции.
    В фраменте кода нет закрывающей скобки, но если бы её не было в оригинале, то была бы фотальная ошибка.
    Прикол не в скобках, а в самой условной конструкции.
     
    Kuzma92 нравится это.
  6. Kuzma92

    Kuzma92 Новичок

    С нами с:
    6 мар 2024
    Сообщения:
    13
    Симпатии:
    0
    Всем спасибо и всем успехов. Буду смотреть, думать, тестить, накидали вы мне тут разных терминов, которые придется мне расшифровывать в первую очередь, чтобы понять о чем вы все тут говорите))
     
  7. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    914
    Симпатии:
    143
    фАтальная )
     
  8. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    424
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Спасибо. Постараюсь запомнить.
    К сожалению, у меня проблемы с языком.
    Сюда захожу из-за дефицита русскоязычного общения...
     
    Kuzma92 нравится это.
  9. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    424
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Да уж накидали... на самом деле всё просто
    PHP:
    1. var_dump(isset($_GET['ban']) && in_array($_GET['ban'],$cat));
    2. /*
    3. перезапись файла только если var_dump возвращает - bool(true)
    4. */
    5. if(isset($_GET['ban']) && in_array($_GET['ban'],$cat))
    6. {
    7.     // перезапись файла
    8. }
    Всем хорошего воскресенья!
     
    Kuzma92 нравится это.
  10. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    914
    Симпатии:
    143
    фатум, да и по-английски fatal
    Спасибо тебе, что помогаешь куче новичков, помню ещё по php.su, который хз почему сдулся.
     
  11. Дюран

    Дюран Активный пользователь

    С нами с:
    9 мар 2018
    Сообщения:
    284
    Симпатии:
    21
    Продлили они себе все же домен. Правда заходить приходится только под впн, видимо украинцы владельцы
     
    don.bidon нравится это.
  12. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    914
    Симпатии:
    143
    да пинговался он и так, не знал, что через vpn надо, благодарю.
    вопрос в том, они нас или роскомпозор их...
    хм, всего 93 новых сообщений с хрен знает когда )