Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Zapisanie treści diva w pliku txt na dysku użytkownika
Forum PHP.pl > Forum > Przedszkole
kirkowa
Dzień dobry,

poprzednim razem broniłam się rękami i nogami przed javascriptem, tym razem chyba tego nie uniknę. Tak mi się przynajmniej wydaje po tym, jak przeczytałam kilka tematów o operacjach na plikach. A nawet nie kilka... I może jednak się mylę? (Dlatego zaznaczyłam też php, tak na wszelki wypadek.)

Na razie mam to:
1. Mam formularz, który wysyła wpisane w niego dane do pliku php.
2. Plik php wyświetla dane z formularza.
3. Dane z formularza nie są nigdzie zapisywane - i o to właśnie chodzi!

I punktu czwartego mi brak, bowiem to właśnie jest mój problem. W założeniu użytkownik, który sobie wypełni ten formularz i prześle dane do pliku php powinien mieć możliwość zapisania tego, co przesłał, w pliku .txt na swoim własnym komputerze. Chodzi też o to, by plik ten nie pojawił się na moim serwerze, nie został na nim zapisany. Da się? Oby... I, pytanie noworodka w temacie, skoro już operujemy nazwami dziecięcych grup wiekowych, javascript czy php (i dlaczego)?

I pytanie bonus: da się zrobić przycisk, który by zaznaczał i kopiował tekst do schowka?

Pozdrawiam serdecznie.
johny_s
Cytat(kirkowa @ 11.07.2014, 16:19:20 ) *
I punktu czwartego mi brak, bowiem to właśnie jest mój problem. W założeniu użytkownik, który sobie wypełni ten formularz i prześle dane do pliku php powinien mieć możliwość zapisania tego, co przesłał, w pliku .txt na swoim własnym komputerze. Chodzi też o to, by plik ten nie pojawił się na moim serwerze, nie został na nim zapisany. Da się? Oby... I, pytanie noworodka w temacie, skoro już operujemy nazwami dziecięcych grup wiekowych, javascript czy php (i dlaczego)?

możesz sobie wygenerować dane i wysłać je do użytkownika jako plik generując odpowiednie nagłówki, google zwróci Ci masę gotowych roziązań
Cytat(kirkowa @ 11.07.2014, 16:19:20 ) *
I pytanie bonus: da się zrobić przycisk, który by zaznaczał i kopiował tekst do schowka?

js'em tego nie zrobisz, są gotowce we flashu
tzm
Cytat(johny_s @ 11.07.2014, 17:34:28 ) *
możesz sobie wygenerować dane i wysłać je do użytkownika jako plik generując odpowiednie nagłówki, google zwróci Ci masę gotowych roziązań

js'em tego nie zrobisz, są gotowce we flashu



nie wcale, jsem tego nie zrobisz....

https://github.com/zeroclipboard/zeroclipboard a jak wpisuje w google copy to clipboard javascript to nie wiem od czego zacząć przeglądanie wyników bo tyle ich jest
kirkowa
Czy pisałam, że absolutnie nie mam pojęcia, jak się do tego zabrać? Nie? Ano, bo nie mam. Jak już udało mi się ustalić, że to generowanie nagłówków to z phpa, wujek gógl zwrócił mi taki wynik:

  1. <?php
  2. error_reporting( E_ALL & E_STRICT );
  3. $uploadfile = $_GET['file'];
  4. if (file_exists($uploadfile)) {
  5. header('Content-Description: File Transfer');
  6. header('Content-Type: application/octet-stream');
  7. header('Content-Disposition: attachment; filename='.basename($uploadfile));
  8. header('Content-Transfer-Encoding: binary');
  9. header('Expires: 0');
  10. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  11. header('Pragma: public');
  12. header('Content-Length: ' . filesize($uploadfile));
  13.  
  14.  
  15. readfile($uploadfile);
  16. }
  17. ?>


A do pobrania prowadzi link: <a href="download.php?file=files/plik.txt">

Wszystko wspaniale, to nic, że absolutnie nie rozumiem tego kodu phpa, bo mamy przecież opcję kopiuj-wklej. Tyle że po linku domyślam się, że ten plik.txt musi być u mnie na serwerze, żeby go można było do siebie ściągnąć. Problem polega na tym, że ja nie chcę, żeby ten plik się moim serwerze tworzył. W najgorszym wypadku, jeśli inaczej się nie da, niech się tworzy i od razu usuwa po pobraniu.

I jeszcze jedno. O tym chyba nie wspomniałam, mój błąd. To, co chcę zapisać, znajduje się w pliku php i wygląda pi razy drzwi tak:

  1. Imię i nazwisko: <?php echo $imie ?> <br>
  2. Wiek: <?php echo#wiek ?> <br>
  3. Zawód: <?php
  4. if ($profesja=="Inne")
  5. {
  6. echo $innaprofesja;
  7. }
  8. else
  9. {
  10. echo $profesja;
  11. }
  12. ?>
  13. <br><br>
  14. Opis: <?php echo nl2br($opis); ?>


Czyli nie jest to wartość jednej zmiennej, a wielu zmiennych, do tego warunki i trochę tekstu i htmla i zależy mi na tym, by to wszystko zostało zapisane do tego pliku .txt na komputerze użytkownika, uwzględniając, gdzie tekst zaczyna się od nowej linii i takie tam. I tu rodzi się kolejne pytanie: czy to, co powyżej (a sam kod do zapisania jest jakieś pięć razy dłuższy) należałoby wtedy przypisać do jakiejś jednej zmiennej i wtedy kombinować z zapisem tejże? I jak coś takiego zrobić?

Pytanie bonus sobie odpuszczam, jak otworzyłam stronę z przykładem z tym, co podpowiadał mitorski, to pierwsze, co się zrobiło, to przeglądarka wyświetliła mi komunikat o awarii wtyczki flash. Zresztą, i tak nie rozumiem, jak do mnie o javascripcie piszą po polsku, więc o angielskich tekstach nie wspomnę.
Pyton_000
Cytat(mitorski @ 12.07.2014, 11:21:00 ) *
nie wcale, jsem tego nie zrobisz....

https://github.com/zeroclipboard/zeroclipboard a jak wpisuje w google copy to clipboard javascript to nie wiem od czego zacząć przeglądanie wyników bo tyle ich jest


Jak już zaczniesz wypisywać głupty to lepiej byś zerkną na link który podałeś
Cytat
The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.
johny_s
@kirkowa
Jeśli czegoś nie rozumiesz to niestety trzeba przysiąść i poczytać, za Ciebie nikt tego nie zrobi

W przykładach są pliki bo to bardziej popularne rozwiązanie, ale nic nie stoi na przeszkodzie żeby zmodyfikować

  1. $dane = "Imię i nazwisko: {$imie}\n";
  2. $dane .= "Wiek: {$wiek}\n";
  3. $dane .= "Zawód: ".(($profesja=="Inne")?$innaprofesja:$profesja)."\n"
  4.  
  5. header('Content-Description: File Transfer');
  6. header('Content-Type: application/octet-stream');
  7. header('Content-Disposition: attachment; filename=plik.txt');
  8. header('Content-Transfer-Encoding: binary');
  9. header('Expires: 0');
  10. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  11. header('Pragma: public');
  12. header('Content-Length: ' . strlen($dane));


klepane z palca może się gdzieś rypnąć

@mitorski
odpal któryś z tych skryptów z wyłączonym flashem w przeglądarce to pogadamy
kirkowa
@johny_s, czytam, i to nawet dużo, tylko naprawdę czasem nie rozumiem, co czytam. I umiejętność interpretacji tekstów artystycznych niestety mi nie pomaga, bo to zupełnie coś innego. Czasem, tak jak choćby w tym przypadku, zupełnie nie wiem, jak w ogóle się do czegoś zabrać, jak coś, co znajdę, dopasować do swoich potrzeb i - co najważniejsze - jak to zrozumieć, by móc się tym posługiwać w przyszłości.

Ale wracając do senda.

Dziękuję serdecznie za pomoc, DZIAŁA. Znaczy nie od razu zadziałało, ale w końcu się udało.

Dla tych, co będą szukali kiedyś i tu trafią, podsyłam to, co u mnie działa z opisem łopatologicznym dla kogoś na moim poziomie:

W pliku pierwszy.php mam zadeklarowane zmienne i link, żeby sobie można było zapisać i wygląda to tak:

  1. <?php
  2.  
  3. //zmienne przesyłane POSTem z pliku zero.php z formularza
  4.  
  5. $imie=$_POST['imienazwisko'];
  6. $wiek=$_POST['wiek'];
  7. $profesja=$_POST['profesja'];
  8. $innaprofesja=$_POST['innaprofesja'];
  9.  
  10. // tutaj mam warunek, bo profesja jest listą rozwijaną, a jak się wybierze inne, to pokazuje się pole do wpisania ręcznie; w skrócie: jeśli user wybrał "Inne", pokaż tylko to co wpisał z palca.
  11.  
  12. $zawod = (($profesja=="Inne")?$innaprofesja:$profesja);
  13.  
  14. ?>
  15.  
  16. <!-- link do zapisywania, zmienne przesyłane GETem. -->
  17.  
  18. <a href="zapis.php?imie=<?php echo $imie ?>&wiek=<?php echo $wiek ?>&zawod=<?php echo $zawod ?>">Kliknij, żeby zapisać do txt</a>



Plik drugi.php służy tylko i wyłącznie do tego, by to z pierwszego sie zapisało. Nawet się nie wyświetla.

  1. <?php
  2.  
  3. $imie=$_GET['imie'];
  4. $wiek=$_GET['wiek'];
  5. $zawod=$_GET['zawod'];
  6.  
  7. // To nie mam pojęcia, jak właściwie działa, ale działa i zapisuje pod nazwą, jaką wpiszę, i w takim formacie. Dla eksperymentu wpisałam .doc i też poszło, tylko mnie Word prosił przed otwarciem o wybranie kodowania.
  8.  
  9. header('Content-Description: File Transfer');
  10. header('Content-Type: application/octet-stream; charset=utf-8');
  11. header('Content-Disposition: attachment; filename=mojplik.txt');
  12. header('Content-Transfer-Encoding: binary');
  13. header('Expires: 0');
  14. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  15. header('Pragma: public');
  16.  
  17. // Wyświetlamy to, co chcemy zapisać w pliku. To, co nie wyświetlone, nie zostanie w nim zapisane. I jedna uwaga: chciałam, żeby każda rzecz była w pliku zapisywana od nowej linii. Niestety, \n nie zadziałało, ale \r\n już działa.
  18.  
  19. echo 'Imię i Nazwisko: '.$imie."\r\n";
  20. echo 'Wiek: '.$wiek."\r\n";
  21. echo 'Profesja: '.$zawod;
  22.  
  23. ?>
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.