Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][JavaScript]Zapisywanie onclick
Forum PHP.pl > Forum > Przedszkole
Salur
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.
nospor
musisz te dane wyslac na serwer, np. przy pomocy AJAX
Salur
Mógłbym prosić o jakiś przykład lub linka?
webmaniak
To powinno być pomocne:
http://api.jquery.com/jquery.ajax/
MeGusta
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. ?>
nospor
A ja nie rozumiem jak mozesz zakladac kilka kont, mimo ze to jest zabronione.
Salur
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. }
webmaniak
A masz bibliotekę jquery?
Salur
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.
ctom
może pokaż więcej tego kodu gdzie generujesz te button oraz co masz w pliku /pages/przyjmij.php
Salur
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. }
ctom
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
Salur
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.  

ctom
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
Salur
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.  
ctom
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>
Salur
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>
herbhouse666
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. ?>
Salur
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.
ctom
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ć
Salur
No właśnie, wystarczyło troszkę ruszyć głową. Dziękuję wszystkim za pomoc.

Teraz kwestia czy ja coś muszę w tej funkcji zmienić żeby wykonał sie ten skrypt php z pliku przyjmij.php? Bo okej, zmienna jest w tym pliku i zapytanie które sprawdziłem w mysql i nic nie dodaje do bazy.
herbhouse666
Daj cały kod to powiem Ci co masz żle.
Salur
przyjmij.php
  1. <?php
  2. ?>
  3. <?php
  4. $uzytkownik = $_SESSION['user'];
  5.  
  6. $user_id = $_SESSION['id_user'];
  7.  
  8. $id = $_POST['id'];
  9.  
  10. echo $_POST['id'];
  11.  
  12. if ($_POST['id']) {
  13.  
  14. $zapytanie = mysql_query("INSERT INTO `quest_postac` (
  15. `id` ,
  16. `id_quest` ,
  17. `id_gracz` ,
  18. `status` ,
  19. `ile` ,
  20. `co`
  21. )
  22. VALUES (
  23. 'NULL', '$id', '$user_id', '1', '0', '0'
  24. )");
  25.  
  26. echo '<br><span style="color: green"> przyjęto misje</span>';
  27.  
  28. }


Funkcja z innego pliku:

  1. <script>
  2. function przyjmijMisje(el){
  3. $.ajax({
  4. method: "POST",
  5. url: "pages/przyjmij.php",
  6. data: { id: $(el).data('id') }
  7. })
  8. .done(function( id ) {
  9. alert( "Przyjęto misje o id: " + id);
  10. });
  11. }
  12.  
  13. </script>
herbhouse666
Wszystko śmiga (Nie wiem jakiej biblioteki jQuery używasz, ale użyj tej z pliku):
kod inny plik:
Kod
<script src="//code.jquery.com/jquery-2.1.4.js" type="text/javascript" charset="utf-8"></script>
<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>
<?php
$id = 1;
echo "<br><br><input type='submit' value='Przyjmij' data-id='$id' data-title='$title' onclick='przyjmijMisje(this);'></div>";
?>


kod przyjmij.php
Kod
<?php
session_start();
?>
<?php
print_r($_POST);//DOTESTU
mysql_connect('localhost','root','') or//DOTESTU
die('Serwer Error!');//DOTESTU
mysql_select_db('ajax') or die('Database Error!');//DOTESTU

$uzytkownik = $_SESSION['user'];//DOTESTU
$user_id = 232;//DOTESTU
$id = $_POST['id'];

echo $_POST['id'];

if ($_POST['id']) {

    $sql = "INSERT INTO `quest_postac`(`id`, `id_quest`, `id_gracz`, `status`, `ile`, `co`) VALUES ('','$id','$user_id','3','4','5')";
    $query = mysql_query($sql);

}
?>
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.