Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [AJAX][JavaScript]Zapisywanie onclick
Salur
post
Post #1





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Cześć, w jaki sposób mogę przez onclick='przyjmij();' które dodałem w buttonie przyjmowania zlecenia przekazać dane ze zmiennych do bazy mysql? Dodam że żadnego form nie mam w kodzie, jest to sam button.

Ten post edytował Salur 22.07.2015, 20:43:22
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




musisz te dane wyslac na serwer, np. przy pomocy AJAX


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

"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
Salur
post
Post #3





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Mógłbym prosić o jakiś przykład lub linka?

Ten post edytował Salur 22.07.2015, 21:26:10
Go to the top of the page
+Quote Post
webmaniak
post
Post #4





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


To powinno być pomocne:
http://api.jquery.com/jquery.ajax/


--------------------
Pomogłem - kliknij , wprowadziłem w błąd - poinformuj niżej lub na pm.
Go to the top of the page
+Quote Post
MeGusta
post
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Kurczę, dalej nie rozumiem jak mogę naprzykład $zmienna zapisać do ajaxa po kliknięciu onclick i potem ją odebrać jakoś w pliku np. skrypt.php

  1. <?php
  2. $zmienna = 'cos';
  3.  
  4. echo "<input type='submit' value='' onclick='przyjmij()'";
  5.  
  6. ?>


Ten post edytował MeGusta 23.07.2015, 11:46:45
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




A ja nie rozumiem jak mozesz zakladac kilka kont, mimo ze to jest zabronione.


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

"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
Salur
post
Post #7





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Oto co udało mi się zrobić lecz nie działa, nie wyświetla id misji oraz nie przekazuje zmiennej do pliku przyjmij.php.

PS: Konto MeGusta jest mojego brata. Proszę tego nie traktować jako Multikonto. Nie zauwazyłem że jestem zalogowany na jego konto.

  1. function przyjmijMisje(){
  2. $.ajax({
  3. method: "POST",
  4. url: "/pages/przyjmij.php",
  5. data: { id: "<?php $id ?>"}
  6. })
  7.  
  8. .done(function( id ) {
  9. alert( "Przyjęto misje o id: " + id);
  10. });
  11. }


Ten post edytował Salur 23.07.2015, 13:27:41
Go to the top of the page
+Quote Post
webmaniak
post
Post #8





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


A masz bibliotekę jquery?


--------------------
Pomogłem - kliknij , wprowadziłem w błąd - poinformuj niżej lub na pm.
Go to the top of the page
+Quote Post
Salur
post
Post #9





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Tak. Mam w head strony zdefiniowane.
Dodam że wyświetla mi się w alert tylko to: Przyjęto misje o id: bez id ze zmiennej php.

Chcę tylko odebrać zmienna z jednego plku php i przesłać ja do drugiego gdzie obsłuże zapytanie mysql.

Ten post edytował Salur 23.07.2015, 16:25:38
Go to the top of the page
+Quote Post
ctom
post
Post #10





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


może pokaż więcej tego kodu gdzie generujesz te button oraz co masz w pliku /pages/przyjmij.php


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
Salur
post
Post #11





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Główny plik:

  1. $zapytanie = mysql_query("SELECT * FROM quests");
  2.  
  3. while($q = mysql_fetch_assoc($zapytanie)){
  4.  
  5. $gold = $q['gold'];
  6.  
  7. $exp = $q['exp'];
  8.  
  9. $id = $q['id'];
  10.  
  11. $title = $q['title'];
  12.  
  13. echo "<div class='mission'><center><h3>".$q['title']."</h3>";
  14.  
  15. echo "<p>".$q['description']."</p>";
  16.  
  17. }
  18. echo "<br><br><input type='submit' value='Przyjmij' onclick='przyjmijMisje();'></div>";
  19.  


I teraz chcę zmienną $id oraz $title przekazać do pliku przyjmij.php

Przyjmij.php

  1. <?php
  2.  
  3. $id = $_POST['id'];
  4.  
  5. $title = $_POST['title'];
  6.  
  7. $zapytanie = mysql_query("INSERT INTO ......");
  8.  
  9. ?>


Function :

  1. function przyjmijMisje(){
  2. $.ajax({
  3. method: "POST",
  4. url: "/pages/przyjmij.php",
  5. data: { id: "<?php echo $id; ?>"}
  6. })
  7. .done(function( id ) {
  8. alert( "Przyjęto misje o id: " + id);
  9. });
  10. }


Ten post edytował Salur 23.07.2015, 16:34:10
Go to the top of the page
+Quote Post
ctom
post
Post #12





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


no to po kolei:
plik główny:
korzystasz z jQuery więc w linii 18 do tego inputa dodaj atrybuty "data-id" i "data-title" tu masz ściągę https://api.jquery.com/jquery.data/ , lub dodaj wartości jako parametry przy wywołaniu funkcji przyjmijMisje

plik Przyjmij.php
w poniższym skrypcie js oczekujesz, że będzie zwrocona wartość "id" (linia 8) .... a w pliku Przyjmij.php nie zwracasz nic

popraw i wstaw co zrobiłes

Ten post edytował ctom 23.07.2015, 16:45:07


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
Salur
post
Post #13





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Nierozumiem za bardzo jak te atrybuty dodać. Czy tak?

  1. $zapytanie = mysql_query("SELECT * FROM quests");
  2.  
  3. while($q = mysql_fetch_assoc($zapytanie)){
  4.  
  5. $gold = $q['gold'];
  6.  
  7. $exp = $q['exp'];
  8.  
  9. $id = $q['id'];
  10.  
  11. $title = $q['title'];
  12.  
  13. echo "<div class='mission'><center><h3>".$q['title']."</h3>";
  14.  
  15. echo "<p>".$q['description']."</p>";
  16.  
  17. }
  18. echo "<br><br><input type='submit' value='Przyjmij' onclick='przyjmijMisje(data-id, data-title);'></div>";
  19.  

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





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


