Comparar array con una consulta mysql en PHP
Publicado por Jesus Contreras (1 intervención) el 21/04/2018 03:59:09
Hola chicos, les comento mi problema, a traves de un formulario cargo un archivo .CSV y en importar.php tomo el archivo lo paso a un array y a través de un foreach recorro linea por linea donde detecte un dato que me interesa paso con un while los registros de la consulta de la bd para que con un echo me escriba datos acerca de esa consulta, mi intención es que escriba solo el registro que necesito pero me devuelve todos los registros que están la base de datos. espero puedan ayudarme a detectar en donde esta mi problema, mi código es este:
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
<?php
//obtenemos el archivo .csv
$tipo = $_FILES['archivo']['type'];
$tamanio = $_FILES['archivo']['size'];
$archivotmp = $_FILES['archivo']['tmp_name'];
//cargamos el archivo
$lineas = file($archivotmp);
//inicializamos variable a 0, esto nos ayudará a indicarle que no lea la primera línea
$i=0;
//variable e para llevar el conteo de repeticiones del while
$e=0;
//me conecto a la db
$conexion=mysqli_connect("localhost","root","","transferencias") or
die("Problemas con la conexión");
//realizo la consulta en la variable registros
$registros=mysqli_query($conexion,"select cedula, monto
from panaderia") or
die("Problemas en el select:".mysqli_error($conexion));
//Recorremos el bucle para leer línea por línea
foreach ($lineas as $linea_num => $linea)
{
//abrimos bucle
/*si es diferente a 0 significa que no se encuentra en la primera línea
(con los títulos de las columnas) y por lo tanto puede leerla*/
if($i != 0)
{
/* La funcion explode nos ayuda a delimitar los campos, por lo tanto irá
leyendo hasta que encuentre un ; */
$datos = explode(";",$linea);
//Almacenamos los datos que vamos leyendo en una variable
//usamos la función utf8_encode para leer correctamente los caracteres especiales
$referencia = utf8_encode($datos[1]);
$descripcion = $datos[2];
$monto = utf8_encode($datos[3]);
//esta parte de la cadena me da informacion de la operacion
$condicion=substr($descripcion,0,4);
//aqui cargo la cedula que esta en el reporte
$cedula2=substr($descripcion,8,9);
//elimino el 0 en caso que la cedula sea menor a 10 millones
if(substr($cedula2,0,1)==0){
$cedula2=substr($cedula2,1,8);
}
//verifico que la operacion sea una transferencia y el monto positivo
if($condicion=="TPBW" AND $monto>0){
//con un while repaso todos los registros de la consulta a la base de datos
while ($reg=mysqli_fetch_array($registros)){
//en la variable esto coloco el registro de la cedula
$esto=$reg['cedula'];
//si esto es igual al numero
if($esto==19522810){
//llena la variable cedula
$cedula=$reg['cedula'];
//lleva condicional a 1
$condicional=1;
echo $e."si<hr>";
$e=$e+1;
}
}
//si condicional vale 1 escribe lo siguiente
if($condicional=1){
echo $referencia.'<br>';
echo $condicion.'<br>';
echo $cedula2.'<br>';
echo $esto.'<br>';
echo $monto.'<br><hr>';
$condicional=0;
}
}
}
/*Cuando pase la primera pasada se incrementará nuestro valor y a la siguiente pasada ya
entraremos en la condición, de esta manera conseguimos que no lea la primera línea.*/
$i++;
//cerramos bucle
}
echo $e;
mysqli_close($conexion);
?>
Valora esta pregunta


0