Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP]img z możliwością wywołania zapisu do mysql.
Forum PHP.pl > Forum > Przedszkole
casperii
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. });
com
ale ze to nie działa tak?
casperii
@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
com
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?
casperii
@com mógłbyś wskazać drogę ?biggrin.gif jak przypisać ID do ajax ?smile.gif
com
no zrób sobie funkcje i tam przekazuj id jako parametr a potem ja wywołuj, w czym problem?
casperii
@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ś?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.