Cytat(Salur @ 23.07.2015, 17:51:14 ) *
Nierozumiem za bardzo jak te atrybuty dodać. Czy tak?

  1.  
  2. echo "<br><br><input type='submit' value='Przyjmij' onclick='przyjmijMisje(data-id, data-title);'></div>";
  3.  


no nie do końca..... do funkcji jako parametr przekazujesz już wartości zmiennej $id, $ititle ...
a atrybut w <input> to np. value .... gdzie wartością parametry value jest "Przyjmij" ... więc przejrzyj jeszcze raz link, któy Ci wczesniej dałem


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
Salur
post
Post #15





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Czyli powinno wyglądać to tak?

  1.  
  2. echo "<br><br><input type='submit' value='jQuery.data( document.body, "data-id", "data-title" );' onclick='przyjmijMisje();'></div>";
  3.  


Ten post edytował Salur 23.07.2015, 17:01:51
Go to the top of the page
+Quote Post
ctom
post
Post #16





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


chyba się nie nadaje na "nauczyciela" ;-)

wstawienie wartości $id, $title do funkcji :

Kod
echo "<br><br><input type='submit' value='Przyjmij' onclick='przyjmijMisje($id, $title);'></div>";


wstawienie tych wartości jako atrybutów do <input>

Kod
echo "<br><br><input type='submit' value='Przyjmij' data-id='$id' data-title='$title' onclick='przyjmijMisje(this);'></div>";


Twoj funkcja powinna wyglądać tak:

(opcja 1)
Kod
<script>
function przyjmijMisje(paramId, paramTitle){
$.ajax({
  method: "POST",
  url: "/pages/przyjmij.php",
  data: { id: paramId }
})
  .done(function( id ) {
    alert( "Przyjêto misje o id: " + id);
  });
}
</script>


(opcja 2)
Kod
<script>
function przyjmijMisje(el){
$.ajax({
  method: "POST",
  url: "/pages/przyjmij.php",
  data: { id: $(el).data('id') }
})
  .done(function( id ) {
    alert( "Przyjêto misje o id: " + id);
  });
}
</script>


--------------------
Polecam MyDevil hosting idealny dla deweloperów
Go to the top of the page
+Quote Post
Salur
post
Post #17





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


Zrobiłem jak kazałeś, lecz teraz nadal się nie wyświetla id w alercie. Dodatkowo w kodzie strony jak zobaczyłem to atrybuty są uzupełnione id i tytuł więc zmienne php nie są puste.

W pliku przyjmij.php odebrałem id tak: $_POST['id']; i jest ono puste.

KOD:

  1.  
  2. echo "<br><br><input type='submit' value='Przyjmij' data-id='$id' data-title='$title' onclick='przyjmijMisje(this);'></div>";
  3.  
  4. <script>
  5.  
  6. function przyjmijMisje(el){
  7. $.ajax({
  8. method: "POST",
  9. url: "/pages/przyjmij.php",
  10. data: { id: $(el).data('id') }
  11. })
  12. .done(function( id ) {
  13. alert( "Przyjęto misje o id: " + id);
  14. });
  15. }
  16. </script>


Ten post edytował Salur 23.07.2015, 17:44:41
Go to the top of the page
+Quote Post
herbhouse666
post
Post #18





Grupa: Zarejestrowani
Postów: 15
Pomógł: 3
Dołączył: 22.04.2012

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


Dziwne, że Ci to nie działa.

Testowałem tak i wszystko śmiga.

  1. <script src="//code.jquery.com/jquery-2.1.4.js" type="text/javascript" charset="utf-8"></script>
  2.  
  3. function przyjmijMisje(el){
  4. $.ajax({
  5. method: "POST",
  6. url: "pages/przyjmij.php",
  7. data: { id: $(el).data('id') }
  8. })
  9. .done(function( id ) {
  10. alert( "Przyjęto misje o id: " + id);
  11. });
  12. }

  1. <?php
  2. $id = 1;
  3. echo "<br><br><input type='submit' value='Przyjmij' data-id='$id' data-title='$title' onclick='przyjmijMisje(this);'></div>";
  4. ?>

plik przyjmij.php

  1. <?php
  2. print_r($_POST['id']);
  3. ?>


Ten post edytował herbhouse666 23.07.2015, 18:50:32
Go to the top of the page
+Quote Post
Salur
post
Post #19





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 28.12.2014

Ostrzeżenie: (20%)
X----


No właśnie dziwne, w alercie nawet mi id nie pokazuje, zdefiniowałem sobie obok jeszcze $id = '1'; i nadal to samo, nie pokazuje id.
Go to the top of the page
+Quote Post
ctom
post
Post #20





Grupa: Zarejestrowani
Postów: 321
Pomógł: 55
Dołączył: 19.04.2009

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


Cytat(Salur @ 23.07.2015, 19:54:49 ) *
No właśnie dziwne, w alercie nawet mi id nie pokazuje, zdefiniowałem sobie obok jeszcze $id = '1'; i nadal to samo, nie pokazuje id.


jak troszkę włożysz wysiłku by zrozumieć skąd się "bierze" id w tym twoim alercie to wszystko będzie Ci działać


--------------------
Polecam MyDevil hosting idealny dla deweloperów
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 - 19:20