Subir archivo .xls a base de datos!!!

Iniciado por 01munrra, 17 Enero 2012, 16:35 PM

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

01munrra

saludos, le comento tengo este formulario

subirXLS.php

Código (php) [Seleccionar]

<form enctype="multipart/form-data" action="control.php" method="post" enctype="multipart/form-data" name="Archivo" id="Archivo">

  <table width="219" border="0">

    <tr>

      <td width="140"> Seleccionar Archivo &nbsp;</td>

      <td width="69">

  <label>

        <input type="file" name="file" id="file" />

      </label></td>

    </tr>

    <tr>

      <td>&nbsp;</td>

      <td><label>

        <input name="Archivo" type="submit" id="Archivo" value="Subir">

      </label></td>

    </tr>

  </table>

</form>


y este otro

control.php

Código (php) [Seleccionar]

<?php

require_once 'Excel/reader.php';

require_once 
'conexion.php';



$Archivo $_FILES['file'];

  

$dato = new Spreadsheet_Excel_Reader();

$dato->read('$Archivo');

$celdas $dato->sheets[0]['cells'];

  

for( 
$j=1$j<15$j++ )

{

 
$Nombre $celdas[$j][1];

 
$Nota $celdas[$j][2];

  

 
$consulta mysql_query("select nombre from archivo where nombre = '$Nombre'",$conexion);

 
$resultado mysql_num_rows($consulta);



 if(
$resultado == )

  { echo 
'hola'; }

 else

  { 

   
$sql "INSERT INTO archivo (nombre,nota)";

   
$sql.= "Values ('$Nombre','$Nota')";

   
mysql_query($sql,$conexion) or die(mysql_error());   

  }



echo 
'Proceso Exitoso!!! ';

?>




OK....

entonces, lo que quiero hacer es leer un archivo xls una simple presentacion donde seleccionar desde un boton que te permitira explorar en el disco y buscar el archivo con extensión xls,,, pero resulta ser que el script control.php no me reconoceel archivo que le estoy enviando, sera que se lo estoy enviando mal????

[u]nsigned

Aca tenes un error en la sentencia SQL:

Código (php) [Seleccionar]
$sql = "INSERT INTO archivo (nombre,nota)";

Deberia ser:

Código (php) [Seleccionar]
$sql = "INSERT INTO archivo (nombre,nota) VALUES ('$nombre', '$nota')";

Es decir, te falta indicar que valore (VALUES) insertar en la DD.BB. prueba con eso, saludos!

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

01munrra

me sigue dando el mismo error..........

este es el error "The filename $Archivo is not readable"
.................

#!drvy

Hola,

Errores no tan importantes:

1. En el <form> tienes 2 veces declarado el enctype.
2. El formulario y el boton submit tienen el mismo nombre.

Errores muy importantes
Aparte, del que ya te ha mencionado @El As del Club Paris,

Código (php) [Seleccionar]
$dato->read('$Archivo');

Usas comillas simples. La variable no se lee y queda como texto puro.
La solucion seria

Código (php) [Seleccionar]
$dato->read($Archivo);

* Recuerda que si tienes las variables globales activadas va a funcionar mal porque el formulario y el botón submit tienen el mismo nombre.

Errores graves

No filtras ninguna variable que te envían. Problema grave de seguridad. Consulta sobre como evitar SQLi , y la subida de ficheros no deseados.


Saludos

01munrra

Gracias!!!! me sirvio bastante su ayuda pero tengo un error, les cuento la logica de este codigo, lo que quiero es leer un archivo .xls y montarlo en la base de datos, resulta ser que tengo una clases de excel que me permite leer archivos de esta extensión(xls) para poder manipularlo, entonces les cuento que pobre con esto:

para probar las clases hice esto:

$dato = new Spreadsheet_Excel_Reader();
$dato->read('datos.xls');

es decir le asigne el archivo xls directamente para probar las clases y si me funciona de esta forma, me lo guarda en la base de datos, todo bien....

pero cuando pruebo de la forma como les comente arriba de esta forma:

$Archivo = $_FILES['file'];

es decir que trabaje con el archivo la cual se le asigne desde el formulario de subirXLS.php, pero cuando lo corro haci me aroja errores en las clases que estoy usando....

aqui las clases que estoy usando.

http://www.4shared.com/file/J6aVAnSg/oleread.html
http://www.4shared.com/file/ViHrv1uf/reader.html

son 2 archivos,...........

les agradezco su ayuda de verdad...............

#!drvy

Hola,

Has probado con usar el tmp_name ?

Algo tipo así:

Código (php) [Seleccionar]

$Archivo = $_FILES["file"]["tmp_name"];


PD: Si muestras los errores que te tira, quizás te podamos ayudar mas...

Saludos

01munrra

 ;-)  Gracias!!!!! ahora si me funciona............ no conocia esa forma,,,, que esta haciendo el tmp_name ???? ...........

:huh: otra cosa, estoy tratando de hacer un ciclo donde me lea la informacion  del archivo xls, resulta ser que lo estaba haciendo haci

while( $celdas[$j][1] != "" )
{
//sentencias
$i ++;
}

pero me da un error al leerlo, tienes alguna idea de hacerlo mejor???

gracias de antemano,,,,

#!drvy

Hola,

Que error te da ?
Prueba utilizando foreach, es mas rápido que whille.

Respecto a tmp_name,  contiene la ruta y nombre temporal que se le da al archivo, al subirlo mediante php.


Saludos

01munrra

#8
fijate como estoy haciendo el ciclo de lectura del archivo xls.:

Código (php) [Seleccionar]

$j = 1;

while( $celdas[$j][1] != "" )
{
$Nombre = $celdas[$j][1];
$Nota = $celdas[$j][2];

$consulta = mysql_query("select nombre from archivo where nombre = '$Nombre'",$conexion);
$resultado = mysql_num_rows($consulta);

if($resultado == 1 )
 {  }
else
 {
   $sql = "INSERT INTO archivo (nombre,nota) Values ('$Nombre','$Nota')";
   mysql_query($sql,$conexion) or die(mysql_error());
  }
$j++;
}


y me lanza este error

Código (php) [Seleccionar]

Notice: Undefined offset: 20 in C:\wamp\www\Ejemplo Excel\control.php on line 12
Proceso Exitoso!!!


la linea 12 es la del while...

bueno cabe destacar que si me lo esta guardando en la base de datos, pero igual me lanza este error...



#!drvy

Hola,

Mmmm... lo del offset es porque te pasas de las celdas y ya no puede obtener ninguna...
Prueba así:

Código (php) [Seleccionar]

foreach($celdas as $celda){
  $Nombre = $celda[1];
  $Nota = $celda[2];
 // resto del codigo SIN el j++
}


Saludos