Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP] Wysłanie zapytania po upływie kilku sekund
Forum PHP.pl > Forum > Przedszkole
bubusek
Witam serdecznie.

Prosił bym o podpowiedzi co zrobić by zapytanie do bazy danych zostało wykonane dopiero po upływie np 10 sekund od załadowania się strony?
tehaha
setTimeOut + http://api.jquery.com/jQuery.ajax/
bubusek
A więc zrobiłem coś takiego:
  1. <script type="text/javascript">
  2. setTimeout ( "doSomething()", 5000 );
  3.  
  4. function doSomething ( )
  5. {
  6. <?php
  7. mysql_query("UPDATE xx SET xxx='yyy' WHERE xxxx='yyyy'");
  8. ?>
  9. }
  10. </script>


Lecz jak sprawdziłem nie działa. Jakieś wskazówki smile.gif ?
luck
Nie ma tak łatwo smile.gif Dostałeś odpowiedź z linkiem wyżej. Użyj do tego jQuery i jego funkcji np. $.post lub $.get.
Edit: jeden z pierwszych przykładów z google:
[JAVASCRIPT] pobierz, plaintext
  1. function call() {
  2. $.get("response.php", function(data) {
  3. alert("Request sent");
  4. });
  5. window.setTimeout("call();", 10000);
  6. }
[JAVASCRIPT] pobierz, plaintext
tehaha
wewnątrz funkcji doSomethint() wstaw jquery ajax-> masz tam dział examples http://api.jquery.com/jQuery.ajax/, ten kod php co napisałeś zapisz w oddzielnym pliku php, który będzie wywoływany przez ajax, żeby to działało musisz załączyć bibliotekę jquery, i cały ten ten kod co napisałeś opakuj w http://api.jquery.com/ready/
bubusek
Cytat(luck @ 10.11.2010, 20:11:01 ) *
Nie ma tak łatwo smile.gif Dostałeś odpowiedź z linkiem wyżej. Użyj do tego jQuery i jego funkcji np. $.post lub $.get.
Edit: jeden z pierwszych przykładów z google:
[JAVASCRIPT] pobierz, plaintext
  1. function call() {
  2. $.get("response.php", function(data) {
  3. alert("Request sent");
  4. });
  5. window.setTimeout("call();", 10000);
  6. }
[JAVASCRIPT] pobierz, plaintext



hmm czyli ten kod powinien działać a w pliku

response.php powinienem mieć
  1. <?php
  2. mysql_query("UPDATE xx SET xxx='yyy' WHERE xxxx='yyyy'");
  3. ?>


i po 10 sekundach wykona to zapytanie ?
Jeśli tak to niestety nie działa... ehh chyba powinien być jeszcze dział żłobek a nie tylko przedszkole ;]



_________________________


Cytat(tehaha @ 10.11.2010, 21:34:06 ) *
wewnątrz funkcji doSomethint() wstaw jquery ajax-> masz tam dział examples http://api.jquery.com/jQuery.ajax/, ten kod php co napisałeś zapisz w oddzielnym pliku php, który będzie wywoływany przez ajax, żeby to działało musisz załączyć bibliotekę jquery, i cały ten ten kod co napisałeś opakuj w http://api.jquery.com/ready/


No to próbuje smile.gif

Ok jakieś postępy już są bo coś się zaczyna dziać po określonym czasie tyle że jeszcze nie to co chce smile.gif

Mam taki kod:

  1. <style>p { color:red; }</style>
  2. <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  3. $(document).ready(function () {
  4. $("p").text("The DOM is now loaded and can be manipulated.");
  5. });
  6. </script>
  7.  
  8. </head>
  9.  
  10. <script type="text/javascript">
  11. setTimeout ( "doSomething()", 5000 );
  12.  
  13. function doSomething ( )
  14. {
  15.  
  16. $.ajax({
  17. type: "POST",
  18. url: "kosz3.php",
  19. data: "name=John&location=Boston",
  20. success: function(msg){
  21. alert( "Data Saved: " + msg );
  22. }
  23. });
  24.  
  25. }
  26.  
  27. </body>
  28. </html>


I po pięciu sekundach zamiast wykonać zapytanie jakie jest na stronie kosz3.php
to wyświetla mi kod źródłowy tej strony.

Dodatkowo już mi się nasuwa następny problem. na stronie z kodem umieszczonym wyżej pobieram dane z :
  1. addslashes($_GET['']);

a tu wychodzi ze zapytanie do bazy muszę zadać na nastepnej stronie (kosz3.php)
jak więc przesłać tam te dane pobrane tutaj z get?
konrados
No to jeszcze pokaż kosz3.php

