Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapis danych jednocześnie do kilku pików txt
kubax33
post
Post #1





Grupa: Zarejestrowani
Postów: 157
Pomógł: 1
Dołączył: 27.01.2010

Ostrzeżenie: (0%)
-----


witam,
mam problem ponieważ chciałbym zapisać dane przesłane z formularza do kilku plików na raz. Mam taki skrypt

  1. <?php
  2.  
  3. $nazwa_pliku = 'plikk.txt';
  4.  
  5. if (is_writeable($nazwa_pliku))
  6. {
  7. if ($plik = fopen($nazwa_pliku, "w+"))
  8. {
  9. if (fwrite($plik, "dane do zapisania") !== FALSE)
  10.  
  11. echo 'Zapis do pliku zakończył się powodzeniem...';
  12. else echo "Zapis do pliku się nie powiódł...";
  13.  
  14. fclose($plik);
  15.  
  16. } else echo "Nie mogę nawiązać połączenia z plikiem...";
  17.  
  18. } else echo "Do pliku nie można dopisać informacji lub on nie istnieje..."
  19.  
  20. ?>
  21.  


no i ten skrypt zapisuje dane tylko do pliku "plik.txt" a jak zrobić aby określone przesłane dane zapisywano do ustalonego pliku np.
dane 1 z formularza zapisuje do plik.txt
dane 2 z formularza zapisuje do plik2.txt

wszystko w jednym skrypcie...

teraz mam to zrobione z kilku takich skryptów ale idzie to myślę zrobić lepiej funkcjonalne w taki sposób.

czy jest to w ogóle wykonalne? Jak to zrobić? proszę po pomoc
dziękuje

Ten post edytował kubax33 19.05.2010, 18:15:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zegarek84
post
Post #2





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

Ostrzeżenie: (0%)
-----


PRZYKŁAD KODU GDZIE KIEDYŚ ROZDZIELAŁEM/SORTOWAŁEM a wcześniej obrabiałem dane po czym zapisywałem do różnych CSV

musisz mieć osobne uchwyty do każdego z plików... można to by zrobić w pętli ale skoro daleś w dziale obiektowym więc masz przykłady które mam pod ręką:
  1. class saveFileAsCSV {
  2. private $kotwica;
  3. private $separator;
  4. public function __construct($name, $separator="\t") {
  5. $this->separator=$separator;
  6. $this->kotwica = fopen($name.'.csv', 'w');
  7. }
  8. public function writeRow($row) {
  9. fputcsv($this->kotwica, $row, $this->separator);
  10. }
  11. public function writeArray($array) {
  12. foreach ($array as $row) {
  13. fputcsv($this->kotwica, $row, $this->separator);
  14. }
  15. }
  16. public function __destruct() {
  17. fclose($this->kotwica);
  18.  
  19. $vars=get_object_vars($this);
  20. while(list($key)=each($vars)) {
  21. unset ($this->$key);
  22. };
  23. unset($vars,$key);
  24.  
  25. }
  26. }

i kolejny który w danej chwili służył za "sterownik" [możesz to całkiem inaczej napisać - to tylko przykład] [zwróć tutaj uwagę na metodę addRowToFile]:
  1. class sterownik_filtr {
  2. private $saveToFile;
  3. private $naglowki;
  4. private $katalog;
  5. public function __construct($katalog='./',$naglowki=null) {
  6. if(isset ($naglowki))$this->naglowki=$naglowki;
  7. $this->katalog=$katalog;
  8. }
  9.  
  10. public function adRowToFile($file,$row){
  11. if(!isset($this->saveToFile[$this->katalog.$file])){
  12. $this->saveToFile[$this->katalog.$file]=new saveFileAsCSV($this->katalog.$file);
  13. if(isset($this->naglowki))$this->saveToFile[$this->katalog.$file]->writeRow($this->naglowki);
  14. }
  15. $this->saveToFile[$this->katalog.$file]->writeRow($row);
  16. }
  17.  
  18. public function __destruct() {
  19. unset($this->naglowki,$this->saveToFile);
  20. }
  21. }

w destruktorze zwalniałem uchwyty... i z tego co widzę musisz zamienić 'w' na 'w+' gdyż chyba taki sposób zapisu jest Ci potrzebny...

Ten post edytował zegarek84 20.05.2010, 10:51:45
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 04:12