Foros del Web » Programando para Internet » PHP »

Php y MySQL

Estas en el tema de Php y MySQL en el foro de PHP en Foros del Web. Tengo el siguiente codigo: Código: <? $idConex=mysql_connect("localhost","root",""); mysql_select_db("cfd",$idConex); ?> <? //Comenzamos function leerdatos(){ $fp = fopen ( "Libro1.csv", "r" ); //abrir el archivo while ( ...
  #1 (permalink)  
Antiguo 27/10/2006, 07:06
 
Fecha de Ingreso: octubre-2006
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Exclamación Php y MySQL

Tengo el siguiente codigo:

Código:
<?
$idConex=mysql_connect("localhost","root","");
mysql_select_db("cfd",$idConex);
?>
<?
//Comenzamos

function leerdatos(){

$fp = fopen ( "Libro1.csv", "r" ); //abrir el archivo

while ( $data = fgetcsv ( $fp ,1000, ";" )) 

{ // Mientras hay líneas que leer...
$num = count ($data);
print " <br>";
$row++;
echo "$row- ".$data[0].$data[1].$data[2].$data[3].$data[4].$data[5]; 


//introduzco los datos en la base de datos:

$idresultado = mysql_query("select if(count(idfolio)=0,1,max(idfolio)+1) from folio_cfd",$idConex);
$idfolio = mysql_result($idresultado,0,0);
echo ("$idfolio");

/*$result = mysql_query("insert into folio_cfd (idfolio,folio,fecha,fechaalta) values ($idofolio,'$data[0]','$data[1]',now())",$idConex);

$result1 = mysql_query("insert into prod_cfd (idfolio,clave,peso,cantidad,faltante) 
values ($idfolio,'$data[2]','$data[3]','$data[4]','$data[5]')",$idConex);*/

$error=mysql_error($idConex);

}
fclose ( $fp );

}

leerdatos(); //llamamos a la funcion
?>
El problema es que al correrlo me salen los siguientes errores desde el primer query, por eso comenté los otros dos:

Upload exitoso!. Datos:
Nombre: libro1.csv
Tipo MIME: application/octet-stream
Peso: 68 bytes




--------------------------------------------------------------------------------


1- 12458,2006-10-23,0,BY1080,125,0
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Archivos de programa\xampp\htdocs\cif\importar1.php on line 23

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\Archivos de programa\xampp\htdocs\cif\importar1.php on line 24

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in C:\Archivos de programa\xampp\htdocs\cif\importar1.php on line 32

2- 12459,2006-10-23,0,BY1080,878,225
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Archivos de programa\xampp\htdocs\cif\importar1.php on line 23

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\Archivos de programa\xampp\htdocs\cif\importar1.php on line 24

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in C:\Archivos de programa\xampp\htdocs\cif\importar1.php on line 32

El contenido del csv si se esta leyendo, tambien se esta subiendo el archivo, el problema comienza cuando se empieza a ejecutar my sql , alguien sabe que estoy haciendo mall??? saludos.
  #2 (permalink)  
Antiguo 27/10/2006, 07:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usa la función mysql_error() (de hecho lo usas pero no muestras su resultado y tampoco lo usas en todas las condiciones) así veras los mensajes de error concretos y de SQL o conexión que puedas tener. Con ese error más "claro" ahí se verá mucho más claro qeu problema real tienes.

Cita:
$idresultado = mysql_query("select if(count(idfolio)=0,1,max(idfolio)+1) from folio_cfd",$idConex) or die (mysql_error());
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 27/10/2006, 07:23
 
Fecha de Ingreso: octubre-2006
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Ya los puse ahora nada mas me sale :

Código:
1- 12458,2006-10-23,0,BY1080,125,0
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Archivos de programa\xampp\htdocs\cif\importar1.php on line 23
  #4 (permalink)  
Antiguo 27/10/2006, 07:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usa la estructura "or die(mysql_error())" en todas las llamadas a mysql_query() que hagas .. también lo debes usar en mysql_connect() y en mysql_selec_db() .. El caso es llegar a ver cual es la sentencia SQL o conexión que está "reventando".

Si usases variabels para indicar tu $SQL a ejecutar en lugar de incrustrarlo en la própia función de Mysql .. podrías hacer un "debugg" del problema más fácil ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 27/10/2006, 07:47
 
Fecha de Ingreso: octubre-2006
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Si, se le puse a todos los querys y la coneccion y me sale ese error, que sería el primer query, el select, ahora, ya probe el query directo en la base y sale el resultado correcto , que será??


Como es lo del debugg que dices??
  #6 (permalink)  
