Hacer múltiples consultas. multi_query y update en php
Publicado por Eduardo (22 intervenciones) el 25/03/2017 22:20:12
Buenas tardes o buenas noches estoy haciendo un proyecto donde cada Producto tiene un idProducto o digito, y el código se envía por método $_GET , en la barra de direcciones.
Para fundamentar un poco, los productos se dividen en dos tipos que son:
Tipo Metal : que se asignó el numero 1
Tipo Madera: que se asignó el numero 2
La idea es que al momento de que se ingresa el digito mediante el método $_GET por la barra de direcciones, se genere un UPDATE al producto que se ingresa. Directamente en el campo condicionProducto y cambie a la palabra VENDIDO
Esto lo puedo realizar sin ningún problema con el siguiente código que tiene una sola consulta. En dicha consulta SELECT debe cumplir que el idProducto sea igual al código que viene por $_GET que el campo condicionProducto sea igual a ‘-‘ y que sea de tipo 1, para que pueda realizar la actualización.
Con una consulta no hay ningún problema y se ejecuta correctamente.
Al momento de volver a enviar el mismo código me envía el mensaje diciendo que NO se editaron datos porque el producto de tipo 1 ya fue vendido, y si ingreso un producto de tipo 2 me envía el mismo mensaje que no se editaron datos debido a que no corresponde al tipo que fue puesto como requisito en el SELECT.
Lo que no entiendo es como puedo hacer múltiples consultas, específicamente dos consultas y me realice el mismo UPDATE de manera correcta y dependiendo si es de tipo 1 o tipo 2.
Encontré esto para ejecutar consultas múltiples pero no logro entender muy bien cómo se utiliza para generar el UPDATE de forma correcta
Por favor he estado varias semanas tratando de buscar y entender como puedo hacer estas dos consultas múltiples para que se realice el UPDATE de forma correcta, y que al momento de meter el código en la URL pueda diferenciar con un mensaje en pantalla si el código ingresado es de tipo 1 o de tipo 2. o bien ya fue vendido o el código ingresado no corresponde a su tipo.
es decir, quiero que haga lo mismo del primer código que es con una sola consulta.
pero en este caso con dos consultas para hacer el UPDATE y cambie la palabra a VENDIDO
Si alguien me puede ayudar con este código, desde ya muchas gracias, por leer mi problemática, disculpen si me extendí un poco en tratar de explicarlo
saludos cordiales
Eduardo
Para fundamentar un poco, los productos se dividen en dos tipos que son:
Tipo Metal : que se asignó el numero 1
Tipo Madera: que se asignó el numero 2
La idea es que al momento de que se ingresa el digito mediante el método $_GET por la barra de direcciones, se genere un UPDATE al producto que se ingresa. Directamente en el campo condicionProducto y cambie a la palabra VENDIDO
Esto lo puedo realizar sin ningún problema con el siguiente código que tiene una sola consulta. En dicha consulta SELECT debe cumplir que el idProducto sea igual al código que viene por $_GET que el campo condicionProducto sea igual a ‘-‘ y que sea de tipo 1, para que pueda realizar la actualización.
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
<?php
error_reporting(E_ALL ^ E_NOTICE);
// Importamos la configuración
include("conexion.php");
$estado = 'VENDIDO';
$metales= '1';
$madera= '2';
// Leemos los valores que nos llegan por GET
$idCodigo = mysqli_real_escape_string($conexion, $_GET['digito']);// digito o codigo que viene por la URL
$consulta = "SELECT * FROM productos WHERE idProducto = '$idCodigo' AND condicionProducto ='-' AND tipo='$metales' ";
$ejecutar_consulta = $conexion->query($consulta);
$registro = $ejecutar_consulta->num_rows;
if ($registro > 0) {
$consulta = "UPDATE productos SET condicionProducto='$estado' WHERE idProducto = '$idCodigo' ";
// Ejecutamos la consulta para editar a VENDIDO el campo condicionProducto
$ejecutar_consulta = $conexion->query($consulta);
echo ("<br>El Producto:<b> $idCodigo del tipo $metales </b> fue VENDIDO exitosamente</br>");
}
else
{
echo ("<br>NO se editaron los datos... Ya esta VENDIDO </br>");
}
$conexion->close();
?>
Con una consulta no hay ningún problema y se ejecuta correctamente.
Al momento de volver a enviar el mismo código me envía el mensaje diciendo que NO se editaron datos porque el producto de tipo 1 ya fue vendido, y si ingreso un producto de tipo 2 me envía el mismo mensaje que no se editaron datos debido a que no corresponde al tipo que fue puesto como requisito en el SELECT.
Lo que no entiendo es como puedo hacer múltiples consultas, específicamente dos consultas y me realice el mismo UPDATE de manera correcta y dependiendo si es de tipo 1 o tipo 2.
Encontré esto para ejecutar consultas múltiples pero no logro entender muy bien cómo se utiliza para generar el UPDATE de forma correcta
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
33
34
<?php
// Importamos la configuración
include("conexion.php");
$estado = 'VENDIDO';
$metales= '1';
$madera= '2';
// Leemos los valores que nos llegan por GET
$idCodigo = mysqli_real_escape_string($conexion, $_GET['digito']);// digito o codigo que viene por la URL
$consulta = "SELECT * FROM productos WHERE idProducto = '$idCodigo' AND condicionProducto ='-' AND tipo='$metales';";
$consulta .= "SELECT * FROM productos WHERE idProducto = '$idCodigo' AND condicionProducto ='-' AND tipo='$madera' ";
if ($conexion->multi_query($consulta)) {
do{
if ( $ejecutar_consulta=$conexion->store_result()){
while ($registro = $ejecutar_consulta->fetch_row()) {
#codigo;
}
$ejecutar_consulta->free();
}
if ($conexion->more_results()) {
#codigo;
}
}while($conexion->next_result()); /*Vuelve al ciclo miestras haya otro resultado*/
}
$conexion->close();
?>
Por favor he estado varias semanas tratando de buscar y entender como puedo hacer estas dos consultas múltiples para que se realice el UPDATE de forma correcta, y que al momento de meter el código en la URL pueda diferenciar con un mensaje en pantalla si el código ingresado es de tipo 1 o de tipo 2. o bien ya fue vendido o el código ingresado no corresponde a su tipo.
es decir, quiero que haga lo mismo del primer código que es con una sola consulta.
pero en este caso con dos consultas para hacer el UPDATE y cambie la palabra a VENDIDO
Si alguien me puede ayudar con este código, desde ya muchas gracias, por leer mi problemática, disculpen si me extendí un poco en tratar de explicarlo
saludos cordiales
Eduardo
Valora esta pregunta
0