PHP - Select mysql desde variable array

 
Vista:
sin imagen de perfil

Select mysql desde variable array

Publicado por Jaime (5 intervenciones) el 03/04/2017 12:20:30
Hola tengo el siguiente problema:
Tengo formulario con un input en el que se carga un array de un select checkbox, en el archivo php le hago un echo a $lineasalbaran = $_POST["resultadoarray"]; y se muestra el array de esta manera : Array( [0] => 12 [1] => 9 [2] => 1)1
Lo que quiero haces es un Select de la base de datos con este array y no me funciona, lo hago asi: $stmt = $conexion ->prepare('SELECT * FROM pos_lineasalbarancompra WHERE id_lineaalbarancompra IN ('.implode(',',$lineasalbaran).')');
Pero si lo hago directamente escribiendo el array como asi: $stmt = $conexion ->prepare('SELECT * FROM pos_lineasalbarancompra WHERE id_lineaalbarancompra IN (10,7)'); todo funciona bien, Como tengo que hacer lo del array en el select de la sentencia sql?
Espero haberlo dejado bien claro, muchas gracias a todo
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 Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Select mysql desde variable array

Publicado por Alejandro (855 intervenciones) el 04/04/2017 15:55:32
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Intenta imprimir en pantalla lo que estas generando.

1
2
$consulta = 'SELECT * FROM pos_lineasalbarancompra WHERE id_lineaalbarancompra IN ('.implode(',',$lineasalbaran).')';
echo $consulta;
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
sin imagen de perfil

Select mysql desde variable array

Publicado por Jaime (5 intervenciones) el 05/04/2017 18:05:29
Muchas gracias alejandro, eres un crack, te debo una, al final lo hice asi directamente desde el formulario y funciona todo, pongo el codigo por si a alguien le ayudara, pero muchas gracias por tu atencion alejandro, un saludo

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
if(isset($_POST["albarancomprafactura"])){
 
 
    $conexion = new Conexion();
 
    $lineasalbaran = $_POST["albarancomprafactura"];
    if($lineasalbaran === ''){
        echo '<div id="alert" class="alert alert-danger">
            Error!!! no has seleccionado ninguna linea del albaran
            </div>';
    }else{
    $array = implode("','",$lineasalbaran);
    $sql = "SELECT * FROM pos_lineasalbarancompra WHERE id_lineaalbarancompra IN ($array)";
    $stm = $conexion->prepare($sql);
    $stm->execute();
    $data = $stm->fetchAll();
 
 
 
 
 
 
 
 
 
        $stmt = $conexion->prepare("SELECT id_facturacompra FROM pos_facturascompras ORDER BY id_facturacompra DESC LIMIT 1");
        $stmt->execute();
        $row = $stmt->fetch();
        $facturacompra = $row['id_facturacompra'] + 1;
 
         $stmt = $conexion->prepare("INSERT INTO pos_facturascompras (id_facturacompra) VALUES (:id_facturacompra)");
         $stmt->bindParam(':id_facturacompra', $facturacompra);
         $stmt->execute();
 
         $array = implode(',', $lineasalbaran);
         $consulta = "SELECT * FROM pos_lineasalbarancompra WHERE id_lineaalbarancompra IN ($array)";
         $result = $conexion->prepare($consulta);
         $result->execute();
         $data = $result->fetchAll();
 
 
 
        foreach($data as $row){
 
           $fecha = date("Y-m-d");
 
            $sql = "INSERT INTO pos_lineasfacturacompra (codarticulo, descripcionarticulo, subtotallinea, cantiva, cantrecargo, precio, cantidad, id_factura, tipoiva, tiporecargo, fecha, usuario, tienda, id_iva) VALUES (:codarticulo, :descripcionarticulo, :subtotallineacompra, :ivalinea, :cantrecargo, :precio, :unidades, :id_facturacompra,  :tipoiva, :tiporecargo, :fechalineacompra, :usuario, :tienda, :id_iva)";
            $statement = $conexion->prepare($sql);
            $statement->bindParam(':codarticulo', $row[1]);
            $statement->bindParam(':descripcionarticulo', $row[2]);
            $statement->bindParam(':subtotallineacompra', $row[7]);
            $statement->bindParam(':ivalinea', $row[8]);
            $statement->bindParam(':cantrecargo', $row[9]);
            $statement->bindParam(':precio', $row[4]);
            $statement->bindParam(':tipoiva', $row[5]);
            $statement->bindParam(':tiporecargo', $row[6]);
            $statement->bindParam(':unidades', $row[3]);
            $statement->bindParam(':id_facturacompra', $facturacompra);
            $statement->bindParam(':fechalineacompra', $fecha);
            $statement->bindParam(':usuario', $row[12]);
            $statement->bindParam(':tienda', $row[13]);
            $statement->bindParam(':id_iva', $row[14]);
 
            if(!$statement){
                $mensaje =  "Error, no se ha podido dar de alta la factura";
            }else{
                $statement->execute();
 
 
            }
 
        }
 
         $conexion = new Conexion();
         $stmt = $conexion ->prepare("SELECT SUM(subtotallinea) AS Subtotal, SUM(cantiva) AS Totaliva, ROUND(SUM(cantrecargo), 2) AS Totalrecargo FROM pos_lineasfacturacompra WHERE id_factura= '". $facturacompra . "'");
         $stmt->execute();
         $resultados = $stmt->fetchAll();
         foreach($resultados as $fila){
             $total = $fila['Subtotal']+$fila['Totaliva']+$fila['Totalrecargo'];
             $subtotal = $fila['Subtotal'];
             $totaliva = $fila['Totaliva'];
             $totalrecargo = $fila['Totalrecargo'];
 
             $sql = "UPDATE pos_facturascompras SET subtotalfactcompra=:subtotal, ivafactcompra=:totaliva, recargofactcompra=:totalrecargo, totalfactura=:Sumatotal  WHERE id_facturacompra=:id_factura";
             $statement = $conexion->prepare($sql);
             $statement->bindParam(':subtotal', $subtotal);
             $statement->bindParam(':totaliva', $totaliva);
             $statement->bindParam('totalrecargo', $totalrecargo);
             $statement->bindParam(':Sumatotal', $total);
             $statement->bindParam(':id_factura', $facturacompra);
             $statement->execute();
         }
            echo '<div id="alert" class="alert alert-success">
            Perfecto!!! Linea o lineas facturadas
            </div>';
 
 
 
 
            $lineafacturada = 'SI';
 
            $sql = "UPDATE pos_lineasalbarancompra SET lineafacturada=:lineafacturada, factura=:factura  WHERE id_lineaalbarancompra IN ($array)";
            $statement = $conexion->prepare($sql);
            $statement->bindParam(':lineafacturada', $lineafacturada);
            $statement->bindParam(':factura', $facturacompra);
            $statement->execute();
 
 
 
    }
 
        $statement = null;
        $stmt = null;
        $sql2 = null;
        $sql = null;
 
 
 
}
 
?>
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