How do I insert into a database with AJAX method

0 favourites
  • 11 posts
From the Asset Store
Basic Plugins for Firebase Authentication, Realtime-Database, Firestore, Cloud Storage
  • I want to save one variable every 10 sec in the user row.

    My php code:

    <?php
    	// Variables 
    	$nombreUsuario = $_GET['nombreUsuario'];
    	$passUsuario = $_GET['passUsuario'];
    	$distanciaTotal = $_GET['distanciaTotal'];
    	
    	$con=mysqli_connect("mysql","database","userid","password");
    	// Check connection
    	if (mysqli_connect_errno())
    	{
    	 echo "Failed to connect to MySQL: " . mysqli_connect_error();
    	 }
    	$query =("INSERT INTO usuarios_aep (distanciaTotal) VALUES (".$distanciaTotal.") 
    					WHERE nombreUsuario like ".$nombreUsuario." 
    					AND passUsuario like ".$passUsuario." 
    				");
    	$mysqli->query($query);
    	
    	mysqli_close($con);
    ?>[/code:tb2wf9on]
    
    event "every 10 sec"
    [code:tb2wf9on]"http://fakefake.com/fakefake/php/insertDistanciaTotal.php?nombreUsuario='"&nombreUsuario&"'&passUsuario='"&passUsuario&"'&distanciaTotal='"&distanciaTotal&"'"[/code:tb2wf9on]
  • After connecting, and after you have done the INSERT query, with your current approach with using a Ajax GET request, the following should work.

    [quote:33zcixpd]$query =("UPDATE usuarios_aep SET distanciaTotal = '".$distanciaTotal."' WHERE nombreUsuario = '".$_GET['nombreUsuario']."' AND passUsuario = '".$_GET['passUsuario']."' ");

    $mysqli->query($query);

    I would suggest switching to post methods, otherwise it would become very easy to cheat

  • After connecting, and after you have done the INSERT query, with your current approach with using a Ajax GET request, the following should work.

    [quote:2jh1h120]$query =("UPDATE usuarios_aep SET distanciaTotal = '".$distanciaTotal."' WHERE nombreUsuario = '".$_GET['nombreUsuario']."' AND passUsuario = '".$_GET['passUsuario']."' ");

    $mysqli->query($query);

    I would suggest switching to post methods, otherwise it would become very easy to cheat

    I come back with more problems!!

    Actually I have this php in my server, I tested it from chrome and it works, makes the UPDATE correctly.

    <?php
    	// Variables 
    	$nombreUsuario = "XXuser";
    	$passUsuario = "XXpass";
    	$distanciaTotal = $_GET['distanciaTotal'];
    	
    	$con=mysqli_connect("blablabla.com","blebleble","bliblibli","blublublu");
    	// Check connection
    	if (mysqli_connect_errno())
    	{
    	 echo "Failed to connect to MySQL: " . mysqli_connect_error();
    	 }
    	$qz =("UPDATE usuarios_aep SET distanciaTotal = '".$distanciaTotal."' 
    				WHERE nombreUsuario = '".$nombreUsuario."' 
    				AND passUsuario = '".$passUsuario."' 
    			");
    			
    	if (mysqli_query($con, $qz)) {
    		echo "Record updated successfully";
    	} else {
    		echo "Error updating record: " . mysqli_error($con);
    	}
    	mysqli_close($con);
    ?>[/code:2jh1h120]
    
    The problem appears when c2 has send (POST or GET method) the data to php, it seems that I am not sending data at all...  so I think that the problem is in the next images (the AJAX connection) but I don't know how to solve it.
    [img="http://www.therealgeekgirl.com/server1.jpg"]
    [img="http://www.therealgeekgirl.com/server2.jpg"]
  • yeah remove the single qoutes in the data entry.

    Resulting in : "distanceTotal="&distanciaTotal

    To add more

    "distanceTotal="&distanciaTotal&"&playerID="&SomeConstruct2Var

    Result would look like

    "distanceTotal=100&playerID=10"

  • yeah remove the single qoutes in the data entry.

    Resulting in : "distanceTotal="&distanciaTotal

    To add more

    "distanceTotal="&distanciaTotal&"&playerID="&SomeConstruct2Var

    Result would look like

    "distanceTotal=100&playerID=10"

    Hello again, first of all so many thanks you !!

    It seems I can connect properly to send data to mysql db, my problem now is that I can't acces to data from the db!! My problem now is in the loging.

    My construct call is this:

    "http://myweb.com/myproject/php/login.php?nombreUsuario=" & nombreUsuario & "&passUsuario=" & passUsuario[/code:3tqmklo3]
    
    An this is my php wich is actually working properly (i tested it):
    
    [code:3tqmklo3]<?php
    	// Variables 
    	$nombreUsuario = $_GET['nombreUsuario'];
    	$passUsuario = $_GET['passUsuario'];
    	
    	$con=mysqli_connect("blebleble","bliblibli","blobloblo","blublublu");
    	// Check connection
    	if (mysqli_connect_errno())
    	{
    	 echo "Failed to connect to MySQL: " . mysqli_connect_error();
    	 }
    	$qz = "SELECT idUsuario FROM usuarios_aep where nombreUsuario='".$nombreUsuario."' and passUsuario='".$passUsuario."'" ;
    	$qz = str_replace("\'","",$qz);
    	$result = mysqli_query($con,$qz);
    	
    	if ($result->num_rows > 0) {
    		while($row = $result->fetch_assoc()){
    			echo $row["idUsuario"];
    		}
    	} else {
    		echo "Error al acceder a los datos: " . mysqli_error($con);
    	}
    	mysqli_close($con);
    ?>[/code:3tqmklo3]
    
    I try to get as data "idUsuario" and I save this id in a variable, but when I run my project in debug mode the content of that variable is NaN (not a Number). I'm not sure what is happening, any idea??
    
    thanks.
  • yeah remove the single qoutes in the data entry.

    Resulting in : "distanceTotal="&distanciaTotal

    To add more

    "distanceTotal="&distanciaTotal&"&playerID="&SomeConstruct2Var

    Result would look like

    "distanceTotal=100&playerID=10"

    Hello again, first of all so many thanks you !!

    It seems I can connect properly to send data to mysql db, my problem now is that I can't acces to data from the db!! My problem now is in the loging.

    My construct call is this:

    "http://myweb.com/myproject/php/login.php?nombreUsuario=" & nombreUsuario & "&passUsuario=" & passUsuario[/code:3dvx20px]
    
    An this is my php wich is actually working properly (i tested it):
    
    [code:3dvx20px]<?php
    	// Variables 
    	$nombreUsuario = $_GET['nombreUsuario'];
    	$passUsuario = $_GET['passUsuario'];
    	
    	$con=mysqli_connect("blebleble","bliblibli","blobloblo","blublublu");
    	// Check connection
    	if (mysqli_connect_errno())
    	{
    	 echo "Failed to connect to MySQL: " . mysqli_connect_error();
    	 }
    	$qz = "SELECT idUsuario FROM usuarios_aep where nombreUsuario='".$nombreUsuario."' and passUsuario='".$passUsuario."'" ;
    	$qz = str_replace("\'","",$qz);
    	$result = mysqli_query($con,$qz);
    	
    	if ($result->num_rows > 0) {
    		while($row = $result->fetch_assoc()){
    			echo $row["idUsuario"];
    		}
    	} else {
    		echo "Error al acceder a los datos: " . mysqli_error($con);
    	}
    	mysqli_close($con);
    ?>[/code:3dvx20px]
    
    I try to get as data "idUsuario" and I save this id in a variable, but when I run my project in debug mode the content of that variable is NaN (not a Number). I'm not sure what is happening, any idea??
    
    thanks.
  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • NaN means Not a Number. Save the output in a text variable and check what it says. Also I would suggest to use PDO rather than mysqli.

  • NaN means Not a Number. Save the output in a text variable and check what it says. Also I would suggest to use PDO rather than mysqli.

    If I change the variable to text the return is "" too, I think the problem is in the request but I can't find the error.

  • If you still use GET methods you should be able to use that link:

    "http://myweb.com/myproject/php/login.php?nombreUsuario=" & nombreUsuario & "&passUsuario=" & passUsuario

    as

    http://myweb.com/myproject/php/login.ph ... sUsuario=1

    in the browser and see if you get the results you are expecting. (just replace 10 and 1 with actual numbers)

    You could perhaps enable error reporting in PHP, or add a : echo mysql_error(); below the query.

    But, if you switched from GET methods to POST methods, you should update your PHP to reflect that.

    ie

    the $_GET['meh']

    should become

    $_POST['meh']

  • Make sure you use PreparedStatements, please!

    Don't end up like this:

  • Finally i found the error. The php code need "header("Access-Control-Allow-Origin: *");" in their header

    Rookie mistake , thanks for the help.

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)