Antiguo 27/10/2006, 08:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Se trata de que

En lugar de:

$idresultado = mysql_query("select if(count(idfolio)=0,1,max(idfolio)+1) from folio_cfd",$idConex) or die (mysql_error());

Hagas:
Código PHP:
$sql="select if(count(idfolio)=0,1,max(idfolio)+1) from folio_cfd";
$idresultado mysql_query($sql,$idConex) or die ("Error, Mysql dice:"mysql_error()."<br>Sentencia SQL:<br> ".$sql); 
Así con todas tus sentencias SQL ..

E insisto que DEBES usarlo también en tu:

Código PHP:
mysql_connect(...) or die (mysql_connect()); 
Fuera de esto .. se vé un pequeño lio con el uso de funciones de Msyql que aplicas .. además que presentas el código "no limpio" . .es decir, dejas algunas líneas "comentadas" en el código .. eso hace que nos "liemos" los que pretendemos ayudar.

por ejemplo .. No sé por qué metes en el bucle Wile() que usas la consulta SQL:

Cita:
$idresultado = mysql_query("select if(count(idfolio)=0,1,max(idfolio)+1) from folio_cfd",$idConex);
$idfolio = mysql_result($idresultado,0,0);
echo ("$idfolio");
Ahí no usas ninguna variable que obtengas en el bucle while() (que se genere u obtengas del archivo que lees) por ende . .NO CORRESPONDE ahí esa porción de código .. tendría que quedar arriba o mejor dicho fuera de este bucle (antes de entrar a el).

Creo que por ahí va el problema .. (o es uno más a descartar).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 27/10/2006 a las 08:17
  #7 (permalink)  
Antiguo 27/10/2006, 09:13
 
Fecha de Ingreso: octubre-2006
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
ok , ya hice lo que me dices y bien si en efecto el error esta en el select, ahora, este select lo uso para sacar el id consecutivo, por esdo hago la consulta directamente a la base de datos, lo que no entiendo es porque en otro scritp que tengo uso excatamente el mismo query y me funciona perfecto

Me sigue saliendo el error:
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Archivos de programa\xampp\htdocs\cif\importar1.php on line 13
Error, Mysql dice:
Sentencia SQL:
select if(count(idfolio)=0,1,max(idfolio)+1) from folio_cfd

Última edición por zero01; 27/10/2006 a las 10:07
  #8 (permalink)  
Antiguo 27/10/2006, 10:09
 
Fecha de Ingreso: octubre-2006
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Código:
sql="select if(count(idfolio)=0,1,max(idfolio)+1) from folio_cfd";
$idresultado = mysql_query($sql,$idConex)
 or die ("Error, Mysql dice:". mysql_error()."<br>Sentencia SQL:<br> ".$sql);
alguien sabe que tiene de malo el query??
  #9 (permalink)  
Antiguo 27/10/2006, 10:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por zero01 Ver Mensaje
Código:
sql="select if(count(idfolio)=0,1,max(idfolio)+1) from folio_cfd";
$idresultado = mysql_query($sql,$idConex)
 or die ("Error, Mysql dice:". mysql_error()."<br>Sentencia SQL:<br> ".$sql);
alguien sabe que tiene de malo el query??
Pero observas algún mensaje de error concreto de la ejecución de tu sentencia SQL? o es el mismo mensaje que antes?

De todas formas .. tienes el foro de Base de datos -> Mysql para que asesoren sobre esa sintax SQL concreta .. Aunque .. tu mismo decías que si ejecutas la consulta SQL data en algún GUI de Mysql te funciona correctamente?


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 27/10/2006, 11:28
 
Fecha de Ingreso: octubre-2006
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Si exactamente, me pone el mismo mensaje de error, y si, tambien la ejecuto directo en en mysql y sale bien el resultado.
  #11 (permalink)  
Antiguo 27/10/2006, 11:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok, ok .. ahora me dí cuenta.

Tu usas una función .. Usas un "link" de conexión definido con nombre própio .. pero ese link de conexión a tu BBDD lo haces -fuera- de tu función y no se lo pasas como parámetro a la función o lo declaras como global .. así que el "link" lo pierdes al ejecutar tu función.

Código PHP:
<?
// TE fijas que defines el link de conexión -fuera- de tu función?

$idConex=mysql_connect("localhost","root","");
mysql_select_db("cfd",$idConex);
?>
<?
//Comenzamos

