Foros del Web » Programando para Internet » PHP »

Insertar un archivo excel a una base de datos

Estas en el tema de Insertar un archivo excel a una base de datos en el foro de PHP en Foros del Web. Bueno la verdad que no sabia como titular mi problema. Vamos a ver.... Yo quiero importar todos los campos de un archivo excel en mi ...
  #1 (permalink)  
Antiguo 08/01/2007, 06:08
Avatar de Kalili  
Fecha de Ingreso: enero-2002
Ubicación: Gate 69
Mensajes: 210
Antigüedad: 22 años, 3 meses
Puntos: 0
Insertar un archivo excel a una base de datos

Bueno la verdad que no sabia como titular mi problema.
Vamos a ver....
Yo quiero importar todos los campos de un archivo excel en mi base de datos.
Lo hago mediante un csv.Hasta hay todo bien.
Lo tengo de esta forma
nombre apellidos empresa email etc
Como los registros son de datos de personas quiero que a la vez que inserto los datos se les mande un email a cada uno de ellos. Y aqui viene el problema. os pongo el codigo que tengo
Código PHP:
$filename $_SERVER['DOCUMENT_ROOT']."/beheer/excel/".$_GET["filename"];
$handle fopen("$filename""r");
while ((
$data fgetcsv($handle1000";")) !== FALSE) {
$query "INSERT INTO students VALUES ('$idstudent','"implode("','"$data)."','$date','$expiration_datum','$examen','$geslaagd')";
$query = @mysql_query($query,$database);
$lastinsert_id mysql_insert_id();

$query3 "SELECT * from students WHERE idstudent = '$lastinsert_id'";
$resultado mysql_query($query3,$database)or die("Error " mysql_error($database));
                 
$row mysql_fetch_row($resultado);
                 
$name $row[4];
                 
$firstname $row[7];
                 
$login $row[5];
                 
$pass $row[6];
                 
$email $row[8];
FUNCION MANDAR CORREO
    
}
    
fclose($handle); 
Donde pongo funcion mandar correo y tengo la funcion pero como es muy larga no me lo cogia.
Bueno con este script lo que me hace es me manda tatos correos como entradas tengo en el excel pero siempre me coge la primera persona, osea que no me recorre todas las entradas.
Cuando hago el insert que me lo hace bien recogo el ultimo id insertado y le digo que me seleccione todos los campos de ese id y le mando los datos al email de ese id.Pero algo hago mal que en todos los emails me manda los datos del promer registro.

Gurus del php ayudarme please
__________________
saludos
  #2 (permalink)  
Antiguo 08/01/2007, 09:44
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 8 meses
Puntos: 7
Re: Insertar un archivo excel a una base de datos

y el problema lo tienes? en la función de enviar el correo?

Espera, dejame consultar la bolita de cristal...
__________________
Gracias de todas todas
-----
Linux!
  #3 (permalink)  
Antiguo 09/01/2007, 03:07
Avatar de Kalili  
Fecha de Ingreso: enero-2002
Ubicación: Gate 69
Mensajes: 210
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Insertar un archivo excel a una base de datos

Cacr...
evidentemente el problema no esta en la funcion mandar correo!!
Esta la hace perfectamente.

El problema esta que no me manda el correo a todos los registros que tengo en el archivo excel
__________________
saludos
  #4 (permalink)  
Antiguo 09/01/2007, 03:09
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Insertar un archivo excel a una base de datos

Pero si ke inserta todos los de la lista de excel a la base de datos??
Si es asi, cuantos registros hay?? Por que si hay muchos a lo mejor tienes limitados el envio de muchos emails a la vez
  #5 (permalink)  
Antiguo 09/01/2007, 04:22
Avatar de Kalili  
Fecha de Ingreso: enero-2002
Ubicación: Gate 69
Mensajes: 210
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Insertar un archivo excel a una base de datos

No allebor, no es problema de la cantidad porque estoy probando con 20 registros y el caso es que me manda los 20 emails, pero me manda los 20 emails con los datos del primer registro. Lo que quiero es que coga los datos del primer registro y los mande al email de ese registro y asi sucesivamente con todos los registros.

El insert en la base de datos la hace correctamente.
gracias

Y
__________________
saludos
  #6 (permalink)  
Antiguo 09/01/2007, 04:28
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Insertar un archivo excel a una base de datos

aahh!!! Ya te entiendo lo que puedes hacer es que despues de insertar los registros hacer una consulta y poner un while e ir poniendo en una variable todos los emails separados por comas, luego usa la funcion email y los enviara a todos.
Yo tengo una cosa asi:

Código PHP:
include('bbcode/bbcode.php'); 
       
$mi_conexion=mysql_connect("localhost","****","*****");
       
mysql_select_db("*****",$mi_conexion);
       
//VARIABLES 
       
$asunto=$_POST['asunto'];
       
$cuerpobbcode($_POST['cuerpo]);
       $categoria=$_POST['
categoria'];
       $envia='
Agència Energètica de la Ribera';
       $remite='
aer@aer-ribera.com';

       $query_Tabla="select * from bol";
             
       $Tabla = mysql_query($query_Tabla, $mi_conexion) or die(mysql_error());
       
       $losemails="";
       
while ($row_Tabla=mysql_fetch_assoc($Tabla)) {
$losemails.=$row_Tabla['
email'].", ";
}

$largo=strlen($losemails);
if ($largo>2)
{
//quitamos ultimos ", "
$losemails=substr($losemails,0,$largo-2);
}
else
{
echo "No hi ha destinataris!   <a href='
./emails.php'>tornar</a>";
die();
};
// se definen el mensaje del mail( ):
//el email lo envio en formato HTML y lo quieres en texto plano solo tienes que poner las variables y el texto que quieras.
$mensaje='
<html>
<
head>
<
title>Agència Energètica de la Ribera</title>
</
head>
<
body>
<
table border="0" width="800" id="table1">
    <
tr>
        <
td>
<
p align="center">
<
a href="http://www.aer-ribera.com/">
<
img border="0" src="http://www.aer-ribera.com/web1/documentos/aer.jpg" width="189" height="136"></a></p>
<
p align="center">
<
b><font face="Verdana">L'<font size="4" color="#FF9900">A</font>gència
<font size="4" color="#FF9900">E</font>nergètica 
de la <font size="4" color="#FF9900">R</font>ibera informa:</font></b></p>
<p><font face="Verdana" size="2">'
.$cuerpo.'</font></p>
<p align="center">
&nbsp;</p>
<dl>
    <div align="center">
        <dt><b><font face="Verdana">L\'Agència Energètica de la Ribera </font>
        </b></dt>
    </div>
    <div align="center">
        <dt><strong>Plaça d\'Argentina</strong>,<br>
        <span class="Estilo6"><strong>46680 Algemesí&nbsp;&nbsp; (València)</strong></span><br>
        Tel. 96 242 46 41 - Fax 96 242 12 56<br>
        Email: [email][email protected][/email]<br>
&nbsp;</dt>
    </div> </td>
    </tr>
    </table>
</body>
</html>'
;



/// Envío del email:
mail(''$asunto$mensaje"MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: $envia <$remite>
Cc:[email protected]
Bcc: $losemails 
"\r\n") or die("Error al Enviar el Email");



    
mysql_free_result($Tabla);
    
mysql_close($mi_conexion);

    echo 
"<p><b><font face='Verdana'>Emails enviats correctament &nbsp;&nbsp;&nbsp;<a href='emails.php'>tornar</a></font></b></p>
<p><font face='Verdana'><b>Enviat a: </b>"
.$losemails."</font>  </p>";
    
    
?> 
  #7 (permalink)  
Antiguo 09/01/2007, 04:46
Avatar de Kalili  
Fecha de Ingreso: enero-2002
Ubicación: Gate 69
Mensajes: 210
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Insertar un archivo excel a una base de datos

Ok allebor pero el problema es como se cuales son los ultimos registros insertados a traves del excel?
Cuando hago el insert añado registros a la tabla. Esto es si tengo 100 registros y añado 20 mas quiero que se me envien a esos 20. Como puedo saber cuales son los ultimos registros insertados??
__________________
saludos
  #8 (permalink)  
Antiguo 09/01/2007, 04:56
Avatar de alllebor  
Fecha de Ingreso: septiembre-2006
Mensajes: 295
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Insertar un archivo excel a una base de datos

aahhh!! Yo pensaba que eso solo lo hacias una vez, pues cuando insertes pon un contador (por ejemplo: cont=0) y luego cuando hagas la consulta para enviar el email la haces cojiendo del ultimo registro hasta el ultimo-cont, o algo paecido o poniendo en la consulta un LIMIT '$cont'

SELECT * ORDER BY id DESC LIMIT '$cont'

No se si esta bien pero una cosa asi, me entiendes??

Para enviar los emails y en cada uno los datos de cada persona deberas poner la funcion email() dentro del while donde recorre los datos de la consulta. Asi realizara la funcion email tantas veces como registros hayas insertado.

Última edición por alllebor; 09/01/2007 a las 05:02
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 16:35.