Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con script de php

Estas en el tema de Problema con script de php en el foro de PHP en Foros del Web. Buenas amigos, en primer lugar presentarme. He encontrado este foro por casualidad y la verdad que es digno de admirar lo que se puede aprender ...
  #1 (permalink)  
Antiguo 07/02/2013, 12:15
 
Fecha de Ingreso: febrero-2013
Mensajes: 6
Antigüedad: 11 años, 2 meses
Puntos: 0
Problema con script de php

Buenas amigos, en primer lugar presentarme. He encontrado este foro por casualidad y la verdad que es digno de admirar lo que se puede aprender aquí.

Miren estoy tratando de formar un archivo php que me inserte un archivo csv directamente a la base de datos mysql.

Os voy a poner el código tal cual. No se que ocurre, pero aunque aparentemente hace todo y me dice que lo ha insertado correctamente, después cuando miro en mysql no es cierto, no ha realizado dicha acción.

Código PHP:
<?php  

//connect to the database 
$connect mysql_connect("localhost","root","30061975"); 
mysql_select_db("inforbet_estadisticas",$connect); //select the table 
// 

if ($_FILES[csv][size] > 0) { 

    
//get the csv file 
    
$file $_FILES[csv][tmp_name]; 
    
$handle fopen($file,"r"); 
     
    
//loop through the csv file and insert into database 
    
do { 
        if (
$data[0]) { 
            
mysql_query("INSERT INTO bundesliga (id,equipo,JC,GC,EC,PC,GFC,GCC,JF,GF,EF,PF,GFF,GCF,JT,GT,ET,PT,GFT,GCT,OC,UC,OF,UF,OT,UT) VALUES 
                ( 
                    '"
.addslashes($data[0])."', 
                    '"
.addslashes($data[1])."', 
                    '"
.addslashes($data[2])."', 
                    '"
.addslashes($data[3])."', 
                    '"
.addslashes($data[4])."', 
                    '"
.addslashes($data[5])."', 
                    '"
.addslashes($data[6])."', 
                    '"
.addslashes($data[7])."',
                    '"
.addslashes($data[8])."', 
                    '"
.addslashes($data[9])."', 
                    '"
.addslashes($data[10])."', 
                    '"
.addslashes($data[11])."', 
                    '"
.addslashes($data[12])."', 
                    '"
.addslashes($data[13])."', 
                    '"
.addslashes($data[14])."',
                    '"
.addslashes($data[15])."', 
                    '"
.addslashes($data[16])."', 
                    '"
.addslashes($data[17])."', 
                    '"
.addslashes($data[18])."', 
                    '"
.addslashes($data[19])."', 
                    '"
.addslashes($data[20])."', 
                    '"
.addslashes($data[21])."',
                    '"
.addslashes($data[22])."', 
                    '"
.addslashes($data[23])."', 
                    '"
.addslashes($data[24])."', 
                    '"
.addslashes($data[25])."',         
                    '"
.addslashes($data[26])."' 
                ) 
            "
); 
        } 
    } while (
$data fgetcsv($handle,1000,",","'")); 
    
// 

    //redirect 
    
header('Location: actualizar.php?success=1'); die; 



?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Import a CSV File with PHP & MySQL</title> 
</head> 

<body> 

<?php if (!empty($_GET[success])) { echo "<b>Your file has been imported.</b><br><br>"; } //generic success notice ?> 

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
  Choose your file: <br /> 
  <input name="csv" type="file" id="csv" /> 
  <input type="submit" name="Submit" value="Submit" /> 
</form> 

</body> 
</html>
Por favor si alguien encuentra donde puede estar el fallo, que me lo comunique Muchas gracias por vuestra atención.
  #2 (permalink)  
Antiguo 07/02/2013, 12:53
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Problema con script de php

realmente no interceptas si te da error en realidad, por el cual podrías setear el resultado en una variable, y si retorna false hay error:

$resultado = mysql_query ....

por otro lado MySQL puede leer directamente CSV y volcarlo en una tabla, consulta la documentación de LOAD DATA IN FILE y te ahorrarás mucho código

PD: te faltó pasar $connect a mysql_query, y borra la contraseña!!, la dejaste expuesta
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 07/02/2013, 14:50
 
Fecha de Ingreso: febrero-2013
Mensajes: 6
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con script de php

Lo de la contraseña da igual, es un servidor localhost de pruebas y puse esa como podia haber puesto otra.

Debo de ser muy torpe por que no se como pasar $connect a mysql_querry
  #4 (permalink)  
Antiguo 07/02/2013, 14:53
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Problema con script de php

Cita:
Iniciado por mutepara Ver Mensaje
Lo de la contraseña da igual, es un servidor localhost de pruebas y puse esa como podia haber puesto otra.

Debo de ser muy torpe por que no se como pasar $connect a mysql_querry
¿y para que existe la documentación?: consultando el manual de php te darás cuenta de que mysql_query tiene 2 parámetros, el $link o resource_id de la conexión es el 2do:

$resultado = mysql_query('sql', $connect);
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 07/02/2013, 15:37
 
Fecha de Ingreso: febrero-2013
Mensajes: 6
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con script de php

De verdad que he mirado y vuelta a mirar pero no lo consigo. Llevo horas y horas en ello, pero mi nivel de php no da para más.

Tampoco me ha dado resultado de la forma que lo has puesto ahora. Me doy por vencido en este asunto.

Tendré que añadirlo por la consola de phpmyadmin, he intentado también LOAD DATA IN FILE con diversos códigos y siempre me ocurre lo mismo, da la sensación de que todo esta ok, pero en realidad no ha insertado los datos en la tabla.

Mil gracias por tu ayuda maycolalvarez, pero soy muy torpe y me siento limitado y frustrado, llevo horas intentándolo.
  #6 (permalink)  
Antiguo 07/02/2013, 15:45
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Problema con script de php

Y pasaste el parametro de conexion al metodo mysql_query asi:

Código PHP:
Ver original
  1. mysql_query("INSERT INTO bundesliga (id,equipo,JC,GC,EC,PC,GFC,GCC,JF,GF,EF,PF,GFF,GCF,JT,GT,ET,PT,GFT,GCT,OC,UC,OF,UF,OT,UT) VALUES  
  2.                (  
  3.                    '".addslashes($data[0])."',  
  4.                    '".addslashes($data[1])."',  
  5.                    '".addslashes($data[2])."',  
  6.                    '".addslashes($data[3])."',  
  7.                    '".addslashes($data[4])."',  
  8.                    '".addslashes($data[5])."',  
  9.                    '".addslashes($data[6])."',  
  10.                    '".addslashes($data[7])."',
  11.                    '".addslashes($data[8])."',  
  12.                    '".addslashes($data[9])."',  
  13.                    '".addslashes($data[10])."',  
  14.                    '".addslashes($data[11])."',  
  15.                    '".addslashes($data[12])."',  
  16.                    '".addslashes($data[13])."',  
  17.                    '".addslashes($data[14])."',
  18.                    '".addslashes($data[15])."',  
  19.                    '".addslashes($data[16])."',  
  20.                    '".addslashes($data[17])."',  
  21.                    '".addslashes($data[18])."',  
  22.                    '".addslashes($data[19])."',  
  23.                    '".addslashes($data[20])."',  
  24.                    '".addslashes($data[21])."',
  25.                    '".addslashes($data[22])."',  
  26.                    '".addslashes($data[23])."',  
  27.                    '".addslashes($data[24])."',  
  28.                    '".addslashes($data[25])."',          
  29.                    '".addslashes($data[26])."'  
  30.                )  
  31.            ",$connect);
  #7 (permalink)  
Antiguo 08/02/2013, 08:35
 
Fecha de Ingreso: febrero-2013
Mensajes: 6
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con script de php

Así tampoco me lo permite, da como si todo fuese ok, pero no inserta datos en la db.

Muchas gracias por las molestias y colaboración que me estas prestando.

Código PHP:
<?php   

//connect to the database  
$connect mysql_connect("localhost","root","30061975");  
mysql_select_db("inforbet_estadisticas",$connect); //select the table  
//  

if ($_FILES[csv][size] > 0) {  

    
//get the csv file  
    
$file $_FILES[csv][tmp_name];  
    
$handle fopen($file,"r");  
      
    
//loop through the csv file and insert into database  
    
do {  
        if (
$data[0]) {  
            
mysql_query("INSERT INTO bundesliga (id,equipo,JC,GC,EC,PC,GFC,GCC,JF,GF,EF,PF,GFF,GCF,JT,GT,ET,PT,GFT,GCT,OC,UC,OF,UF,OT,UT) VALUES  
                (  
                    '"
.addslashes($data[0])."',  
                    '"
.addslashes($data[1])."',  
                    '"
.addslashes($data[2])."',  
                    '"
.addslashes($data[3])."',  
                    '"
.addslashes($data[4])."',  
                    '"
.addslashes($data[5])."',  
                    '"
.addslashes($data[6])."',  
                    '"
.addslashes($data[7])."', 
                    '"
.addslashes($data[8])."',  
                    '"
.addslashes($data[9])."',  
                    '"
.addslashes($data[10])."',  
                    '"
.addslashes($data[11])."',  
                    '"
.addslashes($data[12])."',  
                    '"
.addslashes($data[13])."',  
                    '"
.addslashes($data[14])."', 
                    '"
.addslashes($data[15])."',  
                    '"
.addslashes($data[16])."',  
                    '"
.addslashes($data[17])."',  
                    '"
.addslashes($data[18])."',  
                    '"
.addslashes($data[19])."',  
                    '"
.addslashes($data[20])."',  
                    '"
.addslashes($data[21])."', 
                    '"
.addslashes($data[22])."',  
                    '"
.addslashes($data[23])."',  
                    '"
.addslashes($data[24])."',  
                    '"
.addslashes($data[25])."',          
                    '"
.addslashes($data[26])."'  
                )
                 
            "
,$connect);  
        }  
    } while (
$data fgetcsv($handle,1000,",","'"));  
    
//  

    //redirect  
    
header('Location: actualizar.php?success=1'); die;  

}  

?>  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />  
<title>Import a CSV File with PHP & MySQL</title>  
</head>  

<body>  

<?php if (!empty($_GET[success])) { echo "<b>Your file has been imported.</b><br><br>"; } //generic success notice ?>  

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">  
  Choose your file: <br />  
  <input name="csv" type="file" id="csv" />  
  <input type="submit" name="Submit" value="Submit" />  
</form>  

</body>  
</html>
  #8 (permalink)  
Antiguo 08/02/2013, 08:37
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Problema con script de php

ok, lo que puedes hacer es imprimir el query antes de insertarlo y ejecutarlo directamente en mysql a ver si te arroja algun error
  #9 (permalink)  
Antiguo 08/02/2013, 09:05
 
Fecha de Ingreso: febrero-2013
Mensajes: 6
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con script de php

Es curioso, con este script si que me permite insertar y me lo hace todo. He estado buscando y leyendo sobre lo que me dijiste de LOAD DATA IN FILE al final he conseguido montar este código.

Código PHP:
<?php   

$link
=mysql_connect("localhost","root","30061975");
mysql_select_db("inforbet_estadisticas",$link);

$sql="LOAD DATA INFILE 'C:\/AppServ\/www\/inforbets\/bundesliga.csv' into table bundesliga fields terminated by ';' lines terminated by '\\n'";
echo 
$sql."<br>";
mysql_query($sql,$link) or die("Error $sql <br>MySQL dice: ".mysql_error());

mysql_close($link);


?>
Realiza perfectamente lo que estaba buscando, pero el único inconveniente es que tengo que subir los archivos al servidor y después ejecutar este script, cuando en realidad la intención es no necesitar subir el archivo, simplemente seleccionar el archivo y que suban los datos al servidor.

Yo había pensado en utilizar, en la misma página de php, este script para subir el archivo al servidor

Código PHP:
<? 
if($boton) { 
    if (
is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) { 
      
copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']); 
      
$subio true
    } 

if(
$subio) { 
    echo 
"El archivo subio con exito"
} else { 
    echo 
"El archivo no cumple con las reglas establecidas"

die(); 

?>
Y acto seguido ejecutar el script de LOAD DATA IN FILE quizás de esa forma haga el mismo resultado. ¿No?

Muchas gracias por tu ayuda.
  #10 (permalink)  
Antiguo 08/02/2013, 09:10
 
Fecha de Ingreso: febrero-2013
Mensajes: 6
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema con script de php

Lo he conseguido, biennnnnnnnnnnn

Mira este es el script que he confeccionado.

Código PHP:
<? 
if($boton) { 
    if (
is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) { 
      
copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']); 
      
$subio true
    } 
    
$link=mysql_connect("localhost","root","30061975");
mysql_select_db("inforbet_estadisticas",$link);

$sql="LOAD DATA INFILE 'C:\/AppServ\/www\/inforbets\/bundesliga.csv' into table bundesliga fields terminated by ';' lines terminated by '\\n'";
echo 
$sql."<br>";
mysql_query($sql,$link) or die("Error $sql <br>MySQL dice: ".mysql_error());

mysql_close($link);    

if(
$subio) { 
    echo 
"El archivo subio con exito"
} else { 
    echo 
"El archivo no cumple con las reglas establecidas"

die(); 

?>

<?php   




?>
 

<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data" name="form1"> 
  <p align="center">Archivo 
   <input name="archivo" type="file" id="archivo"> 
  </p> 
  <p align="center"><input name="boton" type="submit" id="boton" value="Enviar"></p> 
</form>
Con este script selecciono el archivo, lo subo al servidor y a la vez lo inserta en mysql. Quizás lo mejor sería que no lo subiese solo que cogiese los datos y los incorporase, pero con esto me doy por satisfecho.

Muchas gracias por tu ayuda y colaboración. Sin ti, no hubiese sido posible.

Etiquetas: html, mysql, select
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:19.