Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapisem tekstu
Forum PHP.pl > Forum > PHP
rausman
Witam problem wygląda następująco:
Na stronie dodaj.php, która jest w folderze głównym czyli public_html mam skrypt do umieszczania artykułów. Na stronie wybieramy sobie przykładowy folder z formularza (opcje wygladaja mniej wiecej tak: /_data/ogrodnictwo/botanika/), w którym chcemy zapisać artykuł i podajemy tytuł. Oczywiscie po wcisnieciu submit buttona tworzy sie sciezka ($_SERVER['DOCUMENT_ROOT'].$folder.$tytul.".php") próbowałem ją umieszcać też w pętli ale nie miało to żadnego wplywu na zapisywanie. Po wcisnieciu buttona wyskakuje mi echo z poprawną ścieżką. W CKeditorze wczytuję się plik, a nawet tworzy jeżeli go nie ma. Problem zaczyna się przy zapisywaniu. Po wciśnięciu submit buttona tak jak by przeskakiwało całą pętlę i niezapisywało treści. Umieszczałem echa i jakieś pauzy w pętli żeby sprawdzić czy dobrze działa ale nic się nie wyświetlało po wciśnieciu. Pliki są w chmod 0777 (umieszczałem komende w kodzie ale zadnego rezulatu nie uzyskałem) probowalem tez na 755 i foldery również - nie było żadnego problemu z dostępem.
Umieszczałem 2 pętlę if(isset()) poza główną pętlą, a nawet w tej pierwszej - bez rezultatu. Usuwałem apostrofy ze zmiennej $path - bez rezultatu. Zmieniałem fwrite na fputs - bez rezultatu. Zmieniałem przypisanie .= na = - bez rezultatu. Skrypt działa jeżeli poda się ręcznie do fwrite lub fputs ścieżke z plikiem np /_data/oogrodnictwo/botanika/dokumenttekstowy.php". Nie wiem o co chodzi. Jeżeli chodzi o ckeditora to wszystkie ustawienia są prawie pierwotne.
Podejrzewam ze sciezka nie jest do konca stringiem :/

Poniżej przedstawiam kod dodaj.php

  1. <?php
  2. ?>
  3.  
  4. <?php include $_SERVER['DOCUMENT_ROOT'].'/head.php'; ?>
  5. <?php include $_SERVER['DOCUMENT_ROOT'].'/sessionreg.php'?>
  6. <?php $path="";?>
  7.  
  8.  
  9. <form action="<? $_SERVER['PHP_SELF']; ?>" method="post">
  10. <table>
  11. <tr><td>Wybierz folder</td>
  12. <td>
  13. <select name="folder" value="folder">
  14. <option>/_data/ogrodnictwo/botanika/</option>
  15. <option>/_data/ogrodnictwo/rozdobne/</option>
  16. <option>/_data/ogrodnictwo/przedmioty/</option>
  17. <option>/_data/ogrodnictwo/sadownictwo/</option>
  18. </select>
  19. </td>
  20. </tr>
  21. <tr> <td class="title">Wpisz tytuł strony:</td>
  22. <td class="info"><input type="text" name="tytul" value="tytul"></td>
  23. </tr>
  24. <tr>
  25. <td>
  26. <input type="submit" name="wyslij" value="wyslij" />
  27. </td>
  28. </tr>
  29. </table>
  30. </form>
  31.  
  32. <?php $title = $_POST['tytul'].'.php'; $path = $_SERVER['DOCUMENT_ROOT'].$_POST['folder'].$title;?>
  33. <?php
  34. if(isset($_POST['wyslij']))
  35. {
  36.  
  37. $title = $_POST['tytul'].'.php';
  38. $path = $_SERVER['DOCUMENT_ROOT'].$_POST['folder'].$title; //<-drugie powtorzenie na wszelki wypadek
  39. echo $path; //<-dobrze wyswietla sciezke i wczytuje plik do ckeditora
  40. echo '<form method="post">';
  41.  
  42. // wyczyszczenie zmiennej
  43. $stareDane = "";
  44. // otwarcie pliku do odczytu
  45. $fp = fopen("$path" , "a+") or die("nie można odczytać pliku $path");
  46.  
  47. //odczytanie danych
  48. $stareDane = fread($fp, filesize($path));
  49.  
  50. // zamknięcie pliku
  51. fclose($fp);
  52.  
  53.  
  54. echo '<textarea class="ckeditor" name="editor1" value="editor1">'.$stareDane.'</textarea>';
  55. echo '<p><input type="submit" name="zapisz" value="zapisz" /></p></form>';
  56.  
  57. if(isset($_POST['zapisz'])) //<-tutaj cos dziwnego dzieje sie ze skryptem
  58. {
  59. if(is_file($path))
  60. {
  61. $noweDane = $_POST['editor1'];
  62. // otwarcie pliku do zapisu
  63. $fp = fopen("$path", "w+") or die("nie można otworzyć pliku $path do zapisu");
  64. // zapisanie danych
  65. fwrite($fp, $noweDane);
  66. echo "ZAPISANO";
  67. echo $noweDane; //<-sprawdzenie czy cos sie wsywietli dowod na to ze petla sie wykonala
  68. // zamknięcie pliku
  69. fclose($fp);
  70. }else{echo"<p>jakiś błąd</p>";}
  71. }
  72. }
  73. ?>
  74.  
  75. <?php include $_SERVER['DOCUMENT_ROOT'].'/foot.php'; ?>
  76. <?php
  77. ?>



a tutaj urywek z usuniętymi niektórymi meta tak żeby pokazać tylko skrypty ktore umiescilem w head.php
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3c.org/1999/xhtml" xml:lang="pl" lang="pl">
  4.  
  5. <head>
  6. <title>internetowyogrod.pl - Wszystko o ogrodach</title>
  7. <meta name="Description" content="Strona o Ogrodnictwie" />
  8. <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  9. <script type="text/javascript" src="/ckeditor/ckeditor.js"></script>
  10. <script type="text/javascript" src="/ckeditor/adapters/jquery.js"></script>
  11. </head>
  12. <body>
Sephirus
Hello


A gdzie masz pole formularza o nazwie "zapisz"? Używasz

  1. if(isset($_POST['zapisz'])) {...}


A ja w formie nie widzę pola o tej nazwie... wink.gif
rausman
wiersz 57 . bez tego buttona nic sie nie dzieje.
Tutaj na obrazku wczytanie pliku tytul.php


po wcisnieciu zapisz wraca do sytuacji jak na pierszywm obrazku i po wczytaniu pokazuje ta sama tresc
Sephirus
Mój błąd - ślepy jestem...

Linię 36 zamień na:

  1. if(isset($_POST['wyslij']) || isset($_POST['zapisz']))


Bo z tego co pamiętam to submit jest wysyłany tylko przy kliku
rausman
OK działa wielkie dzięki za radę. Może dlatego nie działało że byly dwa buttony ?
Dla potomnych jak wygląda kod

  1. <?php
  2. ?>
  3.  
  4. <?php include $_SERVER['DOCUMENT_ROOT'].'/head.php'; ?>
  5. <?php include $_SERVER['DOCUMENT_ROOT'].'/sessionreg.php'?>
  6. <?php $path="";?>
  7. <form action="<? $_SERVER['PHP_SELF']; ?>" method="post">
  8. <table>
  9. <tr><td>Wybierz folder</td>
  10. <td>
  11. <select name="folder" value="folder">
  12. <option>/_data/ogrodnictwo/botanika/</option>
  13. <option>/_data/ogrodnictwo/rozdobne/</option>
  14. <option>/_data/ogrodnictwo/przedmioty/</option>
  15. <option>/_data/ogrodnictwo/sadownictwo/</option>
  16. </select>
  17. </td>
  18. </tr>
  19. <tr> <td class="title">Wpisz tytuł strony:</td>
  20. <td class="info"><input type="text" name="tytul"></td>
  21. </tr>
  22. </table>
  23. <textarea class="ckeditor" name="editor1" value="editor1"><?php echo $stareDane; ?></textarea>
  24. <p><input type="submit" name="zapisz" value="zapisz"></p></form>
  25. <?php
  26. if(isset ($_POST['zapisz']))
  27. {
  28.  
  29. $title = $_POST['tytul'].'.php';
  30. $path = $_SERVER['DOCUMENT_ROOT'].$_POST['folder'].$title;
  31. $fp = fopen("$path" , "a+") or die("nie można odczytać pliku $path");
  32. $stareDane = fread($fp, filesize($path));
  33. fclose($fp);
  34. if(is_file($path))
  35. {
  36. $noweDane = $_POST['editor1'];
  37. $fp = fopen("$path", "w+") or die("nie można otworzyć pliku $path do zapisu");
  38. fputs($fp, $noweDane);
  39. echo "ZAPISANO";
  40. echo $noweDane;
  41. fclose($fp);
  42. }else{echo"<p>plik nie istnieje!</p>";}
  43. }
  44. ?>
  45.  
  46. <?php include $_SERVER['DOCUMENT_ROOT'].'/foot.php'; ?>
  47. <?php
  48. ?>
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.