Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]Pobranie,edycja, zapis pliku JSON poprzez php.
Forum PHP.pl > Forum > Przedszkole
programistaarek
Witam serdecznie mam w pewnym serwisie stworzony czat w którym wszystkie rozmowy są zapisywane w pliku np dział rozmowy do pliku Rozmowy.json. Stworzyłem sobie panel admina i jeśli chcę wyczyścić dział rozmów to kasuję ten plik z poziomu skryptu i go nie ma brak rozmów i jest jak chcę. Jednak jak mam zrobić edycję tego pliku Rozmowy,json.
Tzn trwa jakaś rozmowa ktoś zacznie łamać regulamin osobę banuję ale muszę usunąć całą rozmowę żeby skasować niechcianą treść a chciałbym pojedynczy rekord tylko.

Tak wygląda plik Rozmowy.json

  1. {"time":1506000586,"users":{"1506000595":"Administrator"},"chats":[{"user":"Administrator","d_t":"21 Sep 13:28","chat":"cze\u015b\u0107"},{"user":"Administrator","d_t":"21 Sep 13:28","chat":"witaj"},{"user":"Administrator","d_t":"21 Sep 13:28","chat":"hej"},{"user":"Administrator","d_t":"21 Sep 13:28","chat":"co tam"},{"user":"Administrator","d_t":"21 Sep 13:28","chat":"jolo"},{"user":"Administrator","d_t":"21 Sep 13:28","chat":"hej"},{"user":"Administrator","d_t":"21 Sep 13:28","chat":"siema"},{"user":"Administrator","d_t":"21 Sep 13:28","chat":"witajcie"},{"user":"Administrator","d_t":"21 Sep 13:29","chat":"co u was??"},{"user":"Administrator","d_t":"21 Sep 13:29","chat":"elo elo haha.gif"},{"user":"Administrator","d_t":"21 Sep 13:29","chat":"cze\u015b\u0107 biggrin.gif"},{"user":"Administrator","d_t":"21 Sep 13:29","chat":"NO CO JEST :)"},{"user":"Administrator","d_t":"21 Sep 13:29","chat":":DDDDDDDD"}]}


I teraz mam pytanie do Was jak ten plik wyświetlić w php np w textarea powiedzmy abym miał dużo miejsca do edycji i żebym mógł go sobie edytować i usunąć linijkę z treścią i zapisać oraz otrzymać efekt jaki chcę. Chyba, że istnieje inna opcja? Wiem, że można pobrać na komputer i go edytować w notatniku, ale jeśli tych wiadomości np będzie z 100 to będzie się człowiek gubić i to będzie nie wygodne. Szukałem wiele po internecie lecz nic ciekawego nie znalazłem :/
Czekam na pomoc i pozdrawiam.
Puszy
Z racji że wiadomości nie mają własnych ID to ja to widzę tylko po stronie przeglądarki, czyli zaciągnięcie całej rozmowy do zmiennej w JS, następnie wyświetlenie wszystkich wiadomości w liście wraz z nadaniem własnego ID cyz też skorzystania z liczby porządkowej. Przycisk edytuj który zamieni <li> na <form> z <input>, wysłanie formularza spowoduje zmianę wartości wiadomości w zmiennej przechowującej obiekt. Na koniec przycisk "zapisz zmiany" wysyłający zmienną JS w postaci JSON do PHP. W PHP nadpisanie pliku z rozmową. Problem pojawia się gdy rozmowa właśnie się toczy i cały czas dochodzą nowe wiadomości.
programistaarek
Z ostatnim zdaniem dowaliłeś :/ czyli, że przepisuję to by dane były pobierane z bazy danych :/ Chyba, że jesteś w stanie napisać to co mi wyjaśniłeś? Lub naprowadzisz mnie na to? Bo kompletnie nie wiem jak się za to zabrać :/
Puszy
Jeżeli rozmowa jest zakończona to jesteś w posiadaniu pliku który się już nie zmieni to sprawa jest łatwa, tak jak opisałem wyżej. Pobierasz plik jako dane i obrabiasz je po stronie przeglądarki, następnie pchasz dane do PHP gdzie zamieniasz je na JSON i wrzucasz do pliku. Jeżeli rozmowa trwa to znaczy że do oryginalnego pliku dochodzą nowe wiadomość więc dane które obecnie obrabiasz mogą być przestarzałe, dlatego musiałbyś przed zapisem nowych danych porównywać dane tak aby dorzucić nowe wiadomości ale jednocześnie edytując odpowiednio poprzednie a z racji tego że wiadomości nie mają żadnych identyfikatorów, są po prostu zbiorem wiadomości z datą to pojawia się problem. O ile sama data jeszcze Cię trochę ratuję to już w przypadku 2-3 i więcej wiadomości z tej samej sekundy masz problem.

Trochę nie rozumiem co masz na myśli pisząc o bazie danych.
programistaarek
O bazie tzn, że napiszę nowy czat w którym wiadomości będę zapisywać w bazie danych mysql. Znalazłem fajny skrypt który działa poprawnie bez przeładowania strony czat dane zapisywane są w pliku json. Dziękuję za instrukcję, ale kompletnie nie mam pojęcia jak się za to zabrać by te dane pobrać z pliku Rozmowy.json później to przerobić i zapisać. Masz jakieś gotowe rozwiązanie?
Puszy
Moim zdaniem czat oparty na JSONie który chcesz edytować jest problematyczny, lepiej byłoby Ci skorzystać np z SQLite. Ponadto nie ważne czy zrobisz to na plikach czy na bazie musisz posiadać również mechanizm odświeżania wiadomości po stronie użytkownika, usunięcie wpisu w bazie nie spowoduje zniknięcia wiadomości w przeglądarce użytkownika. Co do gotowych przykładów to znajdziesz ich multum w internecie, jedne są lepsze, drugie są gorsze a inne bezsensowne.
viking
To ja bym bardziej coś nosql typu Mongo proponował. Czat to zapewne nie super ważne dane a za to czas dostępu idealnych do takich celów.
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.