Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX][MySQL][PHP]Zmiana wartości pola w bazie
djgarsi
post
Post #1





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Witam. Próbuję właśnie zrobić regulację wartości pola (+/-) w bazie danych.
Wygląda to mniej więcej tak: + 10 -, po kilknięciu na + chcę aby zwiększyła się wartość pola w bazie np o 5 i w miejscu 10 pojawiło się 15.

Obecnie stworzyłem skrypt ajax'a ale nie działa.
Kod
$(window).load(function(){
    function zwieksz(id){
        $.ajax({
           type: "POST",
           url: "zm_ob.php?id=" + id + "",
           data: "akcja=dodaj",
           success: function(wynik) {
            $("#ile").html(wynik)
           }
          });
          return false;
    }
    function zmniejsz(id){
        $.ajax({
           type: "POST",
           url: "zm_ob.php?id=" + id + "",
           data: "akcja=odejmij",
           success: function(wynik) {
            $("#ile").html(wynik)
           }
          });
          return false;
    }
});


plik zm_ob.php zawiera:
  1. //polaczenie z baza jest
  2. $id = $_GET['id.'];
  3. $Query= 'SELECT id,wartosc FROM tabela WHERE id = "'.$id.'"';
  4. $result = mysql_query($Query) or die(mysql_error());
  5. while($rt = mysql_fetch_array($result)) {
  6. $how = $rt['wartosc'];
  7. }
  8. $decrease = 'UPDATE tabela SET wartosc=wartosc-5 WHERE id = "'.$id.'"';
  9. $increase = 'UPDATE tabela SET wartosc=wartosc+5 WHERE id = "'.$id.'"';
  10. if($_POST['akcja']=='dodaj') {
  11. mysql_query($increase);
  12. $how += 5;
  13. echo $how;
  14. }
  15. elseif($_POST['akcja']=='odejmij') {
  16. mysql_query($decrease);
  17. $how -= 5;
  18. echo $how;
  19. }


I teraz pytanie czy da się coś z tym zrobić?

Ten post edytował djgarsi 30.03.2014, 18:54:00


--------------------
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


data: "akcja=odejmij",
sprawdz jeszcze raz jak to powinno wygladac
Go to the top of the page
+Quote Post
trueblue
post
Post #3





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


  1. $id = $_GET['id'];
?
A oprócz tego obydwa skrypty zmieniłbym tak:
  1. function zmien(id,typ){
  2. $.ajax({
  3. type: "POST",
  4. url: "zm_ob.php?id=" + id + "",
  5. data: {'akcja':typ}, //Turson ma rację
  6. success: function(wynik) {
  7. $("#ile").html(wynik)
  8. }
  9. });
  10. return false;
  11. }

  1. if($_POST['akcja']=="dodaj"||$_POST['akcja']=="odejmij"){
  2. $zmien = 'UPDATE tabela SET wartosc=wartosc+'.($_POST['akcja']=="odejmij"?"-":"").'5 WHERE id = "'.$id.'"';
  3. mysql_query($zmien);
  4. $how=$how+($_POST['akcja']=="odejmij"?-5:5);
  5. echo $how;
  6. }


Ten post edytował trueblue 30.03.2014, 19:37:30


--------------------
Go to the top of the page
+Quote Post
djgarsi
post
Post #4





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


rozumiem że link wywołujący funkcję powinien wyglądać np tak:
  1. <a href="java script:zmien(1,dodaj); return false;">Dodaj</a> <span id="ile">tu wartosc</span> <a href="java script:zmien(1,odejmij); return false;">Odejmij</a>

Dobrze myślę?


--------------------
Go to the top of the page
+Quote Post
trueblue
post
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Prawie, bo typ przesyłasz jako string, więc:
  1. <a href="java script:zmien(1,'dodaj'); return false;">Dodaj</a> <span id="ile">tu wartosc</span> <a href="java script:zmien(1,'odejmij'); return false;">Odejmij</a>

Ale nie musisz tego przesyłać tak, równie dobrze możesz podać 0 (dla dodaj), 1 (dla odejmij) i odpowiednio zmodyfikować skrypt PHP.


--------------------
Go to the top of the page
+Quote Post
djgarsi
post
Post #6





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Kod
SyntaxError: return not in function
zmien(1,'dodaj'); return false;


Konsola wywala coś takiego.


--------------------
Go to the top of the page
+Quote Post
trueblue
post
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Nie zwracaj nic jeśli jesteś w "href", czyli samo wywołanie funkcji, bez return false;


--------------------
Go to the top of the page
+Quote Post
djgarsi
post
Post #8





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Kod
ReferenceError: zmien is not defined


Teraz to. Plik z funkcją js jest dodany do head.

Ten post edytował djgarsi 30.03.2014, 19:58:23