Cytat
a tu wychodzi ze zapytanie do bazy muszę zadać na nastepnej stronie (kosz3.php)
jak więc przesłać tam te dane pobrane tutaj z get?


np:
  1. $.ajax({
  2. type: "POST",
  3. url: "kosz3.php",
  4. data: "<?php echo 'someData='.$_GET['someData'].'"';?>,
  5. success: function(msg){
  6. alert( "Data Saved: " + msg );
  7. }
  8.  
  9. });


(jeśli dobrze zrozumiałem problem)
tehaha
nie jestem specem od jquery ale wydaje mi się, że ten kod między linijkami 15-30 musi być objęty funkcją jquery ready
bubusek
Cytat(konrados @ 10.11.2010, 22:33:47 ) *
No to jeszcze pokaż kosz3.php


Tam jest tylko zapytanie do bazy smile.gif




Cytat(tehaha @ 10.11.2010, 22:48:54 ) *
nie jestem specem od jquery ale wydaje mi się, że ten kod między linijkami 15-30 musi być objęty funkcją jquery ready


hmm o tak ? ;
  1. <html>
  2. <head>
  3. <style>p { color:red; }</style>
  4. <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  5. <script>
  6. $(document).ready(function () {
  7. $("p").text("The DOM is now loaded and can be manipulated.");
  8. });
  9. </script>
  10.  
  11. </head>
  12. <body>
  13.  
  14. <script type="text/javascript">
  15. jQuery(document).ready(function($) {
  16. setTimeout ( "doSomething()", 5000 );
  17.  
  18. function doSomething ( )
  19. {
  20.  
  21. $.ajax({
  22. type: "POST",
  23. url: "kosz3.php",
  24. data: "<?php echo 'someData='.$_GET['someData'].'"';?>,
  25. success: function(msg){
  26. alert( "Data Saved: " + msg );
  27. }
  28. });
  29.  
  30. }
  31. });
  32. </script>
  33.  
  34. </body>
  35. </html>


Tylko teraz nic się nie dzieje winksmiley.jpg
konrados
  1. $(document).ready(function() {
  2. setTimeout ( "doSomething()", 5000 );
  3. });

a reszta tak jak miałeś.
Działa? Jak nie, to podejrzyj źródło, może jakiś tam cudzysłów się zawieruszył.
Poza tym ściągnij sobie Firebuga (dodatek do firefoxa)

Cytat
to wyświetla mi kod źródłowy tej strony.

A na pewno zamknąłeś kod w kosz3.php w znaczniki <?php ... ?>
bubusek
Ok no więc prawie już działa. Mianowice działa wywołanie zpytania umieszczonego w kosz3.php ale gdy chce użyć przesłanie "get-a" to już nie. kody wyglądają tak
  1. <html>
  2. <head>
  3. <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  4. </head>
  5. <body>
  6.  
  7. <?php
  8. $aaa = addslashes($_GET['aaa']);
  9. ?>
  10.  
  11. <script type="text/javascript">
  12.  
  13. $(document).ready(function() {
  14. setTimeout ( "doSomething()", 5000 );
  15. });
  16.  
  17. function doSomething ( )
  18. {
  19.  
  20. $.ajax({
  21. type: "POST",
  22. url: "kosz3.php",
  23. data: "<?php echo 'someData='.$_GET['someData'].'';?>",
  24. });
  25.  
  26. }
  27.  
  28. </script>
  29.  
  30. </body>
  31. </html>



i
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
  2. <HTML>
  3. <HEAD>
  4. </HEAD>
  5. <BODY>
  6.  
  7.  
  8. <?php
  9.  
  10. include('baza.php');
  11.  
  12. $aaa = addslashes($_GET['aaa']);
  13. $bbb = mysql_fetch_array(mysql_query("SELECT xxx FROM yyy WHERE zzz='$aaa'"));
  14. $ccc = $bbb[0] + 1;
  15.  
  16.  
  17. mysql_query("UPDATE yyy SET xxx='$ccc' WHERE zzz='$aaa'") or die (mysql_error());
  18.  
  19.  
  20. ?>
  21.  
  22.  
  23. </BODY>
  24. </HTML>

CuteOne
chcesz get a używasz post o.O

$.ajax({
type: "GET",
url: "kosz3.php",
data: "fuck=yeaaa",
});
bubusek
wciąż nie działa
konrados
@bubusek:
Wróć do tego kodu co miałeś, ale zamień type: "POST" na type: "GET"
I musi zadziałać.

A no i zwróć uwagę jakie zmienne przekazujesz. Czyli w kosz3.php zrób:

