[Ayuda] PHP Script y Excel

  • Autor Autor kizz
  • Fecha de inicio Fecha de inicio
K

kizz

Alfa
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de 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!
 
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
 
Atrás
Arriba