PHP - Hacer múltiples consultas. multi_query y update en php

 
Vista:
sin imagen de perfil
Val: 22
Ha disminuido su posición en 99 puestos en PHP (en relación al último mes)
Gráfica de PHP

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.
enviado-por-get

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
tabla_productos

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.
no-se-editaron-datos

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder