Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z automatycznym tworzeniem php
Forum PHP.pl > Forum > Przedszkole
bolek1
Witam,
przy tworzeniu prostego forum dyskusyjnego do swoich potrzeb już na początku napotkałem na problem, a mianowicie jak zrobić, by do każdego nowo dodanego tematu tworzył się nowy plik php. Napisałem skrypt, który tworzy plik txt, a następnie odczytuje nazwy plików - tematów txt z katalogu i wyświetla je na stronie. Teraz chciałbym, aby automatycznie tworzyły się pliki php, które otwierały by te tematy z txt i były wyświetlane w formie linków.

Zamieszczam kod odpowiedzialny za wyświetlanie tematów:

  1. <b>Ostatnio założone tematy:</b>
  2. <p>
  3. <? //odczytywanie zawartosci - tematy
  4. $tab=glob("./*.txt"); // odczytuje nazwy plikow - tematow
  5.  
  6. foreach($tab as $tab1)
  7. {
  8.  
  9. echo "<li><a href=\"/$tab1\">$tab1</a></li>";
  10. $tab1 = str_replace('.txt', '', $tab1); // odczytywanie bez rozszerzenia
  11. echo '<br />';
  12. }
  13. ?>
  14. </p>
  15. <b>Nowy temat:</b>
  16. <p>
  17. <form method="post">
  18. <input type="text" name="title"><br>
  19. <textarea name="tresc"></textarea><br>
  20. <input type="submit">
  21. </form>
  22. </p>
  23.  
  24. <? // zakladanie nowego tematu
  25.  
  26. $title = $_POST["title"];
  27. $plik = fopen("$title.txt", 'w');
  28. $tresc = $_POST["tresc"];
  29. fwrite($plik, $tresc);
  30. fclose($plik);
  31. ?>


A tu skrypt (znalazłem i zmodyfikowałem), który powinien uruchamiać się po kliknięciu w link - temat. Powinien on odpowiadać za dopisywanie postów do pliku tekstowego.

  1. <?php
  2. /*********************************************
  3. * plik podglad.php
  4. *********************************************/
  5.  
  6. // wczytanie zawartości pliku do tablicy
  7. $file = file("baza.txt"); //tutaj powinie byc plik txt z nazwa tematu
  8. // przechodzimy przez tablicę za pomocą pętli foreach
  9. foreach($file as $value) {
  10. // rozbijamy poszczególne linie na części
  11. $exp = explode("`",$value);
  12. // wyświetlamy rozbity tekst
  13. echo $exp[0]."<br />".$exp[1]."<hr />";
  14. }
  15.  
  16. ?>
  17.  
  18. <center><?php
  19.  
  20.  
  21. $pole1 = trim($_POST['pole1']);
  22. $pole2 = trim($_POST['pole2']);
  23.  
  24. if(empty($pole1) and empty($pole2)) {
  25.  
  26.  
  27. echo '<form action="" method="post">
  28. Temat:<input type="text" name="pole1" style="width: 300px;" /><br />
  29. Tresc: <textarea name="pole2" style="width: 300px; height: 100px;">
  30. </textarea><br />
  31. <input type="submit" value="Zapisz" />
  32. </form>';
  33. }
  34. else {
  35.  
  36.    
  37.    $dane = $pole1."`".$pole2."\n";
  38.    
  39.    $file = "baza.txt"; // tutaj powinien byc plik txt z nazwa tematu
  40.    
  41.    $fp = fopen($file, "a");
  42.    
  43.    flock($fp, 2);
  44.  
  45.    fwrite($fp, $dane);
  46.    
  47.    flock($fp, 3);
  48.    
  49.    fclose($fp);
  50.  
  51.    echo "Dane zostaly zapisane!<br />";
  52.    echo "<a href=\"forum.php\">Zobacz swój post</a>";
  53. }
  54.  
  55. ?></center>
erix
I w czym problem?
bolek1
Nie wiem jak te dwa skrypty połączyć tak, aby po kliknięciu w link - nowy temat otwierał mi się on na nowej podstronie, na której będzie ten drugi kod PHP.

Jejciu trudno to wytłumaczyć ....

Chodzi mi o to,by do pliku txt tworzył się również plik php, w którym będą dane pobrane z txt.
erix
Czemu utrudniasz sobie życie...?

Nie możesz jednym skryptem całego forum obsługiwać?
Fifi209
W ogóle pisanie forum na plikach tekstowych nie jest dobrym pomysłem.
Wydajność, miejsce, etc. etc.

Lepiej weź kurs php do ręki, przejdź do baz danych i potem pisz forum.
bolek1
Po pierwsze jest to niewielkie forum i ilość zajmowanego przez pliki miejsca nie gra roli po drugie cały serwis napisany jest na bazie tekstowej, więc nie widzę zbytniego sensu, by forum miałoby być inaczej zrobione.

Wracając do tematu ...

Czy ktoś zrozumiał o co mi chodzi ? wstydnis.gif
Fifi209
Cytat(bolek1 @ 15.07.2009, 13:48:56 ) *
Po pierwsze jest to niewielkie forum i ilość zajmowanego przez pliki miejsca nie gra roli po drugie cały serwis napisany jest na bazie tekstowej, więc nie widzę zbytniego sensu, by forum miałoby być inaczej zrobione.

Wielkość tutaj nie ma znaczenia, a lepiej jest mieć dobre nawyki.

Cytat(bolek1 @ 15.07.2009, 13:48:56 ) *
Wracając do tematu ...

Czy ktoś zrozumiał o co mi chodzi ? wstydnis.gif


Po temacie i kawałku tekstu myślę, że plik php chcesz utworzyć, tylko nie wiem w czym problem?

Robisz file_put_contents" title="Zobacz w manualu PHP" target="_manual albo fopen" title="Zobacz w manualu PHP" target="_manual + fwrite" title="Zobacz w manualu PHP" target="_manual
bolek1
To oczywiście wiem, ale chodzi mi o to, by był jeden plik php, którego zawartość byłaby wykorzystywana do każdego nowo utworzonego tematu i potrzebuję właśnie kod, który będzie uruchamiał plik tekstowy z tematem i wyświetlał go na nowej stronie...
Fifi209
Cytat(bolek1 @ 15.07.2009, 14:11:37 ) *
To oczywiście wiem, ale chodzi mi o to, by był jeden plik php, którego zawartość byłaby wykorzystywana do każdego nowo utworzonego tematu i potrzebuję właśnie kod, który będzie uruchamiał plik tekstowy z tematem i wyświetlał go na nowej stronie...


To zrób taki, pobieraj z get'a nazwę tytułu, potem skryptem odczytuj plik o nazwie podanej w get'cie i tyle? tongue.gif
bolek1
Cytat
To zrób taki, pobieraj z get'a nazwę tytułu, potem skryptem odczytuj plik o nazwie podanej w get'cie i tyle? tongue.gif


Spróbuję coś zakodzić.

Mam jeszcze jedno pytanko odnośnie pierwszego skryptu. Dlaczego funkcja umieszczona do usuwania rozszerzenia mi nie działa : $tab1 = str_replace('.txt', '', $tab1); ?
erix
Bo pomyliłeś kolejność. tongue.gif

Kod się wykonuje od góry do dołu, a nie na odwrót. [;
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.