$aaa = addslashes($_GET['someData']);

Zamiast $aaa = $_GET['aaa'];
CuteOne
up: szybszy ;p
bubusek
Cytat(konrados @ 11.11.2010, 10:50:53 ) *
@bubusek:
Wróć do tego kodu co miałeś, ale zamień type: "POST" na type: "GET"
I musi zadziałać.

A no i zwróć uwagę jakie zmienne przekazujesz. Czyli w kosz3.php zrób:

$aaa = addslashes($_GET['someData']);

Zamiast $aaa = $_GET['aaa'];


Stary kod nie cały jest mi potrzebny więc go skróciłem o te wyświetlanie informacji w alercie no ale ok dla sprawdzenia wróciłem do starego i również nie działa, oto kody:

  1. <html>
  2. <head>
  3. <style>p { color:red; }</style>
  4. <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  5. <script>
  6. $(document).ready(function () {
  7. $("p").text("The DOM is now loaded and can be manipulated.");
  8. });
  9. </script>
  10.  
  11. </head>
  12. <body>
  13.  
  14. <?php
  15.  
  16. $aaa = addslashes($_GET['aaa']);
  17.  
  18. ?>
  19.  
  20. <script type="text/javascript">
  21. $(document).ready(function() {
  22. setTimeout ( "doSomething()", 5000 );
  23. });
  24.  
  25. function doSomething ( )
  26. {
  27.  
  28. $.ajax({
  29. type: "GET",
  30. url: "kosz3.php",
  31. data: "<?php echo 'someData='.$_GET['someData'].'';?>",
  32. success: function(msg){
  33. alert( "Data Saved: " + msg );
  34. }
  35. });
  36.  
  37. }
  38. </script>
  39.  
  40. </body>
  41. </html>


i

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
  2. <HTML>
  3. <HEAD>
  4. </HEAD>
  5. <BODY>
  6.  
  7.  
  8. <?php
  9.  
  10. include('baza.php');
  11.  
  12. $aaa = addslashes($_GET['someData']);
  13.  
  14. $bbb = mysql_fetch_array(mysql_query("SELECT xxx FROM yyy WHERE zzz='$aaa'"));
  15. $ccc = $bbb[0] + 1;
  16.  
  17.  
  18. mysql_query("UPDATE yyy SET xxx='$ccc' WHERE zzz='$aaa'") or die (mysql_error());
  19.  
  20.  
  21. ?>
  22.  
  23.  
  24. </BODY>
  25. </HTML>
konrados
Aż normalnie wziąłem i sprawdziłem i ... działa!

Możesz powiedzieć co nie działa?

Ten plik, w którym wywołujesz setTimeout, ajax, alert etc. wywołujesz tak: nazwa_pliku.php?someData=cosDoPrzekazania

w kosz3.php zrobiłem:
  1. echo $_GET['someData'];


I zgodnie z oczekiwaniami zobaczyłem "cosDoPrzekazania" w alercie.

To weź powiedz co konkretnie nie działa: wywołanie ajaxowe, przekazanie zmiennej someData, czy Twój skrypt kosz3.php nie robi tego co oczekujesz? Jeśli to ostatnie to może wywołaj kosz3.php?someData=cosTam by zobaczyć czy działa ok.
bubusek
No tak ale ze mnie gapa sciana.gif

Wywoływałem ciągle tak: nazwa_pliku.php?aaa=cosDoPrzekazania dlatego mi nie działało, już pozmieniałem i teraz działa wszystko ładnie i zbędnego alerta też sobie wyłączyłem.

Na koniec jeszcze tylko pytanie co do:
  1. <script src="http://code.jquery.com/jquery-latest.min.js"></script>

Jak sprawdziłem by wszystko działało ten kod musi się być na stronie.
Ale teraz tak. Odnosi się on do kodu który nie znajduje się na mojej stronie wiec czy to jest tylko przykład który trzeba sobie zapisać na swoim serwerze i ustawić adres swój czy można korzystać z niego w takiej formie (jak by nie było wykorzystuje wtedy za każdym załadowaniem strony nie swój transfer a przy dużym ruchu to nie małe ilości)?
Jeśli jednak trzeba go zgrać u siebie to czy rzeczywiście wszystko co w nim jest, jest potrzebne czy można go uszczuplić smile.gif ?
konrados
Możesz sobie tak używać, ale lepiej użyć google cdn (jest szybsze):

  1. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>


A jak z jakiegoś powodu Ci zależy, to możesz też wstawić na własny serwer.

I owszem - wszystko co w nim jest, jest potrzebne.
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.