[PHP]Generowanie CSV i zapis do pliku - nie działa ;( |
[PHP]Generowanie CSV i zapis do pliku - nie działa ;( |
13.10.2022, 09:03:34
Post
#1
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) |
Hej,
to znowu ja Wasz niepoprawny/niereformowalny phpamator (jak widać) Napotkałem problem z którym nie potrafię sobie poradzić, może ktoś z was mógłby mnie oświecić. Otóż pisząc mój kod który teoretycznie powinien działać (kod poniżej)
wrzuciłem to do osobnego pliku i działa bez problemu Co źle zrobiłem ? |
|
|
13.10.2022, 10:38:21
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
Czy ja dobrze rozumiem ze slesz AJAX do pliku ktory wypluwa ci CSV z odpowiednimi headers i dziwisz sie ze sie nie schce sciagnac? No normalne. Poprostu przekieruj uztkownika do tego pliku a nie slesz tam AJAX.
Jak przekierowac? Normalnie, document.location.href="adres do pliku" -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
13.10.2022, 16:35:00
Post
#3
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) |
Teraz to ja nie rozumiem
żeby rozjaśnić: mam tabele gdzie wybieram które dane chcę mieć w CSV więc zaznaczam i wysyłam ajaxem dwie funkcje użyte w tym przykładzie pobieraj i generuj plik i zapisuj do bufora i tu spodziewałem się mojego pliku poprzedzonego pytaniem "Gdzie chcesz zapisać wygenerowany plik" Jak ty "nospor" byś to zrobił ? |
|
|
13.10.2022, 16:54:10
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
ok, nie dolukalem ze przesylasz parametry jeszcze
Tylko ze parametry nadal mozesz przeslac do pliku czyli nadal jak pisalem wczesniej document.location.href="http://url_do_sciagniecia_pliku?tutaj_parametry" Jesli jednak nadal sie upierasz przy ajax, to url na ktory idzie ajax ma nie zwracac pliku z naglowkami, tylko sama zawartosc pliku, ajax ja pobierzez i potem w js przygotowujesz zwrotke do pobrania pliku dla usera. W necie masz masze przykladow jak zrobic download w js -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
13.10.2022, 17:22:08
Post
#5
|
|
Grupa: Zarejestrowani Postów: 343 Pomógł: 70 Dołączył: 15.07.2014 Ostrzeżenie: (0%) |
Ja bym zrobił to inaczej. Plik wygenerował i zapisał po stronie PHP. Zwrócił na front jedynie zahashowaną nazwę pliku i front zrobiłby przekierowanie na ten właśnie plik do pobrania.
|
|
|
14.10.2022, 08:54:16
Post
#6
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 3 Dołączył: 10.07.2016 Skąd: UK-raine Ostrzeżenie: (0%) |
|
|
|
14.10.2022, 09:06:41
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 Dołączył: 27.12.2004 |
@Salvation skoro i tak musisz w twoim przypadku i tak we frontend przekierowac do pliku do sciagniecia, to czemu nie lepiej przekierowac do pliku ktory generuje co ma generowac? Wydaje sie to byc zbedna dodatkowa funkcjonalnoscia
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
14.10.2022, 15:05:53
Post
#8
|
|
Grupa: Zarejestrowani Postów: 343 Pomógł: 70 Dołączył: 15.07.2014 Ostrzeżenie: (0%) |
Kod masz już prawie gotowy. Wystarczy zmienić funkcję `exportCsv` na taką by zapisywała plik - na przykład z użyciem natywnych funkcji: https://www.php.net/manual/en/function.fputcsv.php lub z użyciem jakiejś bliblioteki. Jak Ci wygodniej.
Zamiast statycznej nazwy pliku: file.csv generuj ją sobie np. w ten sposób: I zwracaj albo sam hash ($filenameHash), albo nazwę z rozszerzeniem: $filename. I w tym ifie co masz, to ostatnie dwie linijki zamieniasz na to: Dodaj jeszcze tylko typowanie argumentów i typ zwrotek funkcji i będzie dobrze. @Salvation skoro i tak musisz w twoim przypadku i tak we frontend przekierowac do pliku do sciagniecia, to czemu nie lepiej przekierowac do pliku ktory generuje co ma generowac? Wydaje sie to byc zbedna dodatkowa funkcjonalnoscia Tak, w sumie to masz rację z tym. Tylko nie wiem czy użycie przekierowania "jawnego" (bezpośredniego) nie zaburzy założeń biznesowych. Może jest jakiś powód do tego, że to leci po AJAX-ie. |
|
|
Wersja Lo-Fi | Aktualny czas: 23.04.2024 - 22:34 |