Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX][PHP]img z możliwością wywołania zapisu do mysql.
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Panowie chce stworzyć by po kliknięciu w img zapisywało mi do bazy aktualny status - czyli wł / wył.
Produkty wyświetlam sobie pętlą while z bazy mysql. Obok tych produktów (przy każdym produkcie z osobna) chcę ustawić img_on / img_off
Reasumując jeśli w bazie mam status=on przy produkcie pojawi mi się obrazek img_on - po jego kliknięciu podmienia mi się na obrazek img_off a w bazie pojawia mi się status =off.

Wiem, że trzeba użyć ajax by nie przeładowało mi strony. Dodatkowo musiałbym przekazywać do ajaxa dany ID produktu by odpowiedni status produktu aktualizować. Czy dodatkowo w tym przypadku każdy img_on/img_off musiał by mieć inny ID ?

Myślałem nad czymś takim :

  1. <!-- tu pobierałbym sobie czy img jest on czy off -->
  2. <img src="img_on.jpg"/>
  3. $('img').on({
  4. 'click': function() {
  5. var src = ($(this).attr('src') === 'img_on.jpg')
  6. ? 'img_off.jpg'
  7. : 'img_on.jpg';
  8. $(this).attr('src', src);
  9. }
  10. });
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
com
post
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


ale ze to nie działa tak?
Go to the top of the page
+Quote Post
casperii
post
Post #3





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@com Działa, ale musiałem włożyć to w:

  1. $(window).load(function(){
  2. });


Ale chyba img musiałbym przy każdym produkcie zastąpić unikalnym ID i jeśli mam w bazie 100 produktów to x tyle samo funkcji ? - absurd ?

Po trzecie - muszę przypisać zdarzenie ajax i w nim przekazać postem ID danego produktu który będzie updatować w bazie on /off

Ten post edytował casperii 14.02.2016, 17:12:21
Go to the top of the page
+Quote Post
com
post
Post #4





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


Cytat
Ale chyba img musiałbym przy każdym produkcie zastąpić unikalnym ID i jeśli mam w bazie 100 produktów to x tyle samo funkcji ? - absurd ?

poco?

Cytat
Po trzecie - muszę przypisać zdarzenie ajax i w nim przekazać postem ID danego produktu który będzie updatować w bazie on /off


no owszem, wiec?
Go to the top of the page
+Quote Post
casperii
post
Post #5





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@com mógłbyś wskazać drogę ?(IMG:style_emoticons/default/biggrin.gif) jak przypisać ID do ajax ?(IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
com
post
Post #6





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


no zrób sobie funkcje i tam przekazuj id jako parametr a potem ja wywołuj, w czym problem?
Go to the top of the page
+Quote Post
casperii
post
Post #7





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@com zrobiłem coś takiego:

  1. <script type='text/javascript'>
  2. $(window).load(function(){
  3. $("#ikonka").click(function(){
  4. var data_id = $(this).attr('data-uid');
  5. var status = $(this).attr('data-status');
  6. $.ajax({
  7. type: 'POST',
  8. url: "/ajax.php",
  9. data: { edit:1, id:data_id, status:status },
  10. success: function(data) {
  11.  
  12. var url4 = window.location.href;
  13. setTimeout(function() {
  14. window.location.reload(url4);
  15. location.reload(true);
  16. }, 100);
  17.  
  18. var src = ($(this).attr('src') === '/images/icon_off.png')
  19. ? '/images/icon_on.png'
  20. : '/images/icon_off.png';
  21. $(this).attr('src', src);
  22.  
  23. }
  24.  
  25.  
  26.  
  27.  
  28. });
  29. });
  30. });

  1. while($rowp = mysql_fetch_array($result)){
  2. <img class="img" id="ikonka" data-uid="'.$rowp['id'].'" data-status="'.$rowp['onoff'].'" src="/images/icon_');if($rowp['onoff']=='0'){print('off');}else{print('on');}print('.png" style="cursor:pointer;">');
  3. }


Niestety to co powyżej wskazałem działa tylko dla pierwszego rekordu. Wiem, że problem tkwi w tym, że wszystkie rekordy w pętli while mają te same ID - i to chyba jest problem?

Po drugie:
  1. var src = ($(this).attr('src') === '/images/icon_off.png')
  2. ? '/images/icon_on.png'
  3. : '/images/icon_off.png';
  4. $(this).attr('src', src);


Chyba włożone w złym miejscu bo jakoś nie spełnia swojego zadania dlatego zrobiłem tak:

  1. var url4 = window.location.href;
  2. setTimeout(function() {
  3. window.location.reload(url4);
  4. location.reload(true);
  5. }, 100);


Ale to powoduje wymuszenie odświeżenia - a zamierzonym moim celem jest updatowanie bez przeładowania przeglądarki.

Może ktoś naprowadzić ?

pomoże ktoś?
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: 25.08.2025 - 16:30