Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP/HTML] Dwa formy na stronie i problem (wysyła oba?)
zaaap
post 29.11.2008, 20:25:26
Post #1





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 13.11.2008

Ostrzeżenie: (0%)
-----


Witam,
Na stronie mam dwa lub wiecej <form> (submit). Załozmy ze jeden jest do edytowania artykułu a drugi do napisania nowego. Kiedy wciskam wysylanie nowego to updetuje mi ostatni napisany artykul.
Krotkie pytanie; czy kazdy form zbiera dane tylko "swoje"? Czy tez wysyla wszystkie formy z calej strony? Jesli tak to czy trzeba nadawac im rozne nazwy (formom)? I jak to odebrac w skrypcie wykonujacym?

Ten post edytował zaaap 29.11.2008, 20:39:58
Go to the top of the page
+Quote Post
erix
post 29.11.2008, 21:10:30
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie wiem, jak to masz w kodzie, ale na stronie mogą być niezależne formularze. winksmiley.jpg

Albo coś pomieszałeś po stronie HTML (nie wiem, jak się zachowuje formularz w formularzu; jak coś, to ta metoda jest niezgodna ze specyfikacją, o ile pamiętam), albo nie rozróżniasz, który formularz jaką akcję wykonuje.

Cytat
I jak to odebrac w skrypcie wykonujacym?

No normalnie tongue.gif Dodaj jakiś parametr w np. $_GET albo pole typu hidden i jedziesz.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
zaaap
post 29.11.2008, 21:40:19
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 13.11.2008

Ostrzeżenie: (0%)
-----


No niestety wyglada jakby submit wysłał wszystkie formy ze strony.
Gdzies na necie było cos takiego:

  1. <input type="submit" name="button_1" />
  2. </form>
  3.  
  4. <input type="submit" name="button_2" />
  5. </form>


Akcja:
  1. <?php
  2. if ($this->_request->getPost('button_1'))
  3.  // wysłano formularz 1
  4. else if ($this->_request->getPost('button_2'))
  5. // wysłano formularz 2
  6. ?>

Jednak nie moge sobie pozwolic na cos takiego, gdyz to wymaga oddzielnego bloku intrukcji dla kazdego unikalnego submita, a jesli bedzie 100 komentarzy to nie bede wkladal 100 skupiowanych blokow instrukcji do skryptu wykonywalnego.
Go to the top of the page
+Quote Post
batman
post 29.11.2008, 21:43:48
Post #4





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Zamiast bawić się w pisanie ręczne formularzy, skorzystaj z Zend_Form.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
zaaap
post 29.11.2008, 21:59:06
Post #5





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 13.11.2008

Ostrzeżenie: (0%)
-----


Nie jest to pisanie reczne, tylko automatyczne tworzenie dla kazdego komentarza. Nie chce wchodzic w nowy system, tylko sprytnie wykorzystac to co daje php i html.
Go to the top of the page
+Quote Post
batman
post 29.11.2008, 22:01:01
Post #6





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Przecież nie wchodzisz w nowy system. W końcu używasz Zend Frameworka. Co za problem wykorzystać Zend_Form?


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
zaaap
post 29.11.2008, 22:06:06
Post #7





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 13.11.2008

Ostrzeżenie: (0%)
-----


Np to, ze ma byc to mobilne, jako, ze pisze to na zaliczenie. A nie bede doktorkowi kazal instalowac zenda
Go to the top of the page
+Quote Post
batman
post 29.11.2008, 22:14:40
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Czyli nie używasz ZF?
To mnie zmyliło
  1. <?php
  2. $this->_request->getPost('button_1')
  3. ?>
Identyczna składnia.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
zaaap
post 29.11.2008, 23:16:14
Post #9





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 13.11.2008

Ostrzeżenie: (0%)
-----


Wiem wiem, moglo zmylic. To jest rozwiazanie stosowane w ZF (male niedopatrzenie przy wklejaniu). Natomiast potrzebne mi jest bez uzycia ZF

Hmmm, a zastosowanie czegos takiego:

  1. <form name="myform" action="handle-data.php">
  2. Search: <input type='text' name='query'>
  3. <A href="javascript: submitform()">Search</A>
  4. </form>
  5. <script language="JavaScript">
  6. function submitform()
  7. {
  8. document.myform.submit();
  9. }


Ma sens? Dodam, ze nazwy beda modyfikowane z uzyciem zmiennej z petli php, czyli
Kod
<forma name="myform<?php echo $i; ?>"
i to samo w skrypcie. Bedzie to spelnialo fukcje wysylania tylko okreslonego forma?

Ten post edytował zaaap 29.11.2008, 23:16:48
Go to the top of the page
+Quote Post
erix
post 29.11.2008, 23:51:29
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A czemu nie możesz użyć zwykłego elementu submit?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
zaaap
post 29.11.2008, 23:55:26
Post #11





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 13.11.2008

Ostrzeżenie: (0%)
-----


no tak jak pisalem na poczatku. Na jednej stronie (komentarze) bedzie co najmniej dwa pola formularza do wysłania. Np. opcja dodaj komentarz i opcja edytuj. Robiac zwykle submit mam wrazenie ze wysylane sa oba (tzn na pewno cos jest nie tak, bo dodania komentarza dziala tylko wtedy gdy nie ma zadnych dodanych wczesniej, po dodaniu chocj jednego jest kompletny sajgon), a maja rozne wartosci na "values", wiec jest to problem, bo chcac przekazac dajmy na to zmienna "id" ktora wynosi 5, przekazuje mi "id" równe 0 (z drugiego forma).
Go to the top of the page
+Quote Post
erix
post 30.11.2008, 10:41:53
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A czytałeś uważnie, o czym ja wcześniej pisałem?
Cytat
No normalnie tongue.gif Dodaj jakiś parametr w np. $_GET albo pole typu hidden i jedziesz.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
zaaap
post 30.11.2008, 12:57:08
Post #13





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 13.11.2008

Ostrzeżenie: (0%)
-----


Cytat(erix @ 30.11.2008, 10:41:53 ) *
A czytałeś uważnie, o czym ja wcześniej pisałem?


A czytales co ja pisalem? Wiem jak odebrac normalne dane w skrypcie wykonywalnym, nie wiem jak zrobic zeby wysylalo jednego submita z wielu znajdujacych sie na stronie. Bo jestem prawie pewien z doswiadczenia jak i lektury na necie, ze sa zsyłane wszystkie formy naraz i po to nadawane sa atrybuty name.
Go to the top of the page
+Quote Post
lukasz_os
post 30.11.2008, 13:13:36
Post #14





Grupa: Zarejestrowani
Postów: 203
Pomógł: 55
Dołączył: 23.11.2008
Skąd: UKF

Ostrzeżenie: (0%)
-----


Mozesz przeciez kazdy formularz obslugiwac w oddzielnym pliku php i wtedy twoje problemy znikna.

Pozdrawiam.


--------------------
Pomagam jeśli mam czas oraz jak się na tym znam :D
Go to the top of the page
+Quote Post
zaaap
post 30.11.2008, 13:26:56
Post #15





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 13.11.2008

Ostrzeżenie: (0%)
-----


Cytat(lukasz_os @ 30.11.2008, 13:13:36 ) *
Mozesz przeciez kazdy formularz obslugiwac w oddzielnym pliku php i wtedy twoje problemy znikna.

Pozdrawiam.


Nie, nie moge. Gdyz: jeden formularz bedzie do pisania komentarza. A np. 5 formularzy do ich edytowania. Jesli ktos jest w grupie moderatorow to pod kazdym komentem jest rysowany ukryty div z formem zawierajacym tresc komentarza do ktorego sie odwoluje. Moglem to zrobic niejako w oddzielnym pliku, tzn getem przekazać informacje jaki to komentarz itp do pliku edytuj_kom.php (na przyklad), ale zalezalo mi na tym zeby mozna bylo edytowc komenty "w locie" bez nadmiernego skakania po stronach.
Go to the top of the page
+Quote Post
erix
post 30.11.2008, 13:29:58
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Nie wiem, czy dobrze zrozumiałem, bo troszkę zamotałeś.

Cytat
nie wiem jak zrobic zeby wysylalo jednego submita z wielu znajdujacych sie na stronie.

No to jeden submit na formularzu; i mają hulać niezależnie - osobiście czegoś takiego używam w prostym skrypcie i nie ma problemów.

Cytat
ale zalezalo mi na tym zeby mozna bylo edytowc komenty "w locie" bez nadmiernego skakania po stronach

AJAX?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
phpion
post 30.11.2008, 13:33:11
Post #17





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(zaaap @ 30.11.2008, 14:57:08 ) *
Bo jestem prawie pewien z doswiadczenia jak i lektury na necie, ze sa zsyłane wszystkie formy naraz i po to nadawane sa atrybuty name.

Widocznie wiesz lepiej niż osoby starające się tobie pomóc.

Mając na stronie klika formularzy wysyłany jest tylko ten, który został wysłany - przecież to jest logiczne. Mając X formularzy, w każdym przycisk submit, wysyłasz tylko ten, na którym naciśniesz ów przycisk.
Go to the top of the page
+Quote Post
zaaap
post 30.11.2008, 13:36:16
Post #18





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 13.11.2008

