Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: "Baza tematów" zapisana w plikach .txt
Forum PHP.pl > Forum > PHP
MadMark
Witam,

Ostatnio zastanawiałem się czy da się zrobić coś na kształt bazy danych, co będzie przechowywać np. jakieś pseudo tematy z jakąś treścią.
I napisałem funkcje:

  1. function get_threads(){
  2. $di = '../info/site/threads/';
  3. $el = 0;
  4. $elem = array();
  5. foreach(new DirectoryIterator($di) as $file){
  6. if(!$file->isDot()){
  7. $element = $file->getFilename();
  8. $answers = explode('[TOPIC:ANSWERS]',file_get_contents($di.$element));
  9. $vieved = explode('[TOPIC:VIEVED]',$answers[0]);
  10. $topic = explode('[TOPIC:NAME]',$vieved[1]);
  11. $started = explode('[TOPIC:STARTED]',$topic[1]);
  12. $message = explode('[TOPIC:POST]',$started[1]);
  13. $element2 = explode('.',$element);
  14. $element2 = $element2[0];
  15. $link = '<a href="home.php?view=Ask&Thread='.$element2.'#1" title="Go to first post">'.$topic[0].'</a>';
  16. $start = '<br><span class="started">Started by: '.$started[0].'</span>';
  17. $view = $vieved[0];
  18. $any_answer = explode('[ANSWER:MESSAGE]',$answers[1]);
  19. $count = sizeof($any_answer);
  20. if(!empty($any_answer[0])){
  21. for($t=0; $t<sizeof($any_answer);++$t){
  22. $last_author = explode('[ANSWER:AUTHOR]',$any_answer[$t]);
  23. $last_time = explode('[ANSWER:POST]',$last_author[1]);
  24. $timeex = $last_time[0];
  25. if($t = sizeof($any_answer[$t])){
  26. $max = $timeex;
  27. }
  28. }
  29. $link2 = '<a href="home.php?view=Ask&Thread='.$element2.'#'.$count.'" title="Go to last post">'.(date("d.m.Y, H:i",$max)).'<br>'.$last_author[0].'</a>';
  30. if($max > $message[1]){
  31. $elem[$el] = $max;
  32. }
  33. else{
  34. $elem[$el] = $message[1];
  35. }
  36. }
  37. else{
  38. $count = 1;
  39. $link2 = '--';
  40. $elem[$el] = $message[1];
  41. }
  42. $content_m[$elem[$el]] = '<tr><td width="200px" align="left"><p>'.$link.$start.'</p></td><td width="50px" align="center">'.date("d.m.Y, H:i",$message[1]).'</td>
  43. <td width="10px" align="center">'.$vieved[0].'</td><td width="10px" align="center">'.($count-1).'</td><td width="50px" align="center">'.$link2.'</td></tr>';
  44. $el++;
  45. }
  46. }
  47. rsort($elem);
  48. foreach($elem AS $numb => $timestamp){
  49. $content_msgs .= $content_m[$timestamp];
  50. }
  51. return $content_msgs;
  52. }


I przykładowy plik z folderu:

  1. 55[TOPIC:VIEVED]Jak to zrobić 2[TOPIC:NAME]MadMark[TOPIC:STARTED]Nie mam pojęcia jak to zrobić, może będzie działać...[TOPIC:POST]1299890170[TOPIC:ANSWERS]
  2. test[ANSWER:AUTHOR]1299890170[ANSWER:POST]MSG[ANSWER:MESSAGE]


I teraz 2 problemy:
- kiedy dopisze się kolejną odpowiedź aby plik wyglądał:
  1. 55[TOPIC:VIEVED]Jak to zrobić 2[TOPIC:NAME]MadMark[TOPIC:STARTED]Nie mam pojęcia jak to zrobić, może będzie działać...[TOPIC:POST]1299890170[TOPIC:ANSWERS]
  2. test[ANSWER:AUTHOR]1299890170[ANSWER:POST]MSG[ANSWER:MESSAGE]
  3. test2[ANSWER:AUTHOR]1299892589[ANSWER:POST]MSG2[ANSWER:MESSAGE]

przestaje działać, błąd jest gdzieś w pętelce for ale nie wiem gdzie i z jakiego powody

- kiedy mam np. 3 pliki .txt w tym katalogu i dopiszę odpowiedź w dwóch z nich, na liście wyświetlanej przez tę funkcję pojawia się dwa razy temat o wyższym ID z odpowiedzią i trzeci plik bez odpowiedzi.



Jest ktoś w stanie mi w tym pomóc, czy lepiej dac sobie spokój i użyć SQL?
Z góry dziękuję za odpowiedź wink.gif
cycofiasz
A nie lepiej użyć mysql / sqlite lub zapisać tablicę z tematami do pliku php?
MadMark
No właśnie o to chodzi, że jestem w fazie "eksperymentowania" z różnymi opcjami.

A naczym miałoby polegać to zapisywanie tablic do pliku .php?
cycofiasz
http://php.net/manual/en/function.var-export.php
MadMark
Dobra, tak czy inaczej już widzę, że nie jestem w stanie tego zrobić sam w ten czy inny sposób, pozostaje mi SQL ^.^
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.