[Ajuda] PHP Script e Excel

  • Autor Autor kizz
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
K

kizz

Alfa
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Que tal Betas,

Tengo un Script que permite 'cargar e importar' el contenido de un archivo 'xlsx' a una base de datos MySQL con un simple formulario para posteriormente realizar una búsqueda mediante ID + Nombre, si ambos coinciden, se muestra el contenido de las 40 columnas en otro formulario HTML. Mi problema ahora es que al 'cargar' el archivo 'xlsx', solo se carga la primera hoja de Excel y no todas.

Código HTML

<form action="index.php" method="post" enctype="multipart/form-data">
<label for="file"><i class="fa fa-search"></i> Seleccionar archivo...</label>
<input type="file" name="file" id="file">
<input type="submit" name="submit" value="Enviar">
</form>

Código PHP

<?php
exit;
}

if ($_FILES["file"]["error"] > 0) {
echo "Ocurrió un error: " . $_FILES["file"]["error"] . "<br>";
} else {

include('../config.php');

require_once('BasicExcel/Reader.php');
\BasicExcel\Reader::registerAutoloader();

try {
$xls = new \BasicExcel\Reader\Xlsx();
$xls->load($_FILES["file"]["tmp_name"]);
$data = $xls->toArray(1);
} catch (Exception $e) {
echo "Error: ".$e->getMessage();
exit;
}

echo "...";
$dbh->beginTransaction();
$sth = $dbh->prepare("TRUNCATE ".DB_PREFIX."prefijoaqui");
$sth->execute();

$fl = true;
foreach ($data as $line) {
if ($fl) {
$fl = false;
continue;
}

$json = json_encode($line);
$q = "REPLACE INTO ".DB_PREFIX."prefijoaqui (`ID`,`Name`,`column 3`,`column 4`,`column 5`,`column 6`,`column 7`,`column 8`,`column 9`,`column 10`,`column 11`,`column 12`,`column 13`,`column 14`,`column 15`,`column 16`,`column 17`,`column 18`,`column 19`,`column 20`,`column 21`,`column 22`,`column 23`,`column 24`,`column 25`,`column 26`,`column 27`,`column 28`,`column 29`,`column 30`,`column 31`,`column 32`,`column 33`,`column 34`,`column 35`,`column 36`,`column 37`,`column 38`,`column 39`,`column 40`,`JSON`) VALUES 🙂col1,:col2,:col3,:col4,:col5,:col6,:col7,:col8,:col9,:col10,:col11,:col12,:col13,:col14,:col15,:col16,:col17,:col18,:col19,:col20,:col21,:col22,:col23,:col24,:col25,:col26,:col27,:col28,:col29,:col30,:col31,:col32,:col33,:col34,:col35,:col36,:col37,:col38,:col39,:col40,:json)";

$sth = $dbh->prepare($q);
$sth->bindValue(':col1', $line[0], PDO:: PARAM_INT);
$sth->bindValue(':col2', $line[1], PDO:: PARAM_STR);
$sth->bindValue(':col3', $line[2], PDO:: PARAM_STR);
$sth->bindValue(':col4', $line[3], PDO:: PARAM_STR);
$sth->bindValue(':col5', $line[4], PDO:: PARAM_STR);
$sth->bindValue(':col6', $line[5], PDO:: PARAM_STR);
$sth->bindValue(':col7', $line[6], PDO:: PARAM_STR);
$sth->bindValue(':col8', $line[7], PDO:: PARAM_STR);
$sth->bindValue(':col9', $line[8], PDO:: PARAM_STR);
$sth->bindValue(':col10', $line[9], PDO:: PARAM_STR);
$sth->bindValue(':col11', $line[10], PDO:: PARAM_STR);
$sth->bindValue(':col12', $line[11], PDO:: PARAM_STR);
$sth->bindValue(':col13', $line[12], PDO:: PARAM_STR);
$sth->bindValue(':col14', $line[13], PDO:: PARAM_STR);
$sth->bindValue(':col15', $line[14], PDO:: PARAM_STR);
$sth->bindValue(':col16', $line[15], PDO:: PARAM_STR);
$sth->bindValue(':col17', $line[16], PDO:: PARAM_STR);
$sth->bindValue(':col18', $line[17], PDO:: PARAM_STR);
$sth->bindValue(':col19', $line[18], PDO:: PARAM_STR);
$sth->bindValue(':col20', $line[19], PDO:: PARAM_STR);
$sth->bindValue(':col21', $line[20], PDO:: PARAM_STR);
$sth->bindValue(':col22', $line[21], PDO:: PARAM_STR);
$sth->bindValue(':col23', $line[22], PDO:: PARAM_STR);
$sth->bindValue(':col24', $line[23], PDO:: PARAM_STR);
$sth->bindValue(':col25', $line[24], PDO:: PARAM_STR);
$sth->bindValue(':col26', $line[25], PDO:: PARAM_STR);
$sth->bindValue(':col27', $line[26], PDO:: PARAM_STR);
$sth->bindValue(':col28', $line[27], PDO:: PARAM_STR);
$sth->bindValue(':col29', $line[28], PDO:: PARAM_STR);
$sth->bindValue(':col30', $line[29], PDO:: PARAM_STR);
$sth->bindValue(':col31', $line[30], PDO:: PARAM_STR);
$sth->bindValue(':col32', $line[31], PDO:: PARAM_STR);
$sth->bindValue(':col33', $line[32], PDO:: PARAM_STR);
$sth->bindValue(':col34', $line[33], PDO:: PARAM_STR);
$sth->bindValue(':col35', $line[34], PDO:: PARAM_STR);
$sth->bindValue(':col36', $line[35], PDO:: PARAM_STR);
$sth->bindValue(':col37', $line[36], PDO:: PARAM_STR);
$sth->bindValue(':col38', $line[37], PDO:: PARAM_STR);
$sth->bindValue(':col39', $line[38], PDO:: PARAM_STR);
$sth->bindValue(':col40', $line[39], PDO:: PARAM_STR);
$sth->bindValue(':json', $json);
$sth->execute();
}

$dbh->commit();

echo " Finalizado.";
}

