PHP - recoger variables para compararlas

 
Vista:

recoger variables para compararlas

Publicado por josele (12 intervenciones) el 10/09/2020 22:40:53
Hola, quiero limitar la entrada de datos a bd cuando lavados sea igual o superior a maxlavados,
La consulta finaliza al sumar un solo lavado, en el debug la data que devuelve esta vacia y aun asi sigue sumando uno. Como puedo limitarlo?
Gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: text/html;charset=utf-8");
include "db.php";
 
if($_POST['accept_request']) {
    $reg_id=$_POST['reg_id'];
    $username=$_POST['username'];
    $status="true";
 
    $q = mysqli_query($conn, "SELECT * FROM capsulas WHERE `username`='$username' and `status`='$status'");
    if ($q) {
            while ($consulta = mysqli_fetch_assoc($q)) {
                if ($consulta['maxlavados'] >= $consulta['lavados']) {
                    $q1=mysqli_query($conn, "UPDATE `capsulas` SET lavados = lavados+1 WHERE `reg_id`='$reg_id'");
                    echo "true";
                } else{
                    echo "false";
                }
            }
 
        else{
            echo "false";
        }
    } else {
        echo "Fallo la consulta";
    }
}
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Yoel
Val: 617
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

recoger variables para compararlas

Publicado por Yoel (198 intervenciones) el 11/09/2020 05:45:23
Hola Josele, si lo que deseas es detener el ciclo while para que no te siga actualizando los registros de la base de datos, solo tienes que colocarle un break a tu ciclo para que se detenga, te dejo un ejemplo.

Partiendo del código que tienes desarrollado

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: text/html;charset=utf-8");
include "db.php";
 
if($_POST['accept_request']) {
    $reg_id=$_POST['reg_id'];
    $username=$_POST['username'];
    $status="true";
 
    $q = mysqli_query($conn, "SELECT * FROM capsulas WHERE `username`='$username' and `status`='$status'");
    if ($q) {
            while ($consulta = mysqli_fetch_assoc($q)) {
                if ($consulta['maxlavados'] >= $consulta['lavados']) {
                    $q1=mysqli_query($conn, "UPDATE `capsulas` SET lavados = lavados+1 WHERE `reg_id`='$reg_id'");
 
                    //ejecutamos  un return para finalizar el ciclo cuando se cumpla la condicion que maxlavados es mayor e igual a lavados
                   break;
 
                } else{
                    echo "false";
                }
            }
 
        else{
            echo "false";
        }
    } else {
        echo "Fallo la consulta";
    }
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

recoger variables para compararlas

Publicado por josele (12 intervenciones) el 11/09/2020 13:36:33
Muchas gracias por tu respuesta Joel, lo que quiero es poder limitar la entrada de datos a la bd, todo va bien, recoje username, string data, lo malo es al llegar al data==true que creo llega vacía y me reenvía a una pagina undefinded en vez de a listado.html
Te muestro javascript y php que quiero modificar, el primero es mi modificación que no funciona


1
2
3
4
5
6
7
8
9
10
11
else if(isset($_POST['accept_request'])){
	$reg_id=$_POST['reg_id'];
	$username=$_POST['username'];
$date=date("d-m-y h:i:s");
	$q=mysqli_query($conn, "UPDATE `capsulas` SET lavados = lavados+1, ultimo_lavado = '$date' WHERE `reg_id`='$reg_id'");
	if($q){
		echo "true";
	}
	else
		echo "false";
}




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$(document).on('click', '.accept_request', function() {
    console.log("clicked");
    var reg_id = $(this).attr("id");
    var username = localStorage.username;
    var dataString = "reg_id=" + reg_id + "&username=" + username + "&accept_request=";
    $.ajax({
        type: "post",
        url: "http://xxxxxxxxx.php",
        crossDomain: true,
        cache: false,
        data: dataString,
        success: function(data) {
            if (data == "true") {
                window.location.href = "listado.html";
            } else {
                window.location.href = "listado.html";
            }
        }
    });
});
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Yoel
Val: 617
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

recoger variables para compararlas

Publicado por Yoel (198 intervenciones) el 12/09/2020 04:05:44
Hola Josele, si el valor a que te refiere es al de la variable data del javascript, lo primero que te quiero comentar es que este valor viene del php, por lo que te voy a dejar unos pequeños pasos para que identifique y muestres el error, que te puede estar generando.


1. Primero debes de verificar el código php para que veas que te esta devolviendo cuando imprimes el echo. El resultado que tu esperas (true), eso lo puedes hacer corriendo el script de forma independiente sin nacesidad de enviar la peteción desde el $.ajax().


2. Lo segundo es que imprimir en la consola el valor que tiene data (consolo.log(data)) para ver la consola en el navegador es F12.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar