
Piszę do was, raczej osób z dużą ilością czasu, chęciom pomocy i w rozwijaniu wiedzy, mojej jak i waszej.
Postawiłem sobie do zrealizowania grubą misję. Trochę wybrałem się z motyką na księżyc. Będę szczery, przyczyną jest średnio przeciętna znajomość php, aczkolwiek mój mózg chłonie wszystko tylko i wyłącznie w praktyce, teoria słabo się wpaja. Tak, jestem samoukiem z pasji/nudy.
Najpierw napiszę co już naklepałem. Zatem mam sobie taką stronkę, rejestracja, logowanie i inne wodotryski. Wszystko to jest po to, aby użytkownicy podali na swoim koncie ważne dane, niezbędne do późniejszych chytrych celów, mianowicie generowania plików xml. Przy pomocy formularzy (głównie select) generuję pliki xml, parsuję i wyświetlam potrzebne dane (zazwyczaj w pętli, ze względu na dane od każdego użytkownika).
No i to by było chyba wszystko. Spisuje się to elegancko, chyba że padnie serwer matka plików xml i wyświetla ładnie dopisane błędy.
Jaki jest cel pozbycia się tego co zrobiłem? A taki, że to wszystko jest na sztywno i nie mam możliwości ingerencji w wyświetlane dane (usuwanie wpisów, edycja). Nie mogę też zrobić czegoś w rodzaju archiwum, zliczania punktów, czy innych urozmaiceń jak porównanie kilku elementów z kilku plików.
Co chcę osiągnąć? Tego co nie mogę w akapicie wyżej, kilka innych rzeczy, a najbardziej wrzucenie tego do mysql'a.
Wrzucenie jednego pliku to nie problem, parsowanie, pętla i przez crona co minutę pobieranie i aktualizowanie danych do mysql'a.
Na upartego da się to zrobić z większą ilością plików, ale domyślam się, że ich struktura musi być taka sama, a nie jest.
Może przedstawię kilka zmyślonych przykładów tych plików:
Te należą do plików z jedną zmienną podaną przez użytkownika w adresie.
generowanie przez get: adres.pl/magazyn/UŻYTKOWNIK/ciuch <ciuch Id="3649033" firma="nike" name="koszulinka"> <ciuchWlasciwosci jakosc="A" kolor="red" cos="38" bla="55" bla="2"/> </ciuch> wersja z listą: adres.pl/magazyn/UŻYTKOWNIK/ciuchy <list> <ciuch Id="3649033" firma="nike" name="koszulinka"> <ciuchWlasciwosci jakosc="A" kolor="red" cos="38" bla="55" bla="2"/> </ciuch> </list>
szczegóły przez get: adres.pl/magazyn/UŻYTKOWNIK/ciuchszczegol <ciuchWlasciwosci jakosc="A" kolor="red" cos="38" bla="55" bla="2"/>
jakieś dane przez get: adres.pl/magazyn/UŻYTKOWNIK/danejakies <jakieś> <dane> <ciuchjakiś jakosc="A" kolor="red" cos="38" bla="55" bla="2"/> </dane> <dane> <ciuchjakiś jakosc="A" kolor="red" cos="38" bla="55" bla="2"/> </dane> </jakieś>
godzina logowania przez get: adres.pl/magazyn/UŻYTKOWNIK/logowanie <godzina>12:00:21</godzina>
No i tutaj zaczynają się schody. Szczegółowy opis problemu, pod przykładami.
lista danych od każdego użytkownika przez post: adres.pl/lista/?zmienna=1&zmienna2=2&zmienna3=3&uzytkownicy=kowalski,misiak,zawieja,ITD <lista> <mieszkanie metry="65" wysokosc="12" drzwi="1" cos="119520" coś="50" nazwisko="kowalski" imie="tomasz" cos="cos"> <personalne nazwisko="kowalski" imie="tomasz" zdjecie="link" opis="bla bla" cos="cos"/> <mieszkanie/> <mieszkanie metry="25" wysokosc="42" drzwi="7" cos="163420" coś="40" nazwisko="misiak" imie="judyta" cos="cos"> <personalne nazwisko="kowalski" imie="tomasz" zdjecie="link" opis="bla bla" cos="cos"/> <mieszkanie/> <mieszkanie metry="85" wysokosc="14" drzwi="3" cos="118340" coś="55" nazwisko="zawieja" imie="eugeniusz" cos="cos"> <personalne nazwisko="kowalski" imie="tomasz" zdjecie="link" opis="bla bla" cos="cos"/> <mieszkanie/> </lista>
I to w zasadzie wszystko. Niestety nie mam kompletnie wpływu na te pliki, więc ich struktura musi być taka.
Jedyny plik i w zasadzie najważniejszy to ten ostatni, którego otrzymujemy po wysłaniu metodą post. Przy get wywala błąd, ponieważ chroni się przed wysłaniem danych z za długiego linku i dobrze. Co jest najgorsze to dwie zmienne. Jedna ma około 100 różnych numerów. Druga zaś dwa przez co łącznie mnoży się to do 200. Kolejna przeszkoda <personalne> które po iluś tam wynikach (niepamiętam dokładnie) znikają na rzecz zmniejszenia pliku xml. Tu na pomoc przychodzi inny plik (tutaj /ciuchy) który posiada te dane, ale może wyświetlić je tylko jednemu użytkownikowi (get i post). Rozwiązałem to jak do tej pory w prosty sposób, dołączyłem kod z tego pliku (ciuchy) do pętli w <mieszkanie> i wszystko ładnie się zgrywa ze sobą i wyniki są cacy.
Co wymyśliłem i jak chce te dane przechowywać? No tutaj nie bardzo mam pomysł, jak to zrobić żeby to było elastyczne i praktyczne. Jak na razie jest wersja, że zrobię bazę, w bazie tabele i każdy użytkownik (czyli wiersz) będzie posiadać te około 220 kolumn (za jakie grzechy) z wynikami. Innego pomysłu na tę chwilę nie mam.
Czego pragnę od was? Pomysłów na sprytne rozwiązanie tego. Przykłady, odnośniki cokolwiek, ale podkreślam, nie w twardej teorii (tej nie znoszę), bo większość funkcji itd na bieżąco przeglądam (słaba pamięć). Najlepiej chłopskim językiem, nie profesorskim.
I taktujcie to jako wyzwanie, a nie próbę wymuszenia gotowca. Sam będę tu wklejać swoje wymysły odnośnie tego tematu, ale muszę mieć podstawę by zacząć. Na chwilę obecną nawet nie wiem jak to ugryźć.
Pozdrawiam ciepło w ten mroźny wieczór