'Agregué un espacio entre ':: P' porque me lo toma como un emoticón'.

Cabe mencionar que no soy un experto, todo fue a base de prueba, error y tutoriales.

Gracias,
Saludos!
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Trata exportando el archivo a .csv y migra los datos directamente a la base de datos si es lo que requieres.
 
Fijate si en el config.php o al cargar el metodo reader no hay un parametro para setear que tome todas las hojas del documento.
 
Gracias por sus respuestas y una disculpa por la demora, tuve problemas con mi conexión a Internet.

Ya intenté exportando los archivos a .csv, pero me genera un error de ID [Columna A] y config.php tengo lo siguiente:

<?php

mb_internal_encoding("UTF-8");

// DB
define('DB_DRIVER', 'mysql');
define('DB_HOSTNAME', 'localhost');
define('DB_USERNAME', '');
define('DB_PASSWORD', '');
define('DB_DATABASE', '');
define('DB_PREFIX', '');

try {
$dbh = new PDO(DB_DRIVER.':host='.DB_HOSTNAME.';dbname='.DB_DATABASE.';charset=UTF8', DB_USERNAME, DB_PASSWORD, array(
PDO::ATTR_PERSISTENT => false,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => true,
PDO::ERRMODE_EXCEPTION => true
));
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}

En si las instrucciones de carga se realizan en el index.php [Formulario de Carga] del folder admin y las función de búsqueda desde search.php e index.HTML [Formulario de búsqueda].

Sino es molestia, adjunto el Script que contiene los archivos search.php, config.php, index.html y admin/index.php
https://drive.google.com/file/d/0B32gqAIU2ueRMUFOcjhaNUJsd2M/edit?pli=1

Gracias
 
Voltar
Topo