Actualizar base de datos con AJAX de forma simple

  • Autor Autor JoseCuevas
  • Fecha de inicio Fecha de inicio
JoseCuevas

JoseCuevas

Iota
Verificación en dos pasos activada
Verificado por Whatsapp
Hola betas buenas tardes y feliz día de las madres para la madre que lea esto :encouragement:

Tengo una pregunta, es posible actualizar una base de datos a través de un comando AJAX?

No s si me explico, pero con el comando deseo actualizar la tabla de una base de datos pero ocupo hacerlo con una linea ajax...

Si es posible, sería estupendo si podrían darme un ejemplo :/

Gracias a todos...
 
Claro que es posible 😀

Te dejo un pequeño ejemplo:

JS:
Insertar CODE, HTML o PHP:
$(document).ready(function() {
	$("button").on("click", function() {
		$.ajax({
			url: 'ajax.php',
			data: {name:'kanikase'},
			type: 'POST',
			success: function(respuesta) {
				alert(respuesta);
			},
			error: function() {
				alert('Error!');
			}
		});
	});
});

PHP:
PHP:
<?php
$conexion = mysqli_connect('localhost', 'admin', '12345', 'bd_name');
$SQL = "UPDATE `users` SET `name`='{$_POST['name']}' WHERE `id`=1";
if(mysqli_query($conexion, $SQL))
	echo 'Datos actualizados!';
?>

:encouragement: 😀
 
Claro que es posible 😀

Te dejo un pequeño ejemplo:

JS:
Insertar CODE, HTML o PHP:
$(document).ready(function() {
	$("button").on("click", function() {
		$.ajax({
			url: 'ajax.php',
			data: {name:'kanikase'},
			type: 'POST',
			success: function(respuesta) {
				alert(respuesta);
			},
			error: function() {
				alert('Error!');
			}
		});
	});
});

PHP:
PHP:
<?php
$conexion = mysqli_connect('localhost', 'admin', '12345', 'bd_name');
$SQL = "UPDATE `users` SET `name`='{$_POST['name']}' WHERE `id`=1";
if(mysqli_query($conexion, $SQL))
	echo 'Datos actualizados!';
?>

:encouragement: 😀

En la base de datos puse esto:

PHP:
 <?php
$conexion = mysqli_connect('localhost', 'admin', '12345', 'bd_name');
$SQL = "UPDATE wpq4_users SET points = points+1 WHERE ID='".$cu->ID."'"; 
if(mysqli_query($conexion, $SQL))
    echo 'Datos actualizados!';
?>

Está bien escrito para que actualice el campo points sumandole uno a la tabla de usuarios, no?

Entiendo que
HTML:
$(document).ready(function() {
	$("button").on("click", function() {
		$.ajax({
			url: 'ajax.php',
			data: {name:'kanikase'},
			type: 'POST',
			success: function(respuesta) {
				alert(respuesta);
			},
			error: function() {
				alert('Error!');
			}
		});
	});
});
Es el código para sumar los puntos, el código javascript, sin embargo, el comando ajax debo utilizarlo aquí:
PHP:
var monitor = setInterval(function(){
    var elem = document.activeElement;
    if(elem && elem.tagName == 'IFRAME'){
		<!-- El comando AJAX debe ir aquí -->
        clearInterval(monitor);
    }
}, 100);

¿Qué es lo que debo poner en <!-- El comando AJAX debe ir aquí --> para que ejecute el comando javascript y sume el punto?
 
Con solo javascript
Insertar CODE, HTML o PHP:
var monitor = setInterval(function(){
  var elem = document.activeElement;
  if(elem && elem.tagName == 'IFRAME'){
    /* El comando AJAX debe ir aquí */
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
      if (xhttp.readyState == 4 && xhttp.status == 200) {
        //success : xhttp.responseText
        alert('Enviado');
      }
    };
    xhttp.open("GET", "ajax.php", true);
    xhttp.send();
    clearInterval(monitor);
  }
}, 100);
 
Con solo javascript
Insertar CODE, HTML o PHP:
var monitor = setInterval(function(){
  var elem = document.activeElement;
  if(elem && elem.tagName == 'IFRAME'){
    /* El comando AJAX debe ir aquí */
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
      if (xhttp.readyState == 4 && xhttp.status == 200) {
        //success : xhttp.responseText
        alert('Enviado');
      }
    };
    xhttp.open("GET", "ajax.php", true);
    xhttp.send();
    clearInterval(monitor);
  }
}, 100);

Ya coloqué el código como me lo diste y no suma en la base de datos, puse esto en ajax.php:

PHP:
 <?php
$conexion = mysqli_connect('localhost', 'admin', '12345', 'bd_name');
$SQL = "UPDATE wpq4_users SET points = points+1 WHERE ID='".$cu->ID."'"; 
if(mysqli_query($conexion, $SQL))
    echo 'Datos actualizados!';
?>

La parte de $SQL = "UPDATE wpq4_users SET points = points+1 WHERE ID='".$cu->ID."'"; la habré escrito bien? $cu->ID es para saber a qué usuario wordpress sumarle l punto

