PHP - Comparar array con una consulta mysql en PHP

 
Vista:

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

Comparar array con una consulta mysql en PHP

Publicado por anonymous (24 intervenciones) el 21/04/2018 08:19:08
No se si entiendo muy bien a lo que te referís, pero en la linea 22 deberías aclarar el WHERE dentro del select para seleccionar solo una row y no todas, es decir si lo que queres es recibir los datos de la row con cedula X deberias poner

1
2
$registros=mysqli_query($conexion,"select cedula, monto
                from panaderia WHERE cedula='$cedula'")
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