Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Edycja plików w jednym textarea...
Forum PHP.pl > Forum > Przedszkole
kasior
Cześć. Mam taki sobie prosty system edycji treści strony. Sam go robiłem. Nie jest moze skomplikowany i ładny ale działa. Do tej pory wyglądało to tak,że w adminku klikałem sobie edycje np strony głównej

  1. <a href="edytuj_glowna.php"></a>


Zawartosc pliku edytuj_glowna.php :
  1. <?php
  2.  
  3. if(isset($_GET['save']))
  4. {
  5. $fp1 = fopen("modules/start.php","w");
  6. $file1 = stripslashes($_POST['start']);
  7. $file1 = str_replace("<","<",$file1);
  8. $file1 = str_replace(">",">",$file1);
  9. fputs($fp1, $file1);
  10. fclose($fp1);
  11.  
  12. }
  13.  
  14. else
  15. {
  16.  
  17. echo "<form action="edytuj_glowna.php?save=1" method="post" >";
  18. ?>
  19.  
  20. <?php
  21.  
  22. $fp1 = fopen("modules/start.php","r");
  23. $file1 = fread($fp1, 4096);
  24. $file1 = str_replace("<","<",$file1);
  25. $file1 = str_replace(">",">",$file1);
  26. fclose($fp1);
  27.  
  28.  
  29.  
  30. echo " <div align="left"><br><h3>Edycja Strony Głównej</h3></div>";
  31. echo "<div align="center"><table border="0" bordercolor="#C0C0C0" width="90%" cellpadding="5" cellspacing="5" bgcolor="#ffffff"><tr><td><img border="0" src="images/pl.gif" width="35" height="22"><br><center><textarea rows="30" cols="60" name="start">".$file1."</textarea><hr color="#C0C0C0" width="90%" size="1"></td></tr>";
  32.  
  33. echo "<center><input type="submit" name="submit" value="Zapisz zmiany"></form>";
  34. }
  35.  
  36. if ($_POST['submit']) {
  37. echo "<center><br><br><br><h2>Zapisano!</h2></center>";
  38. }
  39. ?>


Postanowiłem w koncu to przerobić,żeby nie tworzyć za każdym razem iluś tam stron typu edytuj_cośtam.php . Wymyśliłem sobie,że możnaby zrobić jeden plik edytuj.php i przesłac mu zmienną z nazwą pliku , który ma być edytowany. W ten sposób nie musiałbym tworzyc kilkunastu pliów do edycji, tylko co najwyżej linki. I tak :

link wygląda tak
  1. <a href="edytuj.php?plik=1"></a>

Plik edytuj.php

  1. <?php
  2.  
  3. if($_GET['plik']!=""){
  4. switch( $_GET['plik']) {
  5.  
  6. case '1';
  7. $plik = "modules/start.php";
  8. $nazwa = 'Start';
  9. break;
  10. }
  11.  
  12. $plik = $plik;
  13.  
  14.  
  15. if(isset($_GET['save']))
  16. {
  17. $fp1 = fopen($plik,"w");
  18. $file1 = stripslashes($_POST['plik']);
  19. $file1 = str_replace("<","<",$file1);
  20. $file1 = str_replace(">",">",$file1);
  21. fputs($fp1, $file1);
  22. fclose($fp1);
  23.  
  24.  
  25. }
  26.  
  27. else
  28. {
  29.  
  30.  
  31.  
  32. echo "<form action="edytuj.php?save=1" method="post" >";
  33. ?>
  34.  
  35. <?php
  36.  
  37.  
  38.  
  39. $fp1 = fopen($plik,"r");
  40. $file1 = fread($fp1, 4096);
  41. $file1 = str_replace("<","<",$file1);
  42. $file1 = str_replace(">",">",$file1);
  43. fclose($fp1);
  44.  
  45. }
  46. echo " <div align="left"><br><h3>Edycja strony ". $nazwa . "</h3></div>";
  47. echo "<div align="center"><table border="0" bordercolor="#C0C0C0" width="90%" cellpadding="5" cellspacing="5" bgcolor="#ffffff"><tr><td><img border="0" src="images/pl.gif" width="35" height="22"><br><center><textarea rows="30" cols="60" name="plik">".$file1."</textarea><hr color="#C0C0C0" width="90%" size="1"></td></tr>";
  48.  
  49. echo "<center><input type="submit" name="submit" value="Zapisz zmiany
  50. size="20"></form>";
  51. }
  52.  
  53. if ($_POST['submit']) {
  54. echo "<center><br><br><br><h2>Zapisano!</h2></center>";
  55. }
  56. ?>


Prawie działa, bo pliki są otwierane i widzę ich zawartość w textarea. Tyle,że nie działa zapis, pomimo,że się wykonuje i dostaję komunikat "Zapisano!" Podejrzewam,że gdzieś w środku gubi zmienną z naswą pliku tylko gdzie. I czy w ogóle taki kod moze działać?questionmark.gif?

Dzięki za pomoc z góry.


-------------------------
dodałem [tag] do tematu bo padły już odpowiedzi
na przyszłość pamiętaj o tym
i korzystaj z odpowiednich BBCode
~Cienki1980
Amorph
Po edycji nie przesyłasz nazwy pliku.
Powinieneś przesłać zmienną $plik np w polu hidden razem z resztą danych w formularzu.
kasior
Niestety twoja koncepcja nie pomaga sad.gif
skowron-line
Kod
$file1 = stripslashes($_POST['plik']);


tu chyba powinno byc

Kod
$_GET['plik']


ale niejestem pewien niezaglebialem sie w ten kod
kasior
nie. w tym miejscu to zapisuje akurat więc musi być POST. to działa normalnie w pierwszej wersji kodu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.