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Ó 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;
}
}
?>
(http://img405.imageshack.us/img405/3831/sinttuloma.jpg) (http://imageshack.us/photo/my-images/405/sinttuloma.jpg/)
Uploaded with ImageShack.us (http://imageshack.us)
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, -1, PREG_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
Gracias papa ! Lo probaré y en un rato les comento como me fue..
Si tienen alguna otra sugerencia no duden en comentarla..
GRACIAS
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...
(http://img706.imageshack.us/img706/4756/sinttulohvc.png) (http://imageshack.us/photo/my-images/706/sinttulohvc.png/)
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($fp, 1000, ","))
{
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...
Pero no estas usando el codigo que te puse... con mi codigo funciona bien!
<?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.