--------------------
Go to the top of the page
+Quote Post
trueblue
post
Post #9





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Wrzuć trochę więcej kodu.
Wytnij to czego nie chcesz pokazywać.


Ten post edytował trueblue 30.03.2014, 21:32:01


--------------------
Go to the top of the page
+Quote Post
djgarsi
post
Post #10





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


HTML gdzie dane będą prezentowane:
  1. <a href="java script:zmien(<?php echo $id_ob; ?>,'dodaj');" ><i class="glyphicon glyphicon-plus"></i></a> <span id="ile"><?php echo $obciazenie; ?></span> <a href="java script:zmien(<?php echo $id_ob; ?>,'odejmij');"><i class="glyphicon glyphicon-minus"></i></a></p>


JS:
  1. $(window).load(function(){
  2. function zmien(id,typ){
  3. $.ajax({
  4. type: "POST",
  5. url: "zm_ob.php?id=" + id + "",
  6. data: {'akcja':typ}, //Turson ma rację
  7. success: function(wynik) {
  8. $("#ile").html(wynik)
  9. }
  10. });
  11. return false;
  12. }
  13. });


PHP:
  1. include('db_connect.php');
  2. $id = $_GET['id'];
  3. if($_POST['akcja']=="dodaj") {
  4. $zmien = 'UPDATE treningi SET obciazenie=obciazenie+5 WHERE id = "'.$id.'"';
  5. mysql_query($zmien);
  6. $how=$how+5;
  7. echo $how;
  8. }
  9. if($_POST['akcja']=="odejmij") {
  10. $zmien = 'UPDATE treningi SET obciazenie=obciazenie-5 WHERE id = "'.$id.'"';
  11. mysql_query($zmien);
  12. $how=$how-5;
  13. echo $how;
  14. }


Co może być nie tak?


--------------------
Go to the top of the page
+Quote Post
IProSoft
post
Post #11





Grupa: Zarejestrowani
Postów: 479
Pomógł: 97
Dołączył: 6.09.2011
Skąd: php.net :)

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


Wyrzuć funkcję zmien() poza $(window).load i wtedy sprawdź.


--------------------
Manual prawdę Ci powie.
Go to the top of the page
+Quote Post
djgarsi
post
Post #12





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Cytat(IProSoft @ 30.03.2014, 23:47:20 ) *
Wyrzuć funkcję zmien() poza $(window).load i wtedy sprawdź.


Nic to nie daje.


--------------------
Go to the top of the page
+Quote Post
trueblue
post
Post #13





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Może ta literówka:
  1. href="java script:


--------------------
Go to the top of the page
+Quote Post
djgarsi
post
Post #14





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


No właśnie to parser forum tę spację dodaje. W kodzie jest ok.


--------------------
Go to the top of the page
+Quote Post
trueblue
post
Post #15





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


A po radzie IProSoft, aby wyrzucić poza "load", gdzie wrzuciłeś funkcję? Nie czasem do "ready"?


--------------------
Go to the top of the page
+Quote Post
djgarsi
post
Post #16





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Też na to wpadłem. Próbowałem w load, ready i bez obu. to samo za każdym razem.


--------------------
Go to the top of the page
+Quote Post
trueblue
post
Post #17





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Zostaw tak jak jest niżej, bez żadnych zmian, działa (oczywiście status żądania będzie 404)?
  1. <!DOCTYPE>
  2. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  3. <script type="text/javascript">
  4. function zmien(id,typ){
  5. $.ajax({
  6. type: "POST",
  7. url: "blabla.php?id=" + id + "",
  8. data: {'akcja':typ},
  9. success: function(wynik) {
  10. $("#ile").html(wynik)
  11. }
  12. });
  13. return false;
  14. }
  15.  
  16. </head>
  17. <a href="java script:zmien(1,'dodaj');" >dodaj<i class="glyphicon glyphicon-plus"></i></a>
  18. <span id="ile">1</span>
  19. <a href="java script:zmien(1,'odejmij');">odejmij<i class="glyphicon glyphicon-minus"></i></a>
  20. </body>
  21. </html>


--------------------
Go to the top of the page
+Quote Post
djgarsi
post
Post #18





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

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


Tu jest link do działania.


--------------------
Go to the top of the page
+Quote Post
nospor
post
Post #19





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




Nie:
<a href="java script:zmien(1,'dodaj');" >dodaj<i class="glyphicon glyphicon-plus"></i></a>

a:
<a href="#" onclick="zmien(1,'dodaj');return false;" >dodaj<i class="glyphicon glyphicon-plus"></i></a>

Analogicznie reszta


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
trueblue
post
Post #20





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


nospor, tyle, że w przypadku podpięcia pod href również powinno działać (i działa).


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 20.08.2025 - 10:34