[Ayuda]Lectura de Archivo txt

Iniciado por rolly21102, 20 Junio 2011, 02:37 AM

0 Miembros y 1 Visitante están viendo este tema.

rolly21102

Hola amigos! Se me presenta el siguiente problema al momento de leer  este txt....

empleados.txt

15680708,Patricia,Colmenares,30,Sistemas,5200
18909823,María,Castro,21,Contabilidad,2500
20012345,Carlos,Pérez,18,Sistemas,2100
6234561,Juan,Villamizar,45,Recursos Humanos,5500
4509002,Pedro,Rivero,62,Sistemas,6000
15897034,Diana,Soto,28,Mercadeo,4500
17098456,Ana,Montero,26,Mercadeo,2560
16732210,David,Gutiérrez,27,Recursos Humanos,3700


Necesito leer linea por linea para luego imprimirla tal y como sale en la imagen dependiendo del departamento que yo seleccione o le ingrese por un formulario...

Esta es la clase con mis avances y donde me quede estancado

<?php

class Empleados {


function listar_departamento($departamento) {

$archivo 'empleados.txt';
$fp fopen($archivo,'r');

$arreglo = array();
$i 0;

while (!feof($fp)) {

/* while($a = fgetcsv($fp, 1000, ",")){

COMO PUEDO HACER PARA PREGUNTAR SI EL CAMPO 4 PERTENECE AL DEPARTAMENTO QUE LLEG&#211; COMO PARAMETRO (Se que con if pero nose como hacer la comparativa con el campo 4)

    Y AGREGAR LOS DATOS EXTRAIDOS EN UN ARREGLO ASOCIATIVO  ??  */

}

fclose($fp);


// Y QUE A CONTINUACION VAYA GUARDANDO EN UNA VARIABLE DE CADENA ($cadena) LO QUE SE IMPRIMIRA EN PANTALLA,
// COMENZANDO POR EL ENCABEZADO

foreach ($arreglo as $emp) {

// AQUI AGREGO LA FILA Y LAS COLUMNAS CON LOS DATOS DEL EMPLEADO

}

$cadena .= '</table>';

return $cadena;

}

}

?>





Uploaded with ImageShack.us

Cicklow

Hola este codigo te sera de ayuda, crea un array con los datos de los que coinciden y otro con los que no. Saludos.
<?php
$A file_get_contents('iono.txt'); //Abrimos el file
$B preg_split("|[\r\n]+|i"$A, -1PREG_SPLIT_NO_EMPTY); //parseamos por salto de linea

$DTO = array();
foreach($B as $C){
$D preg_split("|,|sU",$C,-1,PREG_SPLIT_NO_EMPTY); //parseamos por ,
if($D[4] == $_GET['cual']){ //verificamos si coincide con el campo cual pasado por GET (url.com/?cual=Sistemas)
$DTO['si'][] = array($D);
}else{
$DTO['no'][] = array($D);
}
}

echo '<pre>';print_r($DTO); //Mostramos el array en pantalla
?>

Para luego mostrar el resultado como quieres, solo tiens que poner

//Para mostrar los que coinciden
foreach($DTO['si'] as $T1){
echo $T1[0].' - '.$T1[1].'...';
}

//Para mostrar los que no coinciden
foreach($DTO['no'] as $T1){
echo $T1[0].' - '.$T1[1].'...';
}


Saludos
www.cicklow.com . Solo Soy Un Ciego que Ve El Sonido Del Silencio

rolly21102

Gracias papa ! Lo probaré y en un rato les comento como me fue..

Si tienen alguna otra sugerencia no duden en comentarla..

GRACIAS

rolly21102


Amigo aun no he podido realizarlo.... Lo mas cercano que he podido hacer es esto y no me esta retornando el valor del arreglo con los empleados...

Me sale esta pantalla despues que hago el envio de los departamentos...



Y Asi es como quedo mi codigo...

index.html
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
    <center>       
    <br />
    <h1>Listar Empleados </h1>
     <br />
      <form action="listado.php" method="post" id="departamentos" name="departamentos">
        <table width="408" border="1">
          <tr>
            <td width="200" height="173" align="center"><b>DEPARTAMENTOS</b></td>
            <td width="192"><input type="checkbox" name="departamentos[]" value="Contabilidad">Contabilidad
            <br />
            <input type="checkbox" name="departamentos[]" value="Sistemas">Sistemas
            <br />
            <input type="checkbox" name="departamentos[]" value="Mercadeo">Mercadeo
            <br />
            <input type="checkbox" name="departamentos[]" value="Recursos Humanos">Recursos Humanos
       
            </td>
           
          </tr>
          <tr>
            <td height="39" colspan="2" align="center"><input type="submit" name="Submit" value="Listar"> </td>
          </tr>
        </table>
     
      </form>
    </center>
    </body>
</html>


listado.php
<?php

$departamentos 
$_REQUEST["departamentos"];
include 
"empleados.class.php";
//$empleados = new Empleados($ordenar);
$empleados = new Empleados($departamentos);

echo 
'<center>';
echo 
'<h2>Listado de Empleados</h2>';

 foreach (
$departamentos as $departamento) {

echo $empleados->listar_departamento($departamentos);
echo '<br /><br />';

}




echo 
'</center>';
?>



empleados.class.php
<?php

class Empleados {


function listar_departamento($departamentos) {

$archivo 'empleados.txt';
$fp fopen($archivo,'r');

//$arreglo = array();
$i 0;
$cadena = array();
while (!feof($fp)) {
while($a fgetcsv($fp1000","))

  if($a[4]==$_REQUEST["departamentos"]){
         
$cadena[$i] = $a;
$i++;
  }
}
}

fclose($fp);



foreach ($cadena as $emp) {


$cadena .= $emp."<br>";

}

return $cadena;

}

}

?>



empleados.txt
15680708,Patricia,Colmenares,30,Sistemas,5200
18909823,María,Castro,21,Contabilidad,2500
20012345,Carlos,Pérez,18,Sistemas,2100
6234561,Juan,Villamizar,45,Recursos Humanos,5500
4509002,Pedro,Rivero,62,Sistemas,6000
15897034,Diana,Soto,28,Mercadeo,4500
17098456,Ana,Montero,26,Mercadeo,2560
16732210,David,Gutiérrez,27,Recursos Humanos,3700


Le agradezco de antemano al que me heche una ayuda...

Cicklow

Pero no estas usando el codigo que te puse... con mi codigo funciona bien!
www.cicklow.com . Solo Soy Un Ciego que Ve El Sonido Del Silencio

WHK

#5
Código (php) [Seleccionar]
<?php
$data 
get_data('empleados.txt');
print_r($data);
 
function 
get_data($file){
$buffer file_get_contents('empleados.txt');
if($buffer explode('<br />'nl2br($buffer))){ /* Se adapta a tipo de salto MAC, Win y GNU */
foreach($buffer as $bff){
$dat explode(','$bff);
$data[$dat[4]][] = array(
'Cédula' => trim($dat[0]),
'Nombre' => trim($dat[1]),
'Apellido' => trim($dat[2]),
'Edad' => trim($dat[3]),
'Departamento' => trim($dat[4]),
'Salario' => trim($dat[5])
);
}
}
return $data;
}
?>


Array
(
   [Sistemas] => Array
       (
           [0] => Array
               (
                   [Cédula] => 15680708
                   [Nombre] => Patricia
                   [Apellido] => Colmenares
                   [Edad] => 30
                   [Departamento] => Sistemas
                   [Salario] => 5200
               )

           [1] => Array
               (
                   [Cédula] => 20012345
                   [Nombre] => Carlos
                   [Apellido] => Pérez
                   [Edad] => 18
                   [Departamento] => Sistemas
                   [Salario] => 2100
               )

           [2] => Array
               (
                   [Cédula] => 4509002
                   [Nombre] => Pedro
                   [Apellido] => Rivero
                   [Edad] => 62
                   [Departamento] => Sistemas
                   [Salario] => 6000
               )

       )

   [Contabilidad] => Array
       (
           [0] => Array
               (
                   [Cédula] => 18909823
                   [Nombre] => María
                   [Apellido] => Castro
                   [Edad] => 21
                   [Departamento] => Contabilidad
                   [Salario] => 2500
               )

       )

   [Recursos Humanos] => Array
       (
           [0] => Array
               (
                   [Cédula] => 6234561
                   [Nombre] => Juan
                   [Apellido] => Villamizar
                   [Edad] => 45
                   [Departamento] => Recursos Humanos
                   [Salario] => 5500
               )

           [1] => Array
               (
                   [Cédula] => 16732210
                   [Nombre] => David
                   [Apellido] => Gutiérrez
                   [Edad] => 27
                   [Departamento] => Recursos Humanos
                   [Salario] => 3700
               )

       )

   [Mercadeo] => Array
       (
           [0] => Array
               (
                   [Cédula] => 15897034
                   [Nombre] => Diana
                   [Apellido] => Soto
                   [Edad] => 28
                   [Departamento] => Mercadeo
                   [Salario] => 4500
               )

           [1] => Array
               (
                   [Cédula] => 17098456
                   [Nombre] => Ana
                   [Apellido] => Montero
                   [Edad] => 26
                   [Departamento] => Mercadeo
                   [Salario] => 2560
               )

       )

)


Te recomiendo cambiar edad por fecha de nacimiento porque el próximo año tendrás que modificar toda tu base de datos para cambiar todas las edades de cáda uno.