PHP - ¿Cómo extraer de un txt, solo las filas que tengan un número en común en sus columnas?

 
Vista:
sin imagen de perfil

¿Cómo extraer de un txt, solo las filas que tengan un número en común en sus columnas?

Publicado por eloy (1 intervención) el 31/03/2023 03:31:39
Hola, explico brevemente.

Tengo un menú con los meses del año, y al hacer clic sobre el mes se envía por GET el número del mes.

1
2
3
4
5
6
7
8
9
10
11
12
<a href='cpae2.php?m=1'><div class="btn1">Enero</div></a>
<a href='cpae2.php?m=2'><div class="btn1">Febrero</div></a>
<a href='cpae2.php?m=3'><div class="btn1">Marzo</div></a>
<a href='cpae2.php?m=4'><div class="btn1">Abril</div></a>
<a href='cpae2.php?m=5'><div class="btn1">Mayo</div></a>
<a href='cpae2.php?m=6'><div class="btn1">Junio</div></a>
<a href='cpae2.php?m=7'><div class="btn1">Julio</div></a>
<a href='cpae2.php?m=8'><div class="btn1">Agosto</div></a>
<a href='cpae2.php?m=9'><div class="btn1">Septiembre</div></a>
<a href='cpae2.php?m=10'><div class="btn1">Octubre</div></a>
<a href='cpae2.php?m=11'><div class="btn1">Noviembre</div></a>
<a href='cpae2.php?m=12'><div class="btn1">Diciembre</div></a>

Luego tengo un TXT con filas y columnas (como se muestra en el ejemplo) y en la primer columna de cada fila, está el número del mes. En este ejemplo, el número 2, que corresponde a febrero.

TXT:

2;11;febrero;11:00;Maipú;Metropolitana
6;15;junio;11:00;San Pedro;Metropolitana
2;8;febrero;11:00;Huechuraba;Metropolitana
6;10;junio;11:00;Peñalolén;Metropolitana;Suspendida
3;16;marzo;11:00;María Pinto;Metropolitana;Suspendida
2;22;febrero;11:00;Paine;Metropolitana;Suspendida
9;28;septiembre;11:00;Talagante;Metropolitana

Acá mi problema: Cuando el usuario selecciona un mes (febrero en este caso), debería mostrar todas las filas en las cuales aparezca el número 2 en sus columnas. Según mi TXT, debería mostrar tres filas. Por otro lado, sería ideal no imprimir la primer columna, ya solo es el número del mes que seleccionó.

Este es el código, que obviamente no es el de un experto.

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
if(isset($_GET["m"])){
 
    $m = $_GET["m"];
 
    $handle = fopen("cpae.csv", "r");
    $todo = fread($handle, filesize("cpae.csv"));
 
 
    $lineas = explode(chr(13).chr(10), $todo);
 
 
        $bandera = 0;
 
 
 
       echo "<table>
            <tr>
            <td class='tdTitulo'>N° MES</td>
            <td class='tdTitulo'>DÍA</td>
            <td class='tdTitulo'>MES</td>
            <td class='tdTitulo'>HORA</td>
            <td class='tdTitulo'>COMUNA</td>
            <td class='tdTitulo'>REGIÓN</td>
            <td class='tdTitulo'>OBSERVACIÓN</td>
            </tr>";
 
 
        for($i=0; $i<count($lineas); $i++){
 
           $palabras = explode(";", $lineas[$i]);
 
            if($m == $palabras[0]){
 
                //echo "el numero es ".$m;
 
                //echo'<td>'.$r.'</td>';
 
                    foreach ( $palabras as $r ) {
 
 
 
                                echo'<td>'.$r .'</td>';
 
                        }
 
 
 
echo "</tr></table>";
 
 
 
                $bandera = 1;
 
                break;
            }
        }
 
 
die();
 
 
 
}else{
 
}
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

¿Cómo extraer de un txt, solo las filas que tengan un número en común en sus columnas?

Publicado por Alejandro (839 intervenciones) el 31/03/2023 17:56:32
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Puedes cambiar el foreach por un for
1
for($j=1; $j<count($palabras); $j++){

Puedes agregar el indice al foreach y condicionarlo
1
2
3
foreach ( $palabras as $idx => $r ) {
    if( $idx==0) ) continue;
}
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