Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX][HTML][PHP]Zapis poszczególnych rekordów
krzesik
post
Post #1





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


Witam, mam tabelkę:
  1. echo '<td>
  2. <form method="POST" id="form" name="kod" action="">
  3. <div class="loader"></div>
  4. <input type="hidden" name="id" value='.$r[id].'></input>
  5. <input type="text" name="kod" title="Kod" value='.$r[kod].' ></input>
  6. <button type="submit" id="submit" value=Zatwierdź><img src=img/ikony/Save.png title=Zapisz! style=width:15px;height:15px;border:0px; /></button>
  7. </form></td>';
  8.  

i do tego skrypt:
  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3. $('#submit').click(function() {
  4.  
  5. $.ajax({
  6.  
  7. type: "POST",
  8.  
  9. url: "zapisz.php",
  10.  
  11. data: $("#form").serialize(),
  12.  
  13. beforeSend: function() {
  14.  
  15. $('.loader').html('<img src="ajax-loader.gif" />').show();
  16.  
  17. },
  18.  
  19. dataType: "html",
  20.  
  21. success: function(result) {
  22.  
  23. $("#error_message").html(result);
  24.  
  25. $('.loader').html('<img src="ajax-loader.gif" />').hide();
  26. },
  27. error: function(xhr, ajaxOptions, thrownError) {
  28.  
  29. alert(xhr.status);
  30.  
  31. alert(thrownError);
  32.  
  33. alert(ajaxOptions);
  34.  
  35. $('.loader').html('<img src="ajax-loader.gif" />').hide();
  36. }
  37. });
  38. return false;
  39. });
  40.  
  41. });
  42.  
  43. </script>
  44.  


w każdym rekordzie mam inputa do wpisania oraz przycisk zapisz, chcę zapisywać bez przeładowywania strony, zapisuje poprawnie, ale wyłącznie pierwszy rekord, co mam skopane? Dziękuję za odpowiedź

Ten post edytował krzesik 5.07.2016, 12:08:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zawsze serializujesz tylko pierwszego forma wiec tylko on sie zapisuje. Dosc logiczne
Go to the top of the page
+Quote Post
krzesik
post
Post #3





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


W jaki sposób to naprawić?

data: $("#form'.$r[id].'").serialize(), ?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zakladam ze masz wiele formow.
Jesli tak to nie nadawaj im takiego samego ID. Poprostu po kliknieciu submit znajdz TD do jakiego nalezy to submit ($(this).parents("td:first")) a potem znajdz form lezacy w tym TD

$(this).parents("td:first").find("form").serialize();
Go to the top of the page
+Quote Post
krzesik
post
Post #5





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


Dziękuję za starania, ale AJAX-a dopiero się uczę i nie wiem jak to zastosować co mi zapisałeś :-(
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Podalem ci PELEN GOTOWY kod...

zamiast
data: $("#form").serialize(),

masz dac

data:$(this).parents("td:first").find("form").serialize(),
Go to the top of the page
+Quote Post
krzesik
post
Post #7





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


tak też się domyśliłem, ale po zmianie dalej mi zapisywało wyłącznie pierwszy rekord, więc myślałem że coś znów skopałem. co może być jeszcze nie tak?
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Dla button submit nadaj klase np. class="submit" a potem
nie: $('#submit')
a: $('.submit')
Go to the top of the page
+Quote Post
krzesik
post
Post #9





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


Dziękuję, pomogło! I jeszcze jedno pytanie, jak spowodować że po zapisie "wypozycjonuje" mi się rekord na górze strony?

Ten post edytował krzesik 5.07.2016, 13:09:09
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Tak wiec zapamietaj jedna podstawowa rzecz a w zasadzie dwie:
1) Problem co tu miales nie ma zadnego zwiazku z AJAX
2) $("#cos") szuka elementu o ID cos i zwraca tylko pierwszy napotkany element. ID to ID i ma byc unikalne a nie 1000 elementow ma to samo ID. Jak masz wiec wiele elementow robiacych to samo to nadawaj im klasy i operuj na klasach
Go to the top of the page
+Quote Post
krzesik
post
Post #11





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


więc jeśli miałem ID (unikalny) dla każdego rekordu tabeli
  1. <input type="hidden" name="id" value='.$r[id].'></input>


to mógłbym to zrobić tak:?
  1. .....................
  2. <form method="POST" id="form'.$r[id].'" name="kod" action="">
  3. .....................
  4.  
  5. data: $("#form'.$r[id].'").serialize(),
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie, poniewaz funkcja zapisu jest jedna a nie dla kazdego rekordu oddzielnie
Go to the top of the page
+Quote Post
krzesik
post
Post #13





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


Rozumiem teraz, napiszę raz jeszcze:
I jeszcze jedno pytanie, jak spowodować że po zapisie "wypozycjonuje" mi się rekord na górze strony?
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A teraz to pomyliles fora. Wrozki pietro wyzej (IMG:style_emoticons/default/tongue.gif)

A skad ja mam wiedziec co ty masz na gorze strony i co i gdzie ma ci sie "wypozycjonowac".
Go to the top of the page
+Quote Post
viking
post
Post #15





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Zrobisz to np. http://api.jquery.com/insertbefore/
Natomiast success, error są od jquery 3 przestarzałe. Zamień na done i fail jeśli nie chcesz mieć problemów.
Go to the top of the page
+Quote Post
krzesik
post
Post #16





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


chodziło mi o to, że jeśli zapisuję np 65 rekord czyli gdzieś po środku tabeli, po zapisie ten rekord "ustawi się " przy górnej krewędzi okna
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 15:52