Ostrzeżenie: (0%)
-----


Cytat(erix)
AJAX?


Zebym to ja umiał >.<
Go to the top of the page
+Quote Post
erix
post 30.11.2008, 13:39:04
Post #19





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




http://www.letmegooglethatforyou.com/?q=aj...torial%20jquery

sciana.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
zaaap
post 30.11.2008, 23:21:53
Post #20





Grupa: Zarejestrowani
Postów: 106
Pomógł: 0
Dołączył: 13.11.2008

Ostrzeżenie: (0%)
-----


Cytat(erix @ 30.11.2008, 13:39:04 ) *


dry.gif Tu mnie masz. Dzieki, przyjrze sie jak wroce do domu happy.gif

Nie chcac tworzyc nowego tematu, a ten jest zwiazany z tytułowym to pisze tutaj.

W koncu udało mi sie zrobic wysyłanie tych formów, modyfikując trochę skrypt javy, lecz nie wiedziec czemu przy wysyłaniu forma, który ma edytowac komentarz, do bazy danych zawsze zostają przesłane dane ostatniego komentarza
  1. <?php
  2. $kom = intval($_REQUEST['artykul']);
  3.  
  4.  $lacz1 = lacz_bd();
  5.  $komentuj= "select * from komentarze
  6.          where id_kom = '$kom' order by czas asc";
  7.          
  8.    $wiersz = $lacz1->query($komentuj);
  9. (...)
  10. while ($kom = $wiersz->fetch_assoc())
  11. {
  12. $i++;
  13.  
  14. echo '<tr><td><font class="komenty">'.$i.'. <span class="kom_autor">'.$kom['kto'].'</span> / <span class="kom_data">'.date('d.m.Y, H:i', $kom['czas']).'</span>';
  15. if (sprawdz_uwierz_uzyt())
  16. {
  17. ?>
  18.  
  19. <a class="two" href="usun_komentarz.php?id=<?php echo $kom['id']; ?>">[U</a>/<a class="two" href="java script:animatedcollapse.toggle('jason<?php echo $i; ?>')">E]</a></font><br>
  20. <div id='jason<?php echo $i; ?>' style="display:none;">
  21. <form action="komentarz_wyslij.php" method="post" enctype="multipart/form-data" name="form<?php echo $i; ?>">
  22. <input type="hidden" name="art" value="<?php echo $art; ?>"><input type="hidden" name="updejt" value="1"><input type="hidden" name="identyf" value="<?php echo $kom['id']; ?>">
  23.  
  24. <table width="790" align="center" border="0">
  25. <tr>
  26.  <td><font class="komenty"><br />Autor</font></td>
  27. </tr>
  28. <tr>
  29.  <td><input type="text" name="autor" size="40" value="<?php echo $kom['kto'];?>"></td>
  30. </tr>
  31.  
  32. <tr>
  33.  <td><font class="komenty">Tekst komentarza (może zawierać znaczniki HTML)</font></td>
  34. </tr>
  35. <tr>
  36.  <td><textarea cols="80" rows="7" name="tekst_komentarza" wrap="virtual"><?php echo $kom['komentarz'];?></textarea>
  37.  </td>
  38. </tr>
  39. <tr>
  40.  <td><A  href="java script: submitkoment()">Gotowe</A></td></form>
  41. </tr>
  42. <script language="JavaScript">
  43. function submitkoment()
  44. {
  45. document.form<?php echo $i; ?>.submit();
  46. }
  47. </script>
  48. </table>
  49. </div>
  50. <?php
  51. }
  52. echo '</font></td></tr><tr><td><div class="komtext">'.$kom['komentarz'].'</div></td></tr><tr><td>&nbsp;</td></tr></table>';
  53. }

Sprawdziłem dane jakie sa przesyłane do skryptu wykonywalnego, i są to dane ostatniego komentarza, nawet kiedy edytuje pierwszy.
Dziwnym jest tez fakt, że:
Kod
<a class="two" href="usun_komentarz.php?id=<?php echo $kom['id']; ?>">
zwraca dobre id komentarza (link do usuniecia i usuwa prawidłowy komentarz), natomiast juz w
Kod
<input type="hidden" name="identyf" value="<?php echo $kom['id']; ?>">
zdaje sie, ze powinna siedziec ta sama wartosc pola, natomiast przekazywana jest inna. O co tu chodzi?

Jeszcze dodam, ze kiedy rozwijam formularz do edycji to sa w nim poprawne dane, tzn autor i tekst tego artykułu, który chce edytowac. Takze dopiero przy nacisnieciu submit musi wariowac z tego co widze...

Ten post edytował zaaap 1.12.2008, 00:51:54
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 07:10