Foros del Web » Programando para Internet » PHP »

Validar datos de un fichero de texto csv con php

Estas en el tema de Validar datos de un fichero de texto csv con php en el foro de PHP en Foros del Web. hola a todos, Podria alguien ayudarme? , mi problema consiste que cuando voy a validar los campos de un fichero de texto el contador que ...
  #1 (permalink)  
Antiguo 27/09/2005, 13:28
 
Fecha de Ingreso: marzo-2005
Mensajes: 41
Antigüedad: 19 años, 8 meses
Puntos: 0
Validar datos de un fichero de texto csv con php

hola a todos,

Podria alguien ayudarme? , mi problema consiste que cuando voy a validar los campos de un fichero de texto el contador que me permite moverme por el fichero se salta y no me permite validar bien los campos..
Si hay alguien que me pueda colaborar se lo agradecería mucho.


este es el codigo que llevo hasta ahora.

Mi problema es que en el primer while el contador ($cont1), no se incrementa, lo que ocasiona que no pueda hacer bien las comparaciones.

Las comparaciones consisten en lo siguiente:
necesito que si el campo fecha y el campo servicio se repiten, es decir estan mas de una vez en el fichero me salga un error; esta es basicamente la comparacion que mas necesito, pues los demas datos los verifico como ud pueden apreciar.

la idea de todo esto es hacer que el segundo while recorra todo el fichero y lo compare con el primer while, de manera que si quiero validar el primer campo del fichero y si tiene algun error me salga el error.

<?

if($_GET)
{
echo "<link href='Stilo_Transmi.css' rel='stylesheet' type='text/css'>";
echo"<center><h2><b>TABLA ASIGNACION</b></h2></center>";
echo "<center><h3><b>Verificar</b></h3></center><br>";

echo "<BR><CENTER><B>Nombre del Archivo ".$archivo."</B></CENTER><BR>";

//include("ConectarMySql.php");
include("ValidarFecha.php");
include("Fecha.php");

$num = 0;
$cont=0;
$k=0;
$j=1;

//Se abre el Fichero
$fichero = fopen("CSV/".$archivo,"r");


//crear la tabla
echo "<table border=1 class='ensayo'>";
echo "<tr>";
echo"<th>Fecha</th>";
echo"<th>Servicio</th>";
echo"<th>Conductor</th>";
echo"<th>Turno</th>";
echo "</tr>";

//VALIDAR CAMPOS

//mientras hallan datos en el fichero
while($data = fgetcsv($fichero,1000,";"))
{ //contar los datos desde la segunda linea sin el titulo
if($cont==0)
{
$cont++;
}
else
{
//echo "Soy cont"." ".$cont;

$fecha = $data[$k];
//echo"fecha".$data[$k];
$cod = $data[$j];
//echo"cod".$data[$j]."<br>";

$cond = strlen($data[2]);

//$cond2 = count($data[2]);


$nums2 = strlen($cod);
//echo nums2;
$turno = $data[3];
$tur = strlen($turno);


$cont2=1;

//recorrer el fichero para hacer las comparaciones
while($data1 = fgetcsv($fichero,1000,";"))
{
if($cont2==1)
{
$cont2++;
}
else
{
echo "cont2= ".$cont2."<br>";

$fecha1 = $data1[$k];
//echo"fecha1".$data1[$k];
$cod1 = $data1[$j];
//echo"cod1".$data1[$j]."<br>";

$datavale = strlen($data1[2]);

$cond1 = strlen($data1[2]);

$cond2 = count($data1[2]);

$esfecha = valida_fecha($fecha1);
//echo "$esfecha";

$nums = strlen($cod1);
//echo $nums;

$Servicio = strlen($data1[1]);

//echo $cadena."<br>";

$tur1 = strlen($data1[3]);


//$num2 = count($conductor1);

//valida mismo servicio <> misma fecha
if($fecha == $fecha1 and $cod==$cod1)
{

echo"<center><b>Error.Hay un mismo servicio</b> ".$cod1." <b>para la misma fecha</b> ".$fecha1."<br></center>";

echo"<tr><td>$data[0]</td>","<td>$data[1]</td>","<td>$data[2]</td>","<td>$data[3]</td></tr>";

echo"<tr><td>$data1[0]</td>","<td>$data1[1]</td>","<td>$data1[2]</td>","<td>$data1[3]</td></tr>";

break;

}

//valida si campo Fecha es valido
elseif($data1[0] <> $esfecha)
{

echo "<center><b>Error. El Campo Fecha Es Invalido</b>".$data1[0]."<br></center>";

echo"<tr><td>$data[0]</td>","<td>$data[1]</td>","<td>$data[2]</td>","<td>$data[3]</td></tr>";

echo"<tr><td>$data1[0]</td>","<td>$data1[1]</td>","<td>$data1[2]</td>","<td>$data1[3]</td></tr>";

break;
}

//valida si campo Servicio es valido
if($nums < $nums2)
{

echo"<center><b>Error. Falta Completar El Campo Servicio </b>".$cod1."</center><br>";

/* echo"<tr><td>"."$data[0]"."</td>".","."<td>"."$data[1]"."</td>".","."<td>"."$data[2]"."</td>".","."<td>"."$data[3]"."</td></tr>";*/

echo"<tr><td>$data1[0]</td>","<td>$data1[1]</td>","<td>$data1[2]</td>","<td>$data1[3]</td></tr>";

break;
}

elseif($Servicio > 6 and $Servicio < 9)
{
//echo $Servicio;
echo"<center><b>Error en Campo Servicio </b>".$data1[1]."</center><br>";

echo"<tr><td>$data1[0]</td>","<td>$data1[1]</td>","<td>$data1[2]</td>","<td>$data1[3]</td></tr>";

break;
}



//valida si campo Conductor es valido
if($cond < $cond1)
{
echo"<center><b>cond Error. Falta Completar El Campo Conductor</b>".$data[2]."<center><br>";

echo"<tr><td>$data[0]</td>","<td>$data[1]</td>","<td>$data[2]</td>","<td>$data[3]</td></tr>";

break;
}

elseif($datavale < 5)
{
echo $datavale;
echo "<center><b>Error. Falta Completar El Campo Conductor</b>".$data1[2]."<center><br>";

echo"<tr><td>$data1[0]</td>","<td>$data1[1]</td>","<td>$data1[2]</td>","<td>$data1[3]</td></tr>";

break;
}


//valida si campo Turno es valido
if($tur<3)
{
echo"<br><center><b>Error. Falta Llenar El Campo Turno</b>".$turno."</center>";

echo"<tr><td>$data[0]</td>","<td>$data[1]</td>","<td>$data[2]</td>","<td>$data[3]</td></tr>";


break;
}


if($tur1 != 3)
{

echo"<br><center><b>Error. Falta Llenar El Campo Turno</b>".$data1[3]."</center>";

echo"<tr><td>$data1[0]</td>","<td>$data1[1]</td>","<td>$data1[2]</td>","<td>$data1[3]</td></tr>";

$cont2++;//hay que incrementar el contador cuando entra al if.
break;
}

$cont2=$cont2+1;
}


//$fecha2 = CambioFecha($data[0]);
echo"<tr><td>$data1[0]</td>","<td>$data1[1]</td>","<td>$data1[2]</td>","<td>$data1[3]</td></tr>";

}
$cont++;
}

}
echo "</table>";
fclose($fichero);

}//fin $_GET
else
{
?>
<html>
<link href='Stilo_Transmi.css' rel='stylesheet' type='text/css'>
<body>
<center><H2><br><b>TABLA ASIGNACION</b></H2></center>
<center><br><b>Verificar</b></center>
<center><h3><b>Seleccione Archivo Subido csv</b></h3>
<form action="" enctype="multipart/form-data" name="miformu" onSubmit="return validar(this)">
<b>Archivo</b> <input name="archivo" type="file">

<input type="submit" value="VERIFICAR" class="boton">
</form></center>
</body>
</html>
<?
}
?>

Anexo el fichero de prueba:
Nombre del fichero: 20062005_CB.csv

fecha;servicio;conductor;turno
20/06/2005;CB0001;70109;000
20/06/2005;CB0002;70026;000
20/06/2005;CB0003;70030;000
20/06/2005;CB0004;70024;000
20/06/2005;CB0005;70056;000
20/06/2005;CB0006;70105;000
20/06/2005;CB0007;70042;000
20/06/2005;CB0008;70020;000
20/06/2005;CB0009;70071;000
20/06/2005;CB0010;70064;000
20/06/2005;CB0011;70065;000
20/06/2005;CB0012;70095;000
20/06/2005;CB0013;70098;000
20/06/2005;CB0014;70107;000
20/06/2005;CB0015;70117;000
20/06/2005;CB0016;70101;000
20/06/2005;CB0017;70087;000
20/06/2005;CB0018;70007;000
20/06/2005;CB0019;70103;000
20/06/2005;CB0020;70103;000
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 21:16.