- - - Actualizado - - -
[MENTION=9679]cicklow[/MENTION], disculpa que te moleste pero, cómo podría poner el código este javascript:

PHP:
$(document).ready(function() {
	$("button").on("click", function() {
		$.ajax({
			url: 'ajax.php',
			data: {name:'kanikase'},
			type: 'POST',
			success: function(respuesta) {
				alert(respuesta);
			},
			error: function() {
				alert('Error!');
			}
		});
	});
});

A ajax para colocarlo aquí?

var monitor = setInterval(function(){
var elem = document.activeElement;
if(elem && elem.tagName == 'IFRAME'){
PHP:
<!-- El comando AJAX debe ir aquí -->
clearInterval(monitor);
}
}, 100);
 
Ya coloqué el código como me lo diste y no suma en la base de datos, puse esto en ajax.php:

PHP:
 <?php
$conexion = mysqli_connect('localhost', 'admin', '12345', 'bd_name');
$SQL = "UPDATE wpq4_users SET points = points+1 WHERE ID='".$cu->ID."'"; 
if(mysqli_query($conexion, $SQL))
    echo 'Datos actualizados!';
?>

La parte de $SQL = "UPDATE wpq4_users SET points = points+1 WHERE ID='".$cu->ID."'"; la habré escrito bien? $cu->ID es para saber a qué usuario wordpress sumarle l punto

hace un echo a $cu->ID a ver que dice y en el javascript donde dice alert('Enviado'); cámbialo por alert(xhttp.responseText);

yo supongo que el ID del campo de la tabla wpq4_users es un entero y tu lo estas buscando como string. ID='".$cu->ID."'"

Insertar CODE, HTML o PHP:
$SQL = "UPDATE wpq4_users SET points = (points+1) WHERE ID=$cu->ID";
 
[MENTION=81006]kanikase[/MENTION] y [MENTION=127525]jsstoni[/MENTION]

Muchas gracias por la ayuda que me estan brindando, pero soy nuevo en esto de ajax, javascript y en php...

Me he hecho bolas con todo esto pero lo que entiendo es que, PHP necesita ejecutarse con Javascript ya que no puede ejecutarse PHP por si solo (Es lo que tengo entendido), entonces, si quiero que ajax ejecute el comando que sume los puntos necesito lo siguiente, no?

AJAX > JavaScript > PHP

Entonces, desde el inicio...

Con este comando
PHP:
$SQL = "UPDATE wpq4_users SET points = (points+1) WHERE ID=$cu->ID";
se le suma 1 punto al row "points" de la tabla de la base de datos wqp4_users y lo pego en un archivo php, como me dijeron, lo hice AJAX.PHP

Entonces, ya tengo el PHP que sume en la tabla, ahora necesito un JavaScript que ejecute el comando, cierto? Entonces, con:

HTML:
$(document).ready(function() {
	$("button").on("click", function() {
		$.ajax({
			url: 'ajax.php',
			data: {name:'kanikase'},
			type: 'POST',
			success: function(respuesta) {
				alert(respuesta);
			},
			error: function() {
				alert('Error!');
			}
		});
	});
});

Ejecuta el comando de PHP para que se haga efectivo la suma, cierto? Este código también debo meterlo dentro del archivo AJAX.PHP entre etiquetas <javascript> </javascript> o dónde?

Por último, nececito ejecutar el Javascript y lo haré con AJAX (Había hablado con cicklow y me dijo que en el codigo, debo poner un comando AJAX, por lo que necesito que AJAX ejecute JavaScript)

Donde debo poner AJAX es en la linea de comentario dentro del codigo:

HTML:
var monitor = setInterval(function(){
    var elem = document.activeElement;
    if(elem && elem.tagName == 'IFRAME'){
        <!-- El comando AJAX debe ir aquí -->
        clearInterval(monitor);
    }
}, 100);

Pero... según Jsstoni, con esto se ejecuta el comando JavaScript creado anteriormente y quedaría así:

HTML:
var monitor = setInterval(function(){
  var elem = document.activeElement;
  if(elem && elem.tagName == 'IFRAME'){
    /* El comando AJAX debe ir aquí */
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
      if (xhttp.readyState == 4 && xhttp.status == 200) {
        //success : xhttp.responseText
        alert('Enviado');
      }
    };
    xhttp.open("GET", "ajax.php", true);
    xhttp.send();
    clearInterval(monitor);
  }
}, 100);

En teoría tengo todo lo que se necsita para hacerlo efectivo todo, cierto? Creen que con todo esto ya no necesite nadamas?

Porque lo pongo y no me funciona :/

PD: Para una mejor explicación, donde necesito el ajax es un código javascript donde detecta el click de un jframe, pero al momento del click, donde dice "<!-- El comando AJAX debe ir aquí --> " es donde se ejecuta el comando JavaScript que ejecuta PHP para sumar 1 punto en la tabla de la base de datos. Pero pongo todo como me lo han explicado y simplemente no funciona :/

Gracias...

Quedaré muy agradecido con ustedes si se toman la molestia de seguir ayudandome, hoy por mi mañana por ustedes :encouragement:
 
Atrás
Arriba