function leerdatos(){
// Declara como global el link de conexión .. o se lo pasas como parámetro en la función.
global $idConex;

// etc ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 27/10/2006, 11:58
 
Fecha de Ingreso: octubre-2006
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Ahh ya es cierto, jajaja no se porque lo puse ahi

Muchas gracias cluster, oye nada mas una ultima consulta, me sale esto:


Código:
0Error, Mysql dice:Data too long for column 'folio' at row 1
Sentencia SQL:
insert into folio_cfd (idfolio,folio,fecha,fechaalta) values (9,'12458,2006-10-23,0,BY1080,125,0','',now())
Segun yo en mis query de insert estoy mandando cada variable a su respectiva tabla , bueno deja te pongo el codigo como va ahorita:

Código:
<?
//Comenzamos

function leerdatos(){
$idConex=mysql_connect("localhost","root","")or die (mysql_error());
mysql_select_db("cfd",$idConex)or die (mysql_error());


$fp = fopen ( "Libro1.csv", "r" ); //abrir el archivo

$sql="select if(count(idfolio)=0,1,max(idfolio)+1) from folio_cfd";
$idresultado = mysql_query($sql,$idConex) or die ("Error, Mysql dice:". mysql_error()."<br>Sentencia SQL:<br> ".$sql); 
$idfolio=mysql_result($idresultado,0,0);

while ( $data = fgetcsv ( $fp ,1000, ";" )) 

{ // Mientras hay líneas que leer...
$num = count ($data);
print " <br>";
$row++;
echo "$row- ".$data[0].$data[1].$data[2].$data[3].$data[4].$data[5]; 


//introduzco los datos en la base de datos:



$sql2 = "insert into folio_cfd (idfolio,folio,fecha,fechaalta) values ($idfolio,'$data[0]','$data[1]',now())";
$result = mysql_query($sql2,$idConex) or die ("Error, Mysql dice:". mysql_error()."<br>Sentencia SQL:<br> ".$sql2); 


$sql3 = "insert into prod_cfd (idfolio,clave,peso,cantidad,faltante) values ($idfolio,'$data[2]','$data[3]','$data[4]','$data[5]')";
$result = mysql_query($sql3,$idConex) or die ("Error, Mysql dice:". mysql_error()."<br>Sentencia SQL:<br> ".$sql3); 



}
fclose ( $fp );

}

leerdatos(); //llamamos a la funcion
?>
No se si en el php lo estoy haciendo mal o ya es la sintaxis con el my sql, pero por lo que veo en el error me intenta mandar todo el contenido de la fila y yo no quiero eso, yo queiro que me inserte en dos tablas el contenido de la fila.
  #13 (permalink)  
Antiguo 27/10/2006, 12:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Ahí ya me pierdo un pco (con el error SQL concreto) ..

Que tipo de dato para el campo "folio" usas? .. que definición? ..

PD: recuerda que tienes el foro de "Base de datos" para problemas con SQL ...


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 27/10/2006, 12:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
A veces .. ciertos caracteres podrían darte algún tipo de problema (caracteres como comas, comillas .. etc ..) intenta usar:

mysql_real_escape_string()

Aplicado a los datos que atacan tu consulta SQL ...

Código PHP:
$sql2 "insert into folio_cfd (idfolio,folio,fecha,fechaalta) values ($idfolio,'".mysql_real_escape_string($data[0])."','$data[1]',now())"
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #15 (permalink)  
Antiguo 27/10/2006, 12:41
 
Fecha de Ingreso: octubre-2006
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Todos son varchar de 20, si quieres aqui le dejamos y pregunto en el foro de bases de datos, ya me ayudaste mucho, muchisimas gracias saludoss
  #16 (permalink)  
Antiguo 27/10/2006, 13:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por zero01 Ver Mensaje
Todos son varchar de 20, si quieres aqui le dejamos y pregunto en el foro de bases de datos, ya me ayudaste mucho, muchisimas gracias saludoss
Como te dije .. no estaría de más que consultes en el foro de BBDD también .. igualmente este tema aquí queda abierto por si acaso.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #17 (permalink)  
Antiguo 11/11/2006, 13:26
 
Fecha de Ingreso: noviembre-2006
Mensajes: 1
Antigüedad: 17 años, 5 meses
Puntos: 0
De acuerdo Exportando de Excel a mysql

Hola! Soy nuevo en este foro.
Solo queria agradecer por los comentarios que he encotrado aqui, son muy buenos y espero poder realizar lo cometido.
Ya que necesito exportar informacion de excel a mysql con php, para una aplicacion q estoy desarrollando y me pidieron que fuera de esa forma para darle mayor personalidad a la aplicacio.

De antemano muchas Gracias.

Saludos ....
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 17:14.