Xajax lub Ajax opóźnienie wykonania zapytania mysql

0

Siemka! Chciałbym opóźnić wykonanie zapytania mysql o jakies 5-10 sekund! Mam pytanko jak można by to zrobic czego szukać konkretnie na necie przejrzałem już o Xajaxie i Ajaxie ale czegos takiego nie znalazłem prosze o pomoc

0

Niemozliwe, abys nie znalazl nieczego o ajax'ie.
Poza tym, niepodales jezyka.
Php, tak?

0

Nie no znalazłem o Ajaxie ale jak wykonać w nim zapytanie mysql_query to nie wiem
Tak pisze normalną stonkę w php i chciałbym dołożyć wykonanie operacji po jakimś czasie bez przeładowania strony

0

To nie dziala tak latwo, jak Ci sie wydaje.
Uzywayjac jQuery mozna zrobic to tak:

function DoIt()
{
 $.get("http://mojastrona.pl/zapytanie.php", function(data)
 {
  $("moj_div").html(data)
 });
}

$(document).ready(function()
{
 setInterval(5000, DoIt)
});

Np.takie cos.
W pliku php moze byc:

<?php
include("main.php")
ConnectToDB()
$Zapytanie = MySQL_Query("...")
print $Zapytanie
?>

Oczywiscie - mozna je jakos sformatowac, pododawac jakies bajery, jednak ogolnie, to mniej-wiecej tak wyglada.
Ale to wszystko znalazlbys w pierwszym-lepszym tutorialu...

PS: Jezeli beda bledy, to przepraszam, ale nie mam czasu sprawdzac kodu ;)

0

Nie ma jakiejś prostszej metody? Zrobiłem sobie już ładny odliczacz i tylko zostało mi opóźnienie :) myślałem że zwykłym sleepem się da to załatwić

0

Przeczytaj jakies kursy o jQuery, ogolnie o Ajax'ie, a poznasz swoja odpowiedz.

PS: Jezeli kod ma sie wykonac 1 raz, a nie w nieskonczonosc (tak jak u mnie), to zamien setInterval na setTimeout

0
<script type="text/javascript">
function showUser(str)
{
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","podstrona.php?zmienna="+str,true);
xmlhttp.send();
}
</script>

mam coś takiegotylko mam pytanie czy muszę coś zaimportować zeby to działało w sekcji head? uruchamiam to w body onload a jak mozna by to opóźnić?

0

1.Trzeba było użyć jQuery, ale skoro chcesz się tak męczyć z tym...
2.Nic nie musisz dodawać do kodu (jeszcze).
3:
setTimeout(milisekundy, funkcja) -> pojedyncze wywołanie kodu po 'milisekundy' (przerwa, wywołanie funkcji)
setInterval(milisekundy, funkcja) -> ciągłe wywoływanie kodu z przerwą 'milisekundy' (wywołanie funkcji, przerwa, wywołanie funkcji, przerwa, itd.)

Czyli w twoim przypadku będzie to tak:

<script>
(tutaj twoja funkcja)
setTimeout(5000, "showUser(tutaj nie wiem, co wpisać)")
</script>

1 sekunda = 1000 milisekund

PS: Tego twojego kodu nie sprawdzałem, ponieważ tak 'bezpośrednio'(jeżeli można to tak nazwać) Ajax'a nie kojarzę, zawsze korzystam z frameworków ;)

0

Teraz mam taki problemmam tam ten swój plik ktory się ma wykonać po 5 sekundach jak wywołuję go z przeglądarki to wszystko działa a jak z tej podstrony co bym chciał to już nie za bardzo getem pobieram wszystko normalnie przekazuję ale nic to nie daje

0

Pokaż, jaki kod masz aktualnie.

0

Bo wywołuję to tak?

<body onload="showUser('.$_GET['user'].');"> Sry że tak truję
0

Trochę źle.
Spróbuj tak:

echo "<body onload ='showUser(\"".$_GET['user']."\");'>"

