Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam!
Chciałbym, aby z automatu zaciągały się dane z pliku csv/xls i były wyświetlane na stronie www.
Nie znam PHP czy Javy/JS... Ale chętnie się podszkolę - ktoś z was może robił coś takiego?
Plik będzie na maszynie użytkownika, apache jest na serwerze. Mogę plik udostępnić przez windowsowy mechanizm udostępniania plików np.
Później będę jeszcze chciał ten plik synchronizować z kopią na serwerze (jak uży7szkodnik komputer wyłączy...), ale to prostsze chyba znacznie. Podmontuję sobie folder udostępniony i przez incron powinno pięknie się synchronizować po zmianie pliku.
Offline
Takie rzezy tylko w bajkach.
Plik CSV musi być na serwerze, przeglądarka internetowa nie ma prawa z poziomu js zaglądać na dysk użytkownika, także pacjent musi wysłać plik na serwer.
Offline
Ok, czyli najpierw sobie synchro zrobię. Ale i tak nie wiem jak to zrobić/oskryptować etc...
Zresztą chyba nie do końca prawdę pan rzecze... Mam pliki w /var/www/html/
Co stoi na przeszkodzie, aby podmontować kataloŋ zdalny z innego kompa np jako /var/www/html/shared ?Apache będzie to widział jak normalny, lokalny katalog chyba?
Ostatnio edytowany przez misioooo (2014-10-14 08:32:47)
Offline
Misioooo CSV to nic innego jak małpio prosty plik tekstowy, gdzie kolumny są separowane przez wybrany przez cb znak (np. w Calcu domyślny to przecinek), a kolejne wiersze to nowe linie, jeśli komórka zawierała przecinek, to całość jest brana w cudzysłowy.
Więc żeby obrobić CSV trzeba wczytać go całego do tablicy np. za pomocą
http://php.net/manual/pl/function.fgetcsv.php
i potem manipulować na stringach
Offline
@jacekalex: w słowniku programistów nie istnieje słowo "niemożliwe" - choć niektórzy używają go jako skrótowego określenia dla sformułowania "nie umiem tego zrobić".
w tym przypadku się da np. poprzez napisanie rozszerzenia do firefoxa mającego dostęp do tego pliku.
@thomsson: a nie można po bożemu, po linijce?
Offline
No można, fakt że tam to "trzeba" było na wyrost, ale z drugiej strony skoro istnieje stosowna funkcja to po co dorzucać sobie roboty? Z resztą nie ważne, uznaje swój błąd i nie będę ciągnął dalej tematu
Offline
[quote=ethanak]@jacekalex: w słowniku programistów nie istnieje słowo "niemożliwe" - choć niektórzy używają go jako skrótowego określenia dla sformułowania "nie umiem tego zrobić".
w tym przypadku się da np. poprzez napisanie rozszerzenia do firefoxa mającego dostęp do tego pliku.
@thomsson: a nie można po bożemu, po linijce?[/quote]
Kiepskie wnioski.
Na stronę możesz wchodzić z różnych przeglądarek, także niekoniecznie rozszerzenie do FF.
Dodatkowo wszystkie zabezpieczenia przeglądarek internetowych idą w tym kierunku, żeby przeglądarka sama bez interakcji użyszkodnika nie buszowała
po dysku, bo po prostu przeglądarki służą do przeglądania internetu z domowego komputera, a nie odwrotnie.
Dlatego dywagacje na temat dostępu z poziomu skryptu na serwerze WWW do plików na kompie pacjenta, który przegląda stronę, to zabawa na forum metasploita, a nie normalne programowanie.
Tu raczej jakieś aplet javy może by dał radę, ale też raczej nie w czasie chrome-sandboxów, plugin-containerów i operapluginwrapperów.
Jeżeli jest potrzebna interakcja między serwerem, a plikami na dyziu pacjenta, to chyba raczej jakiś program typu klient-serwer, który od strony klienta może używać do prezentacji danych Webkita cz libxul.so, ale to jednak osobna aplikacja, a nie przeglądarka.
Chyba, żeby pacjent ładował plik ręcznie metodą POST, a skrypt na serwerze go przetrawiał, i zwracał wynik na stronie WWW.
[b]@misiooo[/b]
Montowanie dyzia z kompa na serwerze w /var/www/cośtam/shared, żeby skrypt na serwerze dobrał się do pliku, to następna fantastyka.
Ostatnio edytowany przez Jacekalex (2014-10-14 14:52:14)
Offline
chodzi mi właśnie o coś takiego (wysłanie pliku przez pacjenta) tylko nieco bardziej zautomatyzowane.
pisałem kiedyś coś takiego i działało całkiem zacnie (synchronizacja katalogu ze zdjęciami na kompie klienta z katalogiem na serwerze).
Offline
Sposób załadowania danych z csv zależy od tego co chcemy z nim zrobić. W sumie ładownie do tablicy też czyta wiersz po wierszu. Jeśli chcemy tylko wyświetlić to w postaci html to łatwiej czytać wiersz po wierszu. Ba chyba jeszcze łatwiej to obrobić na poziomie skryptu powłoki i statycznie tworzyć plik html. Jeśli dane mają być w jakiś sposób obronione to jak najbardziej tą funkcja można. Bo i po co pisać podobną samemu i marnować linijki kodu :)
[quote=Jacekalex]Montowanie dyzia z kompa na serwerze w /var/www/cośtam/shared, żeby skrypt na serwerze dobrał się do pliku, to następna fantastyka.[/quote]
No niekoniecznie fantastyka ale przerost formy nad treścią.
Offline
[quote=ethanak]chodzi mi właśnie o coś takiego (wysłanie pliku przez pacjenta) tylko nieco bardziej zautomatyzowane.
pisałem kiedyś coś takiego i działało całkiem zacnie (synchronizacja katalogu ze zdjęciami na kompie klienta z katalogiem na serwerze).[/quote]
To już zabawa w coś podobnego do Dropboxa czy Google-drive.
Obecnie jedno i drugie wymaga aplikacji na kompie pacjenta, choć przez przeglądarkę też sie da używać.
Problem polega na tym, że kiedyś, w takim Firefoxie 2.0 aplet javy mógł buszować po całym dyziu (i to nawet w Linuxie, z powodu kilku różnych dziur w javie i w kernelu), ale "to se już ne wrati", nie te czasy. ;D
Ostatnio edytowany przez Jacekalex (2014-10-14 14:56:47)
Offline
aplet to nie rozszerzenie. rozszerzenie pracuje z uprawnieniami przeglądarki.
Offline
[quote=ethanak]aplet to nie rozszerzenie. rozszerzenie pracuje z uprawnieniami przeglądarki.[/quote]
Oczywiście, tylko że te przeglądarki też stopniowo coraz mniej mogą, bo wędrują w kierunku każdej karty w osobnym wątku lub procesie, i do tego rozwiązań typu Seccomp lub Capsicum.
Ostatnio edytowany przez Jacekalex (2014-10-14 15:30:55)
Offline
ta... vide ChromeVox - trzeba było stworzyć dziurę po to aby działał na linuksie.
dziura może niezbyt niebezpieczna i wątpię aby ktokolwiek ją wykorzystał - tym niemniej dziura.
Offline
To będzie tylko do zastosowań lokalnych. Strona nie będzie w necie dostępna. Dokładnie - to dwie osoby będą miały dostęp do niej tylko.
Z plikiem csv mam problem taki, że jak w excelu są scalone komórki (a są) to qpa... Wartość scalonych komórek pojawia się tylko przy pierwszym wierszu jej wystąpienia.
Dodatkowo nie chcę wyświetlać całego pliku, a jedynie jego część.
Plik wygląda mniej więcej tak:
[img]http://i.imgur.com/msFCcrp.png[/img]
Jest jeszcze jedna opcja (ale nie wiem czy przejdzie - użyszkodnik może nie zaakceptować)... Udało mi się te wszystkie dane wrzucić do bazy mySQL i potrafię je wydobyć tak jak chcę, posortować etc :)
Na razie zajmijmy się plik (część zawartości) -> strona
Ostatnio edytowany przez misioooo (2014-10-14 15:55:32)
Offline
o ile pamiętam to w następnym wierszu masz pusty string w csv i w tym momencie masz prosty algorytm jak scalić w pionie komórki.
podaj fragment csv wygenerowany z tego xls-a.
Ostatnio edytowany przez ethanak (2014-10-14 15:59:25)
Offline
Proszę bardzo:
Data,Godzina,Temat,Osoby 14.10.2014,09:00,Spotkanie 1,Osobniki 1 ,10:00,, ,11:00,, ,12:00,, ,13:00,, ,14:00,, ,15:00,Spotkanie 2,Osobniki 2 ,16:00,, ,17:00,, ,18:00,, ,19:00,, 15.10.2014,09:00,, ,10:00,, ,11:00,, ,12:00,, ,13:00,, ,14:00,, ,15:00,, ,16:00,, ,17:00,, ,18:00,, ,19:00,, 16.10.2014,09:00,, ,10:00,, ,11:00,, ,12:00,, ,13:00,, ,14:00,, ,15:00,, ,16:00,, ,17:00,, ,18:00,, ,19:00,,
Nie mam dat i tych poscalanych komórek...
Nie muszę używać csv, może być np xml (office zapisuje też w takim czymś chyba).
Offline
czyli masz prosto. pusty string oznacza że komórka ma być scalona z tą wyżej.
Offline
[quote=ethanak]czyli masz prosto. pusty string oznacza że komórka ma być scalona z tą wyżej.[/quote]
Bzdury Pan wygaduje, a jak jest pusta komórka to co tam jest zapisane?
[b]CSV nie zapisuje formatowania[/b]
Do planowania dnia jest kalendarz, a nie arkusz kalkulacyjny.
Offline
qluk, proszę... nie ja planuję to... Osobiście już odpaliłem http://sourceforge.net/projects/mrbs/
Tylko teraz wytłumacz koleżankom, że to jest lepsze od excela ;) Prościej będzie chyba przewidzieć co w CSV siedzi w "pustej" komórce, niż kobiety przekonać do innego rozwiązania... Zresztą te sale (jest ich kilkanaście) są dostępne jako pomieszczenia w Exchangeu... I teraz dowiedz się, czemu nie korzystają z gotowego narzędzia? ;)
Offline
Proste "nie da się, macie od tego narzędzie". Jak zawsze będzie się zwalało na "... wytłumacz to...", " one/oni i tak nie będą" to za przeproszeniem co ty tam robisz? Informatyk to nie tylko ktoś od konfiguracji, administracji, etc. A skoro jest Exchange to argument że trzeba kogoś z kierownictwa przekonać też kiepski "ale wydalismy juz tyle pieniedzy na Exchenga a nikt nie chce go używać".
Ale jeśli się upierasz to csv nie nadaje sie do tego typu danych bo on przenosi tylko i wylacznie zawartosc komórki, co więcej wyniki w komórce więc formuł też nie będzie. Do tego jest tam z tego co pamietam eksportuj jako tabela html.
Offline
Od początku pisałęm - jakikolwiek plik w jakim excel może zapisać wynik pracy ;) Mało tego - export do HTML można tak w excelu ustawić, że z automatu się eksportuje po każdej edycji pliku.
I co ja robię tu? Uuuuu! Co ty tutaj robisz?
Informatykiem nie jestem, zajmuję się systemami wizyjnymi (ekrany, projektory)... A że się bawię w takie dziwactwa - ot już tak mam, że chętnie się uczę nowych rzeczy, zwłaszcza, że w systemach Digital Signage (czyli moja działka) bardzo często takie kwiatki trzeba tworzyć, albo przynajmniej wiedzieć do kogo z tym się udać (programista? twórca stron www? zarządca sieci?).
Offline
[quote=misioooo]Od początku pisałęm - jakikolwiek plik w jakim excel może zapisać wynik pracy ;) Mało tego - export do HTML można tak w excelu ustawić, że z automatu się eksportuje po każdej edycji pliku.
I co ja robię tu? Uuuuu! Co ty tutaj robisz?
Informatykiem nie jestem, zajmuję się systemami wizyjnymi (ekrany, projektory)... A że się bawię w takie dziwactwa - ot już tak mam, że chętnie się uczę nowych rzeczy, zwłaszcza, że w systemach Digital Signage (czyli moja działka) bardzo często takie kwiatki trzeba tworzyć, albo przynajmniej wiedzieć do kogo z tym się udać (programista? twórca stron www? zarządca sieci?).[/quote]
No to tym bardziej bym się nie zajmował taką pierdołą bo to jest wynajdowanie koła na nowo. Co do pytania wyżej, znacznie wyżej, tak XML przenosi zapis scalenia i formatowania komórek. Jest tam parametr jak margeDown, który mówi ile następnych komórek jest scalonych z obecną.
Offline
[quote=qluk][quote=ethanak]czyli masz prosto. pusty string oznacza że komórka ma być scalona z tą wyżej.[/quote]
Bzdury Pan wygaduje, a jak jest pusta komórka to co tam jest zapisane?[/quote]
Nico.
To co pokazał misiooo nie zawiera pustych komórek inicjalizujących kolumnę.
Offline
[quote=ethanak][quote=qluk][quote=ethanak]czyli masz prosto. pusty string oznacza że komórka ma być scalona z tą wyżej.[/quote]
Bzdury Pan wygaduje, a jak jest pusta komórka to co tam jest zapisane?[/quote]
Nico.
To co pokazał misiooo nie zawiera pustych komórek inicjalizujących kolumnę.[/quote]
Skąd takie założenie, nie wiadomo co jest w trzeciej kolumnie. Pierwszą można przyjąć że scalenie jest aż do następnego ciągu różnego od pustego łańcucha. Ale w trzeciej niezaleznie czy to będzie część scalenia czy też brak wpisu (brak spotkania) pobrany łańcuch będzie pusty.
Jak dla mnie, najlepszym rozwiązaniem będzie zapis do HTML'a na podmontowy w windowsie udział na serwerze. Następnie podlinkować ten zasób na serwerze tak aby serwer http to widział, albo skrypt przegrywający w momencie aktualizacji tego pliku i nadający jakąś z góry przyjętą nazwę dla http.
Można tez napisać cały silniczek do parsowania XML tylko po co? Szkoda tracić czas i nerwy przy tym.
Offline
Time (s) | Query |
---|---|
0.00012 | SET CHARSET latin2 |
0.00007 | SET NAMES latin2 |
0.00182 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.129.22.135' WHERE u.id=1 |
0.00086 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.129.22.135', 1714660926) |
0.00045 | SELECT * FROM punbb_online WHERE logged<1714660626 |
0.00075 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=26546 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00385 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=26546 ORDER BY p.id LIMIT 0,25 |
0.00133 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=26546 |
Total query time: 0.0093 s |