Nueva pregunta

Pregunta:

Fecha: 04-07-2017 06:27:10 (En Español)

Contar registros importados desde un archivo CSV con PHP[Resuelta]

Antes de explicar mi problema quiero recalcar que ya mire las posibles respuestas a mi pregunta, y todas tratan con algo diferente. Lo que quiero hacer es que al importar un archivo CSV a una tabla me muestre el numero de filas que he insertado o que tiene el archivo, o si no se ha seleccionado un archivo que muestre un mensaje de que tengo seleccionar uno, el archivo me sube bien, pero el problema es que no me muestra el conteo de las filas, hasta ahora tengo el siguiente código:

<?php        
if(isset($_POST['importar'])){        
echo "<center>";
echo "<img src='../IMAGENES/candado.png'>";     
echo "</center>";
}
?>
<?php
extract($_POST);
if($action == "upload"){
$archivo = $_FILES['file']['tmp_name'];
$row = 1; 
$fp = fopen ($archivo,"r"); 
while ($data = fgetcsv ($fp, 1000, ";")){ 
  $num = count ($data); 
  print " <br>"; 
  $row++; 
  $insertar="INSERT INTO acta_entrega_huawei (NUMERO, PLANILLA, N_PEDIDO, 
  PROCESO, FECHA_E_FAC, FECHA_E_CON, FECHA_OPE, OBSERVACIONES) VALUES 
  ('$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]', '$data[5]', '$data[6]', '$data[7]');";

  mysql_query($insertar);
} 
fclose ($fp); 

echo "<td><center><font face=\"arial\" color=\"green\"><b>Registros 
insertados ".$row."</b></font></center></td>";
}
?>
Etiquetas: CSV - HTML - MySQL - PHP - Pregunta - Subir Archivos (Upload) Votos: 0 - Respuestas: 4 - Vistas: 19 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 04-07-2017 06:43:07 utiliza mysqli_affected_rows

    echo mysqli_affected_rows($mysqli_query);
    


    por cierto cambia a mysqli ya mysql esta depreciada y podrias tener problemas a futuro al intentar escalar tu codigo a versiones mas recientes de php.

    Para lo de si existe o no el fichero, luego de la carga valida si este esta en el directorio:

    if (!file_exists($ruta)) {
        return "El Archivo no exiete";
    }
    
    
      Votos: 2 - Link respuesta
     
  • Fecha: 04-07-2017 06:56:42 Gracias por responder Carlos, pero ya he probado con la funcion que me dices y sigue sin mostrarme el el numero de registros insertados. el codigo quedo asi:

    <?php
     extract($_POST);
      if($action == "upload"){
        $archivo = $_FILES['file']['tmp_name'];
        
        $fp = fopen ($archivo,"r");
        while ($data = fgetcsv ($fp, 1000, ";")){ 
          
          $num = count($data); 
          print " <br>"; 
          $insertar="INSERT INTO acta_entrega_huawei (NUMERO, PLANILLA, N_PEDIDO, PROCESO, FECHA_E_FAC, FECHA_E_CON, FECHA_OPE, OBSERVACIONES) VALUES ('$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]', '$data[5]', '$data[6]', '$data[7]')"; 
          $sql = mysqli_query($insertar);
          
    
        } 
    
        fclose ($fp); 
    
    echo "Registros Insertados".mysqli_affected_rows($sql);


    No se si estoy haciendo algo malo?
      Votos: 0 - Link respuesta
     
  • Fecha: 04-07-2017 07:20:19 prueba asi:

    
     extract($_POST);
      if($action == "upload"){
        $archivo = $_FILES['file']['tmp_name'];
        
        $fp = fopen ($archivo,"r");
        $canti = 1;//Iniciamos el contador en 1
        while ($data = fgetcsv ($fp, 1000, ";")){ 
          
          $num = count($data); 
          print " <br>"; 
          $insertar="INSERT INTO acta_entrega_huawei (NUMERO, PLANILLA, N_PEDIDO, PROCESO, FECHA_E_FAC, FECHA_E_CON, FECHA_OPE, OBSERVACIONES) VALUES ('$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]', '$data[5]', '$data[6]', '$data[7]')"; 
          $sql = mysqli_query($insertar);
          if($sql){
             $canti++;//sumamos un registro por cada ejecucion positiva
          }
          
        } 
        fclose ($fp); 
    echo "Registros Insertados".$canti;//mostramos la cantidad insertada
    
    
    


    tambien deberias de desactivar el autocommit y utilizar un try para detectar fallos en la inserción y devolver todo atras en caso de error
      Votos: 3 - Link respuesta
     
  • Fecha: 05-07-2017 13:12:25 Un par de sugerencias adicionales:
    1. No utilices extract así. Estás abriendo un hueco de seguridad enorme.
    2. Inicializa el contador en 0. De lo contrario estás asumiendo que al menos una registro se insertó y puede ocasionar confusiones.
    3. Remueve la sentencia siguiente o sácala del while:
    print " <br>"; 


    Saludos!
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com