W przeglądarce będzie to wyglądać tak (przyjmując, że $_GET['user'] = "admin")

<body onload='showuser("admin");'></body>

Czyli OK.

Spróbuj tak ;)

0
<script type="text/javascript">
function showUser(str)
{
if (str=="")
  {
  document.getElementById("link").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("link").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","strona.php?user="+str,true);
xmlhttp.send();
}
setTimeout(5000, "showUser($_GET['user']));

</script>

wywołuję tak jak wyżej

<body onload="showUser('.$_GET['user'].');">

i w tym pliiku strona.php mam coś takiego

<?php
require "connection.php";
connection();
$user = $_GET['user'];
$sql="Moje zapytanie";
$result = mysql_query($sql);
echo "Zapytanie wykonano";
?> 

tak jak mówię jak z ręki wywołuje to stronę to do bazy sie wszystko wrzuca tak jak należy

0

Działa to w body miałem źle wielkie dzięki Ci dobry człowieku!

0

Tylko teraz nie działa opóźnienie
setTimeout(9000, "showUser(str)"); coś takiego ma być dokładnie

0

A gdzie masz zadeklarowaną zmienną str?

0

function showUser(str) to nie o to chodzi?

0

Ach...

function showUser(str)

Oznacza, że funkcja showUser wymaga podania parametru 'str'

Jeżeli wywołasz:

setInterval(9000, "showUser(str)")

Będzie to oznaczać, że przeglądarka ma znaleźć zmienną "str", a przecież takowa nie istnieje.

function showUser(str)

Jest parametrem, a nie zmienną (niby podobne, a jednak inne)

To tak, jakbyś chciał wywołać strona.php?user=
Ponieważ zmienna str nie istnieje jest ona zastępowana albo pustym ciągiem znaków, albo dana część kodu się nie wykonuje.
Zobacz log JavaScript'u (zależy od przeglądarki, gdzie on jest), a zobaczysz tam błędy i parę innych przydatnych rzeczy.


Ogólnie polecam przeczytać tutoriale o JS'ie.

0

setTimeout(9000, "showUser($_GET['user'])");
ale takie coś nie śmiga a taki chciałem przyjąć parametr wywołania

0

Proszę:

<?php
echo "
<script> (skrypt)
setTimeout(9000, \"showUser('".$_GET['user']."')\");
</script>";

?>

Powinno być OK.

0

Co maszna mysli pisząc (skrypt)
ja mam tą funkcję showUser w head a to wywołuję gdzieś dalej tak

0

Tak, w miejsce (skrypt) dajesz swoją procedurę, lecz ja ten kod PHP dałem tylko tak poglądowo.

0

Cały czas mam to odpalac w body normalnie tak?

0

Oczywiście, lecz trochę po zmianie:

<head>
<script>
(tutaj funkcja showUser)

function Wykonaj()
{
 setTimeout(9000, \"showUser('".$_GET['user']."')\");
}
</script>
</head>
<body onload="Wykonaj()">
(dalsza część dokumentu)

Powinno być dobrze ;)

0
<script type="text/javascript">
function showUser(str)
{
if (str=="")
  {
  document.getElementById("link").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("link").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","pkt.php?user="+str,true);
xmlhttp.send();
}
function Wykonaj()
{
 setTimeout(5000, "\showUser('<?php echo $_GET['user'];?>')\");
}


</script>  

i wywołanie

<body onload="Wykonaj()";>  

i ciągle nic

0

w sensie że się ta funkcja nie wykonuje

0

<body onload="Wykonaj();">
Miałeś średnik w złym miejscu.

0

Nic to nie daje czy tu na pewno jest wszystko ok?

setTimeout(5000, "\showUser('<?php echo $_GET['user'];?>')\");
0

Hm...

setTimeout(5000, "showUser('".$_GET['user']."')");
0

I tak bez żadnego <?php ?> jak ma sobie tego geta pobrać?

1 użytkowników online, w tym zalogowanych: 0, gości: 1