Witam, mam problem z ajax'em

0

Chciałem aby zmiana statystyk odbywała się po stronie klienta, bez konieczności odświeżania strony tak jak jest teraz tylko heh... pierwszy raz używam ajaxa i naprawde chyba nabałaganiłem w kodzie. Więc mam pytanie czy ktoś ma jakiś pomysł, żeby wszystko zmiana statystyk wykonywała się po stronie klienta bez odświeżania całej strony ? Próbowałem coś zrobić z function calculate(), ale nie wiem jak mam ją połączyć i gdzie.

<?
	require_once('/profiles/m/me/men/menelife/menelife.cba.pl/skrypty/funkcje.php');
	require_once('/profiles/m/me/men/menelife/menelife.cba.pl/skrypty/connect_to_db.php');
	
	$User = UserInfo($_SESSION['id']);

	
?>
<script src="//code.jquery.com/jquery-3.1.1.min.js"></script>
    <script>
      function calculate() {
        jQuery.ajax({
          type: 'GET',
          url: 'postac.php',
          data: "value=",
          dataType: 'json',
          success: function(result) {
            console.log(result);
            document.getElementById("sila").innerHTML = result.sila;
            document.getElementById("zrecznosc").innerHTML = result.zrecznosc;
            document.getElementById("inteligencja").innerHTML = result.inteligencja;
          }
        });
      }
    </script>
<?php
if( isset($_GET['value']) ) {
    $value = floatval($_GET['value']);

    $values = array(
      "sila" => ($User['sila']),
      "usd" => ($User['zrecznosc']),
      "sila" => ($User['inteligencja']),
    );

    echo json_encode($values);
  } else {
    echo 0;
  }
	
function typ($player){
	switch($player['typ']) {
		case 1:
			return "menel_miotaczpuszek";
			break;
		case 2:
			return "menel_religijny";
			break;
		case 3:
			return "menel_ruski";
			break;
	}
}
function ranking($user){
	$ask = mysql_query("SELECT * FROM users ORDER BY level DESC");
	$i = 0;
	while($a=mysql_fetch_array($ask)){
		$i++;
		if($a['id'] ==$user['id']){
			echo $i;
			break;
		}
	}
}

$User_typ = typ($User);

if($User['PU'] == 0) 
{
	echo "
	<table style='border: solid 2px black;' width=100%>
	<tr>
		<th> Nazwa: </th><td>".$User['login']. "</td>
	</tr>
	<tr>
		<th> Poziom: </th><td>".$User['level']. "</td>
	</tr>
	<tr>
		<th> Klasa:  </th><td>".$User_typ. "</td>
	</tr>
	<tr>
	<th Ranking </th><td> ".ranking($User). "<td/>
	</tr>
		<th colspan=2>Statystyki || PU: ".$User['PU']. "
			<tr><td>Health Points </td><td>".$User['hp']. "/" .$User['maxhp']. " </td></tr>
			<tr><td>Sila</td><td>".$User['sila']. " </td></tr>
			<tr><td>Pancerz</td><td>".$User['pancerz']. " </td></tr>
			<tr><td>Inteligencja</td><td>".$User['inteligencja']. "</td></tr>
			<tr><td>Zrecznosc</td><td>".$User['zrecznosc']. "</td></tr>
	</th>
<tr>
</tr>
</table>";
} 
else {
	echo "
	<table style='border: solid 2px black;' width=100%>
		<tr>
		<th> Nazwa: </th><td>".$User['login']. "</td>
	</tr>
	<tr>
		<th> Poziom: </th><td>".$User['level']. "</td>
	</tr>
	<tr>
		<th> Klasa: </th><td>".$User_typ."</td>
	</tr>
	<tr>
	<th Ranking </th><td> ".ranking($User). "<td/>
	</tr>
		<th colspan=2>Statystyki || PU: ".$User['PU']. "
			<tr><td>Health Points</td><td>".$User['hp']. "/" .$User['maxhp']." </td></tr>
			<tr><td>Sila</td><td>".$User['sila']. " <a href='?link=postac&akcja=1' > [+1] </a></td></tr> 
			<tr><td>Pancerz</td><td>".$User['pancerz']. " <a href='?link=postac&akcja=2'> [+1] </a></td></tr>
			<tr><td>Inteligencja</td><td>".$User['inteligencja']. "<a href='?link=postac&akcja=3'> [+1] </a></td></tr>
			<tr><td>Zrecznosc</td><td>".$User['zrecznosc']. "<a href='?link=postac&akcja=4'> [+1] </a></td></tr>
	</th>
	</table>";
}
if(isset($_GET['akcja'])) {
	$action = (int)$_GET['akcja'];
	switch($action) {
		case 1:
		if ($User['PU'] > 0) {
		mysql_query("UPDATE Users SET sila=(sila+1), PU=(PU-1) WHERE id='" .$User['id']."'");
		header ("Location: index.php");
		} else 
		{
			echo "<script> alert('Nie posiadasz wystarczajacej liczby punktow umiejetnosci'); </script>";
		}
		break;
		case 2:
		if ($User['PU'] > 0) {
		mysql_query("UPDATE Users SET pancerz=(pancerz+1), PU=(PU-1) WHERE id='" .$User['id']. "'");
		header ("Location: index.php");
		} else 
		{
			echo "<script> alert('Nie posiadasz wystarczajacej liczby punktow umiejetnosci'); </script>";
		}
		break;
		case 3:
		if ($User['PU'] > 0) {
		mysql_query("UPDATE Users SET inteligencja=(inteligencja+1), PU=(PU-1) WHERE id='" .$User['id']. "'");
		header ("Location: index.php");
		} else 
		{
			echo "<script> alert('Nie posiadasz wystarczajacej liczby punktow umiejetnosci'); </script>";
		}
		break;
		case 4:
		if ($User['PU'] > 0) {
		mysql_query("UPDATE Users SET zrecznosc=(zrecznosc+1), PU=(PU-1) WHERE id='" .$User['id']. "'");
		header ("Location: index.php");
		} else 
		{
			echo "<script> alert('Nie posiadasz wystarczajacej liczby punktow umiejetnosci'); </script>";
		}
		break;
		default:
		header("Location: index.php");
	break;
	}
}
?>
0

A w jaki sposób ta funkcja "calculate()" jest uruchamiana. Widzę definicję ale nie widzę odpalenia. Poza tym ten kod łamie chyba wszystkie zasady poprawnej architektury.

0

właśnie zastanawiam się nad jej uruchomieniem, tzn nie wiem gdzie mam ją wstawić żeby się uruchamiała,a jeśli chodzi o zasady poprawnej architektury to już o tym czytam :D

0

Wrzuć to po definicji funkcji "calculate()":

$(document).ready(function(){
    window.setInterval(function(){
             calculate();
    }, 5000);
})
0

Już ogarnąłem, ale dzięki za pomoc temat do zamknięcia :D

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