eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.www › Zagniezdzone <form>y
Ilość wypowiedzi w tym wątku: 10

  • 1. Data: 2009-10-07 08:11:41
    Temat: Zagniezdzone <form>y
    Od: olo <o...@n...com>

    Witam

    Mam pewien problem. Mam tabelę z wynikami rekordów z bazy danych. 1
    wiersz tabeli = 1 rekord. W ostatniej kolumnie tabeli znajduja sie
    guziki do wykonania operacji na rekordzie (usun, (de)aktywuj, edytuj
    itp). W pierwszej kolumnie tabeli znajduja sie checkbox'y, po
    zaznaczeniu ktorych rekord zaznaczany jest do multiedycji. Na dole
    tabeli znajduje sie <select> z ktorego wybieram akcje dla tak
    zaznaczonych rekordow, oraz submit, ktory wysyla liste rekordow, oraz
    akcje do skryptu, ktory je obrobi.

    Struktura wyglada tak (w uproszczeniu):

    <form>
    <table>
    <tr>
    <td>checkbox</td>
    <td>dane</td>
    <td><form>opcje dla jednego rekordu</form></td>
    </tr>
    [...]
    <tr>
    <td>opcje dla wielu rekordow</td>
    </tr>
    </table>
    </form>

    i teraz. Form SHOULD NOT be nested. Ww struktura działa prawidłowo w
    firefoxie. Jest to czesc autorskiego CMS na swoje potrzeby, wiec na
    razie przejmowac sie innymi przegladarkami nie musze. Niemniej chcialbym
    wiedziec, czy takie rozwiazanie w przyszlosci nie bedzie mnie kosztowac
    pracy, nerwow i przerabiania

    --
    pozdrawiam!

    http://webtrunki.pl - piwa, wina, wódki, domowe wyroby
    ZAPRASZAMY!!


  • 2. Data: 2009-10-07 08:49:13
    Temat: Re: Zagniezdzone <form>y
    Od: yew <y...@q...dude>

    olo pisze:
    > Witam
    >
    > Mam pewien problem. Mam tabelę z wynikami rekordów z bazy danych. 1
    > wiersz tabeli = 1 rekord. W ostatniej kolumnie tabeli znajduja sie
    > guziki do wykonania operacji na rekordzie (usun, (de)aktywuj, edytuj
    > itp). W pierwszej kolumnie tabeli znajduja sie checkbox'y, po
    > zaznaczeniu ktorych rekord zaznaczany jest do multiedycji. Na dole
    > tabeli znajduje sie <select> z ktorego wybieram akcje dla tak
    > zaznaczonych rekordow, oraz submit, ktory wysyla liste rekordow, oraz
    > akcje do skryptu, ktory je obrobi.
    >
    > Struktura wyglada tak (w uproszczeniu):
    >
    > <form>
    > <table>
    > <tr>
    > <td>checkbox</td>
    > <td>dane</td>
    > <td><form>opcje dla jednego rekordu</form></td>
    > </tr>
    > [...]
    > <tr>
    > <td>opcje dla wielu rekordow</td>
    > </tr>
    > </table>
    > </form>

    Zamiast:

    > <td><form>opcje dla jednego rekordu</form></td>

    Zrób

    <td>
    <input type="submit" name="record_x" value="del" />
    <input type="submit" name="record_x" value="edit" />
    ...
    </td>

    Wtedy nie musisz zagnieżdżać formularzy.

    Możliwe że lepsze będzie użycie <button /> ale piszę z palca a coraz
    mniej się bawię htmlem.

    --
    yew


  • 3. Data: 2009-10-07 09:18:31
    Temat: Re: Zagniezdzone <form>y
    Od: olo <o...@n...com>

    yew pisze:
    >> Struktura wyglada tak (w uproszczeniu):
    >>
    >> <form>
    >> <table>
    >> <tr>
    >> <td>checkbox</td>
    >> <td>dane</td>
    >> <td><form>opcje dla jednego rekordu</form></td>
    >> </tr>
    >> [...]
    >> <tr>
    >> <td>opcje dla wielu rekordow</td>
    >> </tr>
    >> </table>
    >> </form>
    >
    > Zamiast:
    >
    > > <td><form>opcje dla jednego rekordu</form></td>
    >
    > Zrób
    >
    > <td>
    > <input type="submit" name="record_x" value="del" />
    > <input type="submit" name="record_x" value="edit" />
    > ...
    > </td>
    >
    > Wtedy nie musisz zagnieżdżać formularzy.
    >
    > Możliwe że lepsze będzie użycie <button /> ale piszę z palca a coraz
    > mniej się bawię htmlem.
    >

    sek w tym, ze ten "duzy" form, czyli ten przed cala tabela, ma zupelnie
    inny "action" niz te "male" formy wewnatrz komorek. Teoretycznie daloby
    rade wysylac wszystko zawsze do jednego skryptu, ktory juz odpowiednio
    dane by obrobil, ale wydaje mi sie to troche nieeleganckie (zwlaszcza,
    ze uzytkownicy moga miec rozne uprawnienia i nie kazdy moc np. usuwać
    rekordy). Takto mam osobny plik .php do osobnej akcji i nie gubie sie
    nawet jak po roku lub wiecej czasu wracam do projektu.

    --
    pozdrawiam!

    http://webtrunki.pl - piwa, wina, wódki, domowe wyroby
    ZAPRASZAMY!!


  • 4. Data: 2009-10-07 10:07:07
    Temat: Re: Zagniezdzone <form>y
    Od: "Radek N." <n...@g...pl>

    olo pisze:
    > yew pisze:
    > sek w tym, ze ten "duzy" form, czyli ten przed cala tabela, ma zupelnie
    > inny "action" niz te "male" formy wewnatrz komorek. Teoretycznie daloby
    > rade wysylac wszystko zawsze do jednego skryptu, ktory juz odpowiednio
    > dane by obrobil, ale wydaje mi sie to troche nieeleganckie (zwlaszcza,
    > ze uzytkownicy moga miec rozne uprawnienia i nie kazdy moc np. usuwać
    > rekordy). Takto mam osobny plik .php do osobnej akcji i nie gubie sie
    > nawet jak po roku lub wiecej czasu wracam do projektu.

    IMO jest to właśnie eleganckie - to właśnie funkcja kontrolera, aby
    rozdzielać akcje w zależności od zachowania użytkownika. Przyglądając
    się realizacjom opartym o przeróżne frameworki twierdzę, że jest też
    dość powszechne. Jeden kontroler może mieć kilka akcji - każda
    realizowana w zależności od przesłanego submita.
    Zagnieżdżone formy prędzej czy później odbiją się czkawką.

    --
    Radek N.


  • 5. Data: 2009-10-07 11:02:07
    Temat: Re: Zagniezdzone <form>y
    Od: olo <o...@n...com>

    Radek N. pisze:
    > IMO jest to właśnie eleganckie - to właśnie funkcja kontrolera, aby
    > rozdzielać akcje w zależności od zachowania użytkownika. Przyglądając
    > się realizacjom opartym o przeróżne frameworki twierdzę, że jest też
    > dość powszechne. Jeden kontroler może mieć kilka akcji - każda
    > realizowana w zależności od przesłanego submita.
    > Zagnieżdżone formy prędzej czy później odbiją się czkawką.
    >

    no dobra. Namowiles mnie ;)

    Przerobilem te tabelke tak, by jeden skrypt obslugiwal wszystkie
    operacje. Aby nie robic sobie dodatkowej roboty i pozostac w zgodnosci z
    pewnym systemem nadal zostaly osobne pliki .php do obslugi operacji na
    pojedynczych rekordach, a plik do ktorego wysylane jest zapytanie po
    prostu je includuje. Wszystko dziala prawidlowo, ale zostalo teraz jedno
    male ale..

    Mianowicie. Jedna z opcji na pojedynczym rekordzie to edycja. Jest na
    swoj sposob wyjatkowa. Wszystkie pozostale buttony wykonuja natychmiast
    pewne akcje: aktywacja, deaktywacja, usuwanie. Zas ten jeden nie
    wykonuje zadnej akcji. Najzwyczajniej w swiecie przechodzi do zadanego
    url z identyfikatorem rekordu do edycji w POST. Zeby zrozumiec w czym
    problem przyblize zasade dzialania calego CMS:

    - wszystkie form tak naprawde maja action=""
    - w polu hidden przesylana jest informacja ze ma zostac wykonana akcja,
    dzieki temu w index.php moge odpalic skrypt zajmujacy sie obrabianiem akcji
    - akcje sa wykonywane zanim wyslany zostanie jakikolwiek naglowek
    - po wykonaniu akcji strona moze zostac przekierowana pod zadany url
    (jesli zostalo wyslane żądanie w innej informacji w polu hidden),
    odswiezona jesli POST nie jest juz potrzebny, lub po prostu kontynuacja
    wczytywania

    w przypadku operacji na danych z tabeli o ktorej mowie, dane zostaja
    wyslane do konkretnego pliku z konkretnymi ustawieniami, w tym wypadku:
    zachowaj POST i zostan na stronie, z ktorej nastapilo wywolanie.
    Sprawdza sie to dla wszystkich submitow z wyjatkiem edycji - bo ten nie
    ma wykonywac zadnej akcji a tylko przejsc do innego URL w ktorym rekordy
    sa edytowane.

    Moge co prawda wyslac edycje takze do tego samego pliku kontrolera,
    rozpoznac ja jako edycje i wyslac przekierowanie (bo jak wspomnialem nie
    mam wyslanych zadnych naglowkow), ale potrzebuje przemycic identyfikator
    rekordu do edycji i nie chcialbym robic tego GETem (estetyka, nigdzie
    mie mam GET, tylko same POST).

    w google znalazlem to: http://www.webmasterworld.com/forum88/10801.htm
    co wskazuje, ze nie da sie w prosty sposob zrobic przekierowania z
    danymi w POST.

    Ktoś ma jakieś doswiadczenia w tym temacie?

    --
    pozdrawiam!

    http://webtrunki.pl - piwa, wina, wódki, domowe wyroby
    ZAPRASZAMY!!


  • 6. Data: 2009-10-07 11:17:20
    Temat: Re: Zagniezdzone <form>y
    Od: Paweł Piskorz <n...@p...nie?>

    yew wrote:
    > Zamiast:
    >
    >> <td><form>opcje dla jednego rekordu</form></td>
    >
    > Zrób
    >
    > <td>
    > <input type="submit" name="record_x" value="del" />
    > <input type="submit" name="record_x" value="edit" />
    > ...
    > </td>
    >
    > Wtedy nie musisz zagnieżdżać formularzy.
    >
    > Możliwe że lepsze będzie użycie <button />

    Nie będzie lepsze, chyba że chce mieć problemy w IE.


  • 7. Data: 2009-10-07 11:56:29
    Temat: Re: Zagniezdzone <form>y
    Od: "Radek N." <n...@g...pl>

    olo pisze:
    > Przerobilem te tabelke tak, by jeden skrypt obslugiwal wszystkie
    > operacje. Aby nie robic sobie dodatkowej roboty i pozostac w zgodnosci z
    > pewnym systemem nadal zostaly osobne pliki .php do obslugi operacji na
    > pojedynczych rekordach, a plik do ktorego wysylane jest zapytanie po
    > prostu je includuje. Wszystko dziala prawidlowo, ale zostalo teraz jedno
    > male ale..

    Nie wiem, czy umiem Ci pomóc i przyznam, że nie analizowałem twojego
    opisu (trochę czasu teraz nie mam).

    1. Osobiście w takich tabelkach mam jednak GET, leci typu
    controller=article&action=edit&id=23&... lub
    controller=article&action=delete&id=23&... (tutaj o jakimś tokenie
    pomyśl, żeby nie dało się kasować artykułów samymi linkami)

    2. Czasem jak nad listą artykułów mam przyciski typu "Zaznaczone: usuń"
    to faktycznie lecą POSTem.

    3. Jeśli już muszę przekazywać coś między wywołaniami, to u mnie z
    reguły z przesłanych danych POSTem tworzy się jakiś tam obiekt. Obiekt
    mogę serializować. Serializowany obiekt zapisać w zmiennej sesji i
    przekazywać w ten sposób między wywołaniami... ale to wszystko się
    komplikuje, więc jeśli masz szanse ominąć ten proces to zrób to.

    --
    Radek N.


  • 8. Data: 2009-10-07 16:00:02
    Temat: Re: Zagniezdzone <form>y
    Od: Paweł Piskorz <n...@p...nie?>

    olo wrote:
    > Moge co prawda wyslac edycje takze do tego samego pliku kontrolera,
    > rozpoznac ja jako edycje i wyslac przekierowanie (bo jak wspomnialem nie
    > mam wyslanych zadnych naglowkow), ale potrzebuje przemycic identyfikator
    > rekordu do edycji i nie chcialbym robic tego GETem (estetyka, nigdzie
    > mie mam GET, tylko same POST).

    Po to jest właśnie get. Menu też masz zrobione jako formularz + post?


  • 9. Data: 2009-10-08 05:57:36
    Temat: Re: Zagniezdzone <form>y
    Od: olo <o...@n...com>

    Paweł Piskorz pisze:
    > olo wrote:
    >> Moge co prawda wyslac edycje takze do tego samego pliku kontrolera,
    >> rozpoznac ja jako edycje i wyslac przekierowanie (bo jak wspomnialem nie
    >> mam wyslanych zadnych naglowkow), ale potrzebuje przemycic identyfikator
    >> rekordu do edycji i nie chcialbym robic tego GETem (estetyka, nigdzie
    >> mie mam GET, tylko same POST).
    >
    > Po to jest właśnie get. Menu też masz zrobione jako formularz + post?

    dzien odstepu to jednak dobra ilosc. Chyba jakies zacmienie mialem :|

    Menu odsyla do linkow postaci /modul/dzial/id/ itd.. nie wiem czemu
    myslalem, ze bede musial zbudowac link postaci: /newsy/edytuj/?id=costam
    a nie /newsy/edytuj/costam/

    temat zalatwiony, zagniezdzonych <form> juz nie ma.

    Dzięki wszystkim

    --
    pozdrawiam!

    http://webtrunki.pl - piwa, wina, wódki, domowe wyroby
    ZAPRASZAMY!!


  • 10. Data: 2009-10-08 06:01:19
    Temat: Re: Zagniezdzone <form>y
    Od: olo <o...@n...com>

    Radek N. pisze:
    > 3. Jeśli już muszę przekazywać coś między wywołaniami, to u mnie z
    > reguły z przesłanych danych POSTem tworzy się jakiś tam obiekt. Obiekt
    > mogę serializować. Serializowany obiekt zapisać w zmiennej sesji i
    > przekazywać w ten sposób między wywołaniami... ale to wszystko się
    > komplikuje, więc jeśli masz szanse ominąć ten proces to zrób to.

    mam tak zrobione przekazywanie komunikatow, jesli wysylam żądanie
    przeladowania strony celem usuniecia tablicy post. Komunikaty o ew.
    bledach i informacje przekazywane sa w sesji i jesli istnieja po
    przeladowaniu zczytywane, kasowane z sesji i wyswietlane. Ale
    faktycznie, takiego rozwiazania wolalbym nie stosowac ;)

    Niemniej sprawa sie rozwiazala o czym napisalem w poscie obok. Dzięki za
    naprowadzenie

    --
    pozdrawiam!

    http://webtrunki.pl - piwa, wina, wódki, domowe wyroby
    ZAPRASZAMY!!

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: