Foros del Web » Programando para Internet » PHP »

[Ayuda]Lectura de Archivo txt

Estas en el tema de [Ayuda]Lectura de Archivo txt en el foro de PHP en Foros del Web. Hola amigos! Se me presenta el siguiente problema al momento de leer este txt.... empleados.txt Código: 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 ...
  #1 (permalink)  
Antiguo 19/06/2011, 18:37
 
Fecha de Ingreso: mayo-2010
Mensajes: 60
Antigüedad: 13 años, 11 meses
Puntos: 0
[Ayuda]Lectura de Archivo txt

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

empleados.txt

Código:
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 le envie...

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

Código:
<?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Ó 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;

	}

}

?>
[URL=http://imageshack.us/photo/my-images/405/sinttuloma.jpg/][IMG]http://img405.imageshack.us/img405/3831/sinttuloma.jpg[/IMG][/URL]

Uploaded with [URL=http://imageshack.us]ImageShack.us[/URL]
  #2 (permalink)  
Antiguo 19/06/2011, 20:53
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 13 años, 4 meses
Puntos: 18
Respuesta: [Ayuda]Lectura de Archivo txt

pues puedes jalar el contenido del txt con un

$contenido = file_get_contets('file.txt');

haces un explode

$elementos = explode('\n', $contenido); //el \n representa la separacion que tienen dentro del .txt

y un forech

foreach($elementos as $elemento){
echo "Linea 1: " . $elemento;
}

igual cada linea la rompes con "comas" ( , ) para sacar cada dato de cada linea.


(ESTA OPCION QUE TE PONGO ES SI EN EL .TXT TIENES LOS DATOS SEPARADOS CON POR LINEAS)
SI LOS TIENES TODOS SOLO SEPARADOS POR COMAS. haces:



//segun como veo en tu archivo cada 6 datos que estan separados por comas, le sigue otro dato de otro
//departamento asi que puedes hacer un foreach de cada elemento. mas o menos asi:

Código PHP:
Ver original
  1. $contenido = file_get_contets('file.txt');
  2. $elementos = explode(",",$contenido);
  3.  
  4. $count = 0;
  5.  
  6. foreach($elementos as $elemento){
  7.     $count++;
  8.     echo $elemento;
  9.     if($count == 6){
  10.          echo "<br />";
  11.          $count = 0;
  12.     }
  13.     else{
  14.          echo ",";
  15.     }
  16. }

Me comentas que tal te fue.
  #3 (permalink)  
Antiguo 19/06/2011, 22:19
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: [Ayuda]Lectura de Archivo txt

Holas,

En el mismo codigo donde usas:

Código PHP:
Ver original
  1. ...
  2. while($a = fgetcsv($fp, 1000, ",")){
  3. ...

Puedes leer el $a que es un array y la posicion de la cuarta columan es 3, por ejemplo:
Código PHP:
Ver original
  1. ...
  2. $cadena = array();
  3. while($a = fgetcsv($fp, 1000, ","))
  4. {   if($a[3]=="algun departamente que buscas")
  5.          $cadena[] = $a;
  6. }
  7. ...

Saludos
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 20/06/2011, 08:31
 
Fecha de Ingreso: mayo-2010
Mensajes: 60
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: [Ayuda]Lectura de Archivo txt

Gracias amigos en un rato les comento como me fue..

Si tienen alguna otra sugerencia no duden en comentarla..
  #5 (permalink)  
Antiguo 20/06/2011, 21:07
 
Fecha de Ingreso: mayo-2010
Mensajes: 60
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: [Ayuda]Lectura de Archivo txt

Cita:
Iniciado por gildus Ver Mensaje
Holas,

En el mismo codigo donde usas:

Código PHP:
Ver original
  1. ...
  2. while($a = fgetcsv($fp, 1000, ",")){
  3. ...

Puedes leer el $a que es un array y la posicion de la cuarta columan es 3, por ejemplo:
Código PHP:
Ver original
  1. ...
  2. $cadena = array();
  3. while($a = fgetcsv($fp, 1000, ","))
  4. {   if($a[3]=="algun departamente que buscas")
  5.          $cadena[] = $a;
  6. }
  7. ...

Saludos

Amigo lo hice de la manera en la que me indicas pero no me esta retornando los valores del arreglo...

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

http://imageshack.us/photo/my-images/706/sinttulohvc.png/

Y Asi es como quedo mi codigo...

index.html
Código:
<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
Código:
<?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
Código:
<?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($fp, 1000, ","))
			{ 
			  if($a[4]==$_REQUEST["departamentos"]){
         	$cadena[$i] = $a;
			$i++;
			  }
			}
	}

	fclose($fp);



		foreach ($cadena as $emp) {


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

		return $cadena;

	}

}

?>
empleados.txt
Código:
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 mano...

Última edición por jh0sz; 20/06/2011 a las 21:13
  #6 (permalink)  
Antiguo 20/06/2011, 22:26
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Respuesta: [Ayuda]Lectura de Archivo txt

Te dejo algo que modifique y lo revisas:

index.html
Código HTML:
Ver original
  1. <form action="listado.php" method="post" id="departamentos" name="departamentos">
  2.         <table width="408" border="1">
  3.           <tr>
  4.             <td width="200" height="173" align="center"><b>DEPARTAMENTOS</b></td>
  5.             <td width="192"><input type="checkbox" name="departamentos" value="Contabilidad">Contabilidad
  6.             <br />
  7.             <input type="checkbox" name="departamentos" value="Sistemas" <? if(isset($_POST['departamentos']) && $_POST['departamentos']=='Sistemas') echo 'checked';?>>Sistemas
  8.             <br />
  9.             <input type="checkbox" name="departamentos" value="Mercadeo" <? if(isset($_POST['departamentos']) && $_POST['departamentos']=='Mercadeo') echo 'checked';?>>Mercadeo
  10.             <br />
  11.             <input type="checkbox" name="departamentos" value="Recursos Humanos" <? if(isset($_POST['departamentos']) && $_POST['departamentos']=='Recursos Humanos') echo 'checked';?>>Recursos Humanos
  12.        
  13.             </td>
  14.            
  15.           </tr>
  16.           <tr>
  17.             <td height="39" colspan="2" align="center"><input type="submit" name="Submit" value="Listar"> </td>
  18.           </tr>
  19.         </table>
  20.      
  21.       </form>


listado.php
Código PHP:
<?
if(isset($_POST["departamentos"]) && !empty($_POST["departamentos"]))
{    include 
"empleados.class.php";
        
$departamentos trim($_POST["departamentos"]);
    
$empleados = new Empleados($departamentos);
    
    
$resultados $empleados->listar_departamento($departamentos);
    echo 
'<center>';
    echo 
'<h2>Listado de Empleados</h2>';
    
    foreach (
$resultados as $depas
    {     foreach (
$depas as $item)
            echo 
$item.',';
        echo 
'<br>';
    }
}

echo 
'</center>';

?>

empleados.class.php
Código 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]==$departamentos)
              { 
                
$cadena[] = $a;
                
//$i++;
              
}
            }
    }

    
fclose($fp);

        
/*foreach ($cadena as $emp) 
        {

            foreach($emp as $item)
                echo  $item."<br>";
            
        }
        */
        
return $cadena;

    }



Saludos
__________________
.: Gildus :.
  #7 (permalink)  
Antiguo 21/06/2011, 04:09
 
Fecha de Ingreso: mayo-2010
Mensajes: 60
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: [Ayuda]Lectura de Archivo txt

GRACIAS PADRE !!! Me sirvio muchisimo

Etiquetas: txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:40.