Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z explode help mi :]
Forum PHP.pl > Forum > Przedszkole
kt1
Witam mam taki problem z php
chcę zrobić dodawanie newsów na plikach *.txt przejde do konkretów
no tak mam kod do zapisywania
  1. <?php
  2. $otw=fopen("baza.txt","a");
  3. flock($otw, 2);
  4. fwrite($otw, "$nick#$mail#$tresc#$data#$ip#$wwww|||");
  5. flock($otw, 3);
  6. fclose($otw);
  7.  
  8. ?>

ten kod zapisuje do pliku
i nie wiem jak zrobic zeby usunać dodany news pomoze mi ktos ?
raf_gc
dla ułatwienia mógłbyś wstawić jakiś identyfikator do każdego newsa, a potem trzeba stworzyć pętle która przepisze zawartość pliku .txt do zmiennej np $newsFile, potem taki plik zapisujesz i newsa nie ma już w bazie

"$id#$nick#$mail#$tresc#$data#$ip#$wwww|||"
do generowania identyfikatora mógłbyś użyć funkcji time();

  1. <?php
  2. $newsID = $_GET['id'];
  3. $oldNewsDB = file('news.txt');
  4. $newsCount = $oldNewsDB;
  5.  
  6. for ($i = 0; $i < $newsCount; ++$i)
  7. {
  8. $newsData = explode('#', $oldNewsDB[$i]);
  9. if($newsID == $newsData['0'])
  10. {
  11. continue;
  12. }
  13. $newNewsDB .= trim($oldNewsDB[$i]) . "NOW LINIA";
  14. }
  15.  
  16. $file2write = fopen('news.txt', 'w');
  17. fwrite($file2write, $newNewsDB);
  18. fclose($file2write);
  19. ?>


przestudiuj idee tego skryptu, napisałem to przed chwilą, ale powinno Ci to przynajmniej nasunąć jakąś myśl jak to zrobić.

ps. tam gdzie jest "NOWA LINIA"; powinno być "\r\n";, nie wiem czemu mi ucina znaczki "\"
kt1
ok thx smile.gif pomysle cos natym ;]

ehh wkleiłem to i zrobięłm id jako 1
i odpaliłem skrypt
ale strona sie zawiesza ico mam zrobic ?
kt1
pomuzcię !
em1X
myślenie ponoć nie boli :/

zamiast dodawać
Kod
$nick#$mail#$tresc#$data#$ip#$wwww|||


dodawaj:
Kod
$nick#$mail#$tresc#$data#$ip#$wwwwrn


usuwanie.. a wedlug czego chcesz usuwac? bez sensu to jest.. moze wg daty?

  1. <?php
  2. // tutaj wpisac ktora date chcesz usunac
  3. $ktory = '';
  4.  
  5. $arr = array();
  6. $fp = fopen('baza.txt', 'r');
  7. while (!feof($fp))
  8. {
  9.  $dane = fgets($fp, 1024);
  10.  $tab = explode('#', $dane);
  11.  
  12.  // jezeli to nie jest ten do usuniecia to dodaj
  13.  // go do tablicy, ktora ponownie zaladujemy
  14.  // do pliku z danymi
  15.  if ($tab[3] != $ktory)
  16.  {
  17. $arr[] = $dane;
  18.  }
  19. }
  20.  
  21. fclose($fp);
  22. $fp = fopen('baza.txt', 'w');
  23. fputs($fp, implode());
  24. fclose($fp);
  25. ?>


pisane z buta wiec moze nie dzialac, ale moze zalapales o co chodzi.. poprawki zostawiam dla ciebie
raf_gc
Zrobiłem jeden błąd w tamtym skrypcie, ten działa na pewno bo sprawdzałem

  1. <?php
  2. $newsID = $_GET['id'];
  3. $oldNewsDB = file('news.txt');
  4. $newsCount = count($oldNewsDB);
  5.  
  6. for ($i = 0; $i < $newsCount; ++$i)
  7. {
  8. $newsData = explode('#', $oldNewsDB[$i]);
  9. if($newsID == $newsData['0'])
  10. {
  11. continue;
  12. }
  13. $newNewsDB .= trim($oldNewsDB[$i]) . "rn";
  14. }
  15.  
  16. $file2write = fopen('news.txt', 'w');
  17. fwrite($file2write, $newNewsDB);
  18. fclose($file2write);
  19. ?>


każdy nowy rekord powinien znajdowac się w nowej linii w pliku .txt

skrypt musisz wywołac np: delete.php?$id=1
kt1
Dzieki raf_gc Duże piwko dlaciebie !
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.