Foros del Web » Programando para Internet » PHP »

problema con notice undefined offset

Estas en el tema de problema con notice undefined offset en el foro de PHP en Foros del Web. hola a todos, tengo el siguiente problema. estoy realizando un sistema de estadisticas en el cual cargo los datos de una planilla excel y los ...
  #1 (permalink)  
Antiguo 10/03/2008, 08:05
 
Fecha de Ingreso: enero-2008
Mensajes: 33
Antigüedad: 16 años, 3 meses
Puntos: 0
problema con notice undefined offset

hola a todos, tengo el siguiente problema. estoy realizando un sistema de estadisticas en el cual cargo los datos de una planilla excel y los muestro en pantalla para su posterior almacenamiento en una base de datos. la carga de datos la realizo en la siguiente funcion:
Código PHP:
    function guardar()
    {
        
error_reporting(15);
        if ( isset(
$_FILES['archivo']) && is_uploaded_file($_FILES['archivo']['tmp_name']) && is_readable($_FILES['archivo']['tmp_name']) ) {

            require_once(
$_SERVER['DOCUMENT_ROOT']."/includes/php/excel_php/reader.php");
            
//require_once($_SERVER['DOCUMENT_ROOT']."/includes/php/funciones.php");

            
$excel = new Spreadsheet_Excel_Reader();
            
$excel->setOutputEncoding("CP1251");
            
$excel->read($_FILES['archivo']['tmp_name']);
            
            
// numero de filas y columnas
            
$posf 0;
            
$filas $excel->sheets[0]['numRows'];
            
$columnas $excel->sheets[0]['numCols'];
            
            
$filas_f $filas 1;
            
$columnas_f $columnas 1;
            
            echo 
"Filas: " .$filas;
            echo 
"Columnas" .$columnas;
            
            
// Notice: Undefined offset: 16 in \index.php on line 147
            // No hay nada en la linea 16 de la planilla excel
            
            // Buscando el nombre del canal
            
for($posf 1$posf <= $filas_f $posf++ ){
            
                 if( 
$excel->sheets[0]['cells'][$posf][1] == "" ){
              print 
"No hay nada";
           }
           
           if( 
$excel->sheets[0]['cells'][$posf][1] == "Nombre del Canal" ){
              
$inicio $posf 1;
              break;
          }
      }
      
      for(
$fil $inicio$fil <= $filas_f $fil++ ){

            for(
$col 1$col <= $col++){

              
// Comprobando si existen elementos N/A
              // de ser asi, lo deja en 0.
              
if( $excel->sheets[0]['cells'][$fil][$col] == "N/A"  ){
                  
$excel->sheets[0]['cells'][$fil][$col] = 0;
              }
              
              
//echo "\"".$excel->sheets[0]['cells'][$i][$j]."\",";
              
print $excel->sheets[0]['cells'][$fil][$col]."<br>";
              
            } 
// fin 1° for

            
if( $excel->sheets[0]['cells'][$fil][$col] == "" ){
              break;
            }

            echo 
"\n";
            
      } 
// fin 2° for

    
// fin if

// fin guardar 
utlizo la funcion excelreader para php. me muestra los datos pero al imprimir tambien me muestran los siguientes resultados:

Filas: 31Columnas6
Notice: Undefined offset: 5 in C:\produccion2\wwwrootES\estadisticas\index.php on line 155
No hay nada
Notice: Undefined offset: 5 in C:\produccion2\wwwrootES\estadisticas\index.php on line 159

Notice: Undefined offset: 17 in C:\produccion2\wwwrootES\estadisticas\index.php on line 155
No hay nada
Notice: Undefined offset: 17 in C:\produccion2\wwwrootES\estadisticas\index.php on line 159
General
34702
28487
Desarrollos
0
0
Recomienda-Newsletters
0
0
Cartas-Al-Editor
0
0
Mail
112
80
Santander Universidades
317
280
Politicas
0
0
Etica
0
0
Recomendar
0
0
Investigacion
65
25
html
34208
28131

Notice: Undefined offset: 30 in C:\produccion2\wwwrootES\estadisticas\index.php on line 171

Notice: Undefined offset: 30 in C:\produccion2\wwwrootES\estadisticas\index.php on line 176


Notice: Undefined offset: 30 in C:\produccion2\wwwrootES\estadisticas\index.php on line 171

Notice: Undefined offset: 30 in C:\produccion2\wwwrootES\estadisticas\index.php on line 176


Notice: Undefined offset: 30 in C:\produccion2\wwwrootES\estadisticas\index.php on line 171

Notice: Undefined offset: 30 in C:\produccion2\wwwrootES\estadisticas\index.php on line 176



Notice: Undefined offset: 30 in C:\produccion2\wwwrootES\estadisticas\index.php on line 180

ojala me puedan orientar para solucionar este problema. de antemano muchas gracias.

Última edición por GatorV; 10/03/2008 a las 08:44 Razón: Agregar tags PHP
  #2 (permalink)  
Antiguo 10/03/2008, 08:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: problema con notice undefined offset

Todos esos "notice" son como "warnings" que te da PHP, de que estas tratando de leer un valor que no existe en el arreglo, al tu comparar con tu if:
Código PHP:
if( $excel->sheets[0]['cells'][$posf][1] == "" ){ 
Si hay algún valor no definido, por eso te lanza ese Notice, lo que debes de hacer es comprobar con isset primeramente y luego comparar:
Código PHP:
if( isset( $excel->sheets[0]['cells'][$posf][1] ) && ( $excel->sheets[0]['cells'][$posf][1] == "" ) ){ 
y así por cada if donde comparas y quieres ver si existe un valor.

Saludos.
  #3 (permalink)  
Antiguo 10/03/2008, 09:25
 
Fecha de Ingreso: enero-2008
Mensajes: 33
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: problema con notice undefined offset

GatorV.. gracias por tu aporte.. me ha servido muchisimo. mi ultima consulta es. lo que pasa es que deseo mostrar registros hasta que encuentre una fila vacia: como consulto si existe una fila vacia ?? hasta el momento lo hago de la siguiente forma:

if( isset( $excel->sheets[0]['cells'][$fil][$col] ) && ($excel->sheets[0]['cells'][$fil][$col] == "") ){
break;
}

pero de todas maneras me sale el mensaje de notice undefined offset despues del ultimo registro de la planilla.

estoy bien en el ultimo codigo? o necesito modificarlo ?

de antemano gracias gatorV
  #4 (permalink)  
Antiguo 10/03/2008, 09:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: problema con notice undefined offset

Lo que pasa es que primero debes de preguntar si esta la fila, y si existe entonces preguntas la columna:
Código PHP:
if( isset( $excel->sheets[0]['cells'][$fil] ) && isset( $excel->sheets[0]['cells'][$fil][$col] ) && ($excel->sheets[0]['cells'][$fil][$col] == "") ){
break;

Saludos.
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 12:53.