🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #231492

Re: Panie Lemat pomożesz?

#231492
From: Lemat
Date: Tue, 22 Nov 2016 17:29
53 lines
3333 bytes
W dniu 22.11.2016 o 16:29, w systemie siła 'PO/EU pisze:
> dzięki za zainteresowanie
>
> chodzi mi o takie jakby zagnieżdżenie formularzy
>
> czyli mamy jeden formularz zewnętrzny obejmujący wpisy na całej stronie,
> a drugi formularz wewnętrzny obejmujący tylko jeden wpis na stronie - i
> takich N razy

<form>ularzy się nie zagnieżdża.

Posłużę się przykładem z twojej ulubionej dziedziny. Wyobraź sobie 
arkusz excela w kolumnami: imię, nazwisko, przynależność do Partii.
Arkusz ma zatem 3 kolumny i N wierszy.

Standardowo <form> otacza cały arkusz przesyłając do skryptu PHP 
wszystkie pola czyli 3*N zmiennych.

Jeżeli otoczyć <form>ularzami każdy wiersz osobno to masz N formularzy - 
o ile dobrze pamiętam submit jednego z nich przesyła do skryptu PHP 
tylko pola w nim zawarte - czyli 3 sztuki.
Ale każdy submit powoduje przeładowanie strony i utratę zmian 
przeprowadzonych w innych wierszach.
Aby wiedzieć który wiersz został przesłany daje się jakiegoś hiddena z 
unikalnym identyfikatorem.

Można jednak przechwycić JavaScriptem zdarzenie onsubmit formularza, 
zapakować hiddena + 3 zmienne do struktury AJAXowej, wysłać do skryptu 
PHP, skrypt PHP zwraca kawałek tekstu, który AJAX odbiera i można z nim 
coś zrobić - na przykład napis "dupa" jeżeli wybrana Partia nie jest 
jedyną słuszną. Funkcja obsługująca onsubmit zwraca false zapobiegając 
przeładowaniu strony i wysłaniu formularza tradycyjną drogą.

Można też Javascriptem przechwycić zdarzenia onblur lub onchange 
konkretnego inputa. Do inputa musiałbyś dodawać niestandardowe atrybuty 
pozwalające zidentyfikować wiersz oraz kolumnę. Te atrybuty oraz wartość 
pola pakujesz w strukturę AJAXową, wysyłasz do skryptu PHP, skrypt PHP 
odpowiada tekstem, który możesz jakoś wykorzystać.


Do poduszki:
http://www.w3schools.com/jsref/event_onsubmit.asp
http://www.w3schools.com/jsref/event_onblur.asp
http://www.w3schools.com/jsref/event_onchange.asp
http://www.w3schools.com/jsref/dom_obj_event.asp
http://www.w3schools.com/xml/ajax_intro.asp
http://www.w3schools.com/tags/att_global_data.asp

PS. napis "dupa" stosuję osobiście kiedy debuguję skrypty - więc nie ma 
się czego wstydzić.
-- 
Pozdrawiam
Lemat
Technical Details
Message-ID: <58348076$0$640$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <o0q0ge$f00$1@node2.news.atman.pl> <58308b69$0$5143$65785112@news.neostrada.pl> <o11o8j$u3a$1@node2.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: Panie Lemat pomożesz?
Newsgroups: pl.comp.lang.php
References: <o0q0ge$f00$1@node2.news.atman.pl> <58308b69$0$5143$65785112@news.neostrada.pl> <o11o8j$u3a$1@node2.news.atman.pl>
From: Lemat <#@lemat.priv.pl>
Date: Tue, 22 Nov 2016 18:29:37 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0
MIME-Version: 1.0
In-Reply-To: <o11o8j$u3a$1@node2.news.atman.pl>
Lines: 53
Message-ID: <58348076$0$640$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 79.189.200.118
X-Trace: 1479835766 unt-rea-b-01.news.neostrada.pl 640 79.189.200.118:55857
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit