Foros del Web » Programando para Internet » PHP »

problema metiendo datos

Estas en el tema de problema metiendo datos en el foro de PHP en Foros del Web. buenas mi problema es que tengo este script: Código PHP: <?php //funcion que coje una cadena y la divide en elementos de un array cada vez que aparece una coma function  rompelinea ( $string ) { $array = explode  ( "," , $string ...
  #1 (permalink)  
Antiguo 20/12/2005, 07:05
 
Fecha de Ingreso: noviembre-2005
Mensajes: 139
Antigüedad: 12 años
Puntos: 0
problema metiendo datos

buenas
mi problema es que tengo este script:
Código PHP:
<?php
//funcion que coje una cadena y la divide en elementos de un array cada vez que aparece una coma
function rompelinea($string)
{
$array=explode (",",$string);
return 
$array;
}
//funcion que me pasa del formato "aaaammddhhmmss" a "aaaa-mm-dd hh:mm:ss"
function fecyhora($texto)
{
$anio=substr($texto,0,4);
$mes=substr($texto,4,2);
$dia=substr($texto,6,2);
$hora=substr($texto,8,2);
$min=substr($texto,10,2);
$seg=substr($texto,12,2);
sscanf($texto"%4s%2s%2s%2s%2s%2s",$anio,$mes,$dia,$hora,$min,$seg);
$guion="-";
$espacio=" ";
$puntos=":";
$salida=$anio.$guion.$mes.$guion.$dia.$espacio.$hora.$puntos.$min.$puntos.$seg;
return 
$salida;
}

function 
metodatos($array)
{
$host"localhost";
$user="root";
$password="";
$nombreBD="proyecto";
$tabla="llamadas";
$link=mysql_connect($host$user$password);
mysql_select_db($nombreBD,$link);

$secuencia=$array[0];//directamente
$nllamado=numllam($array[1]);//se lo paso a funcion numllam
$duracion=$array[2];//directamente
$inillam=fecyhora($array[3]);//se lo paso a funcion fecyhora
$conllam=fecyhora($array[4]);//se lo paso a funcion fecyhora
$desllam=fecyhora($array[5]);//se lo paso a funcion fecyhora
$causa=causas($array[6]);////se lo paso a funcion causas
$iporigen=$array[7];
$ipdestino=$array[8];
$iptroncal=$array[9];
$tipollam=tipollamada($array[10]);
$tiponumllam=tiponumerollamada($array[11]);
$lineain=lineainout($array[12]);
$canalin=canalinout($array[13]);
$lineaout=lineainout($array[14]);
$canalout=canalinout($array[15]);
$switchtime=fecyhora($array[16]);
$switchdur=$array[17];
$eventos=$array[18];
$switchflag=flag($array[19]);

$busquedamysql_db_query($nombreBD,"SELECT * FROM $tabla WHERE n_desecuencia='$secuencia'");
if(
mysql_num_rows($busqueda)>0)
{
print(
"no");
return;
}
else{
print(
"si");
$query="INSERT into $tabla values ('','$secuencia','$nllamado','$duracion','$inillam','$conllam','$desllam','$causa','$iporigen','$ipdestino','$iptroncal','$tipollam','$tiponumllam','$lineain','$canalin','$lineaout','$canalout','$switchtime','$switchdur','$eventos','$switchflag')";
}
mysql_close($link);

}

$archivo=fopen("datos.txt","r");
$temp=fopen("editor.txt","r+");


while (!
feof($archivo))
{

$campos=array();//inicializo el array
$linea=fgets($archivo,2000);
fseek($temp0);
fwrite($temp,$linea);
fseek($temp0);
$info=fgets($temp,2000);
$campos=rompelinea($info);
$llamo=metodatos($campos);
print_r($campos);
print(
"<br>");
}

fclose($temp);
fclose($archivo);

?>
Las funciones a las que llamo en metodatos funcionan correctamente(comprobado).el problema es que escribe el "si" de metodatos pero no me mete los valores en la base de datos.
La base de datos tiene la siguiente estructura:
ID int(11) No auto_increment
n_desecuencia text
nllamado text
duracion int(11) 0
iniciollamada datetime
conexionllamada datetime
desconexionllamada datetime
causadesconexion text
iporigen text
ipdestino text
iptroncal text
tipollamada text
tipon_llamada text
lineaentrante text
canalentrante text
lineasaliente text
canalsaliente text
autoswitchtime datetime
a_s_duration int(11)
eventos text
a_s_flag text

¿Cual puede ser el problema?
gracias
  #2 (permalink)  
Antiguo 20/12/2005, 07:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El detalle está en que compones tu sentencia SQL .. OK en la variable $query .. pero NO LA EJECUTAS! .. se te pasó ese detallazo;
Código PHP:
mysql_query($query,$link) or die (mysql_error()); 
Por lo demás .. tienes un enorme lio de uso de funciones de Mysql .. por un lado usas mysql_select_db() y mysql_query() (que es lo recomendable) y por otro usas mysql_db_query() (que está en desuso y te podría dar problemas).

Intenta "centrarte" con todo esto .. sino, si bien ahora todo te pueda funcionar .. el día que tal vez cambies a otro servidor veras que tus aplicaciones se comportan de forma inesperada y no sabras "por qué".

Un saludo,
  #3 (permalink)  
Antiguo 20/12/2005, 07:27
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
NO se en niguna parte que hagas: mysql_query($query); para insertar el dato en la BD.
El primer campo es autoincrement, no debes pasarle valores, ni siquiera una cadena vacia.
  #4 (permalink)  
Antiguo 20/12/2005, 07:29
 
Fecha de Ingreso: noviembre-2005
Mensajes: 139
Antigüedad: 12 años
Puntos: 0
gracias cluster, (menudo fallo mas tonto). lo de usar mysql_db_query() ès por que cuando ya no se que hacer pruebo usando otras ordenes distintas....
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




La zona horaria es GMT -6. Ahora son las 05:47.