Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Edycja postów zapisanych w .txt
ZeTu
post
Post #1





Grupa: Zarejestrowani
Postów: 217
Pomógł: 8
Dołączył: 8.12.2010

Ostrzeżenie: (0%)
-----


Witam
Mam wykonany skrypt do tworzenia i edycji postów i mam pewien problem. Mianowicie kod do edycji postów nie edytuje prawidłowo treści, nie umiem tego za bardzo wyjaśnić, ale na przykładzie to wyjaśnię.
A to kod edycji postów:
  1. ...
  2. $aid = $_GET['edytuj3'];
  3. if(!empty($aid)) {
  4. if(is_file('$aid')) include '$aid';
  5. else
  6.  
  7. echo '
  8. <br><b><br>Edycja strony</b>';
  9. $ide = $aid - 1;
  10. $tytul=chop($_POST["tytul"]);
  11. $tresc=chop($_POST["tresc"]);
  12. $folder = "$pliczek";
  13. $file=file("$folder");
  14. $dane=explode(" | ", $file[$ide]);
  15. $zero=$dane[0];
  16. $name=$dane[1];
  17. $link=$dane[2];
  18. $enter=$dane[3];
  19. $text = $plik1;
  20. $ad1 = $link;
  21. $ad2 = '$tresc';
  22. $be1 = $name;
  23. $be2 = '$tytul';
  24.  
  25. $plik = fopen("$folder", "r");
  26. $plik1 = fread($plik, 10240);
  27.  
  28.  
  29. $be1 = str_replace("+", " ", $be1);
  30. $ad1 = str_replace("+", " ", $ad1);
  31. $ad1 = str_replace("<br>", "
  32. ", $ad1);
  33.  
  34.  
  35. if ($_POST["Edycja3"]!="")
  36. {
  37. $ide = $aid - 1;
  38. $tytul=chop($_POST["tytul"]);
  39. $tresc=chop($_POST["tresc"]);
  40. $folder = "$pliczek";
  41. $file=file("$folder");
  42. $dane3=explode("", $file[0]);
  43. $ze=$dane3[0];
  44. $dane=explode(" | ", $file[$ide]);
  45. $zero=$dane[0];
  46. $name=$dane[1];
  47. $link=$dane[2];
  48. $enter=$dane[3];
  49. $enter = '
  50. ';
  51. $text = $plik1;
  52. $ad1 = $link;
  53. $ad2 = chop($_POST["tresc"]);
  54. $be1 = $name;
  55. $be2 = chop($_POST["tytul"]);
  56.  
  57. $plik = fopen("$folder", "r");
  58. $plik1 = fread($plik, 10240);
  59.  
  60. $ad2 = str_replace(" ", "+", $ad2);
  61. $be2 = str_replace(" ", "+", $be2);
  62.  
  63. $text = str_replace("$ad1", "$ad2", $text);
  64. $text = str_replace("$be1", "$be2", $text);
  65.  
  66.  
  67. file_put_contents($folder, $text);
  68. fclose($plik);
  69. echo("<br><br>Zapisano zmiany<br><a href='?panele=lista'>Zobacz efekt</a>");
  70. }
  71. else
  72. {
  73. echo <<<KONIEC
  74. <form method="POST" action="">
  75. <table>
  76. <p>
  77. <tr><td>Tytuł:</td><td><input type="text" name="tytul" size=20 value="$be1"></td> </tr>
  78. <tr><td>Treść:</td><td><textarea name="tresc" cols="25" rows="12">$ad1</textarea>
  79. </td> </tr>
  80. </p>
  81. <tr><td></td>
  82. <td><input type="submit" value="Zapisz zmiany" name="Edycja3"></td></tr>
  83. </table></form>
  84. KONIEC;
  85. }
  86. }
  87. ...

A to kod w .txt który jest przed edycją:
  1. tytul | tresc+mojego+posta
  2. tytul 2 | tresc+mojego+posta+22

I jeśli chcę zmienić tytul w pierwszej linii, to kod pobiera ta linie i wpisuje w formularz, po zmianie danych np. z "tytul" na "tytul2", to zamiast edytować w tej pobranej linii edytuje w całym pliku to słowo i wtedy kod wygląda tak:
  1. tytul2 | tresc+mojego+posta
  2. tytul2 2 | tresc+mojego+posta+22

A więc jak zrobić aby edytowało tylko z wybranej linii? Trochę pomieszałem w kodzie, ale mam nadzieję, że ktoś z was pomoże mi ten kod jakoś prawidłowo zedytować.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Uriziel01
post
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


Przypisz dla tych postów unikalne ID, po tym parsuj plik. Pobieraj całą zawartość pliku, dziel na posty, znajdź po ID interesujący cię post, potem przenieś całą wczytaną tablicę postów na powrót do pliku. To samo z usuwaniem i dodawaniem. Str_repleace zapewne będzie 100x szybsze przy naprawdę dużych plikach (kilka tysięcy linii) ale skoro już wybrałeś zapis do pliku. .txt zamiast bazy danych to przy okazji przekonałeś się dlaczego znakomita większość korzysta jednak z zapisu do DB.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.12.2025 - 20:47