Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-05-2008
Avatar de gabrielflowers
gabrielflowers gabrielflowers is offline
Miembro
 
Registrado: jul 2007
Posts: 88
Poder: 10
gabrielflowers Va por buen camino
defecto del mysql_fetch_array()???

hola nuevamente, hace poco expuse el tema "defecto en el metodo POST", ahora tengo un problema similar pero es con la funcion mysql_fetch_array();
veran al hacer una consulta a una bd mysql, donde si es que mi sql de consulta contiene campos con "." como parte de su nombre por ejm: "a.cod", entonces al obtener los datos de resultado, el nombre dichos campos son alterados, por ejm ese mismo campo quedaria con el nombre "cod" (es decir se suprimen los caracteres antes del "." y el punto incluido), vean este script e ejemplo
Código PHP:
$sql="SELECT a.cod,documento_ref_cod,fecha,moneda_cod,m.nombre,tipo_cambio,glosa,a.estado FROM asiento as a,moneda as m WHERE a.moneda_cod=m.cod";
if(
$enlace=mysql_connect('localhost''root''admin123'))
{
 if(
mysql_select_db('adm_sistema',$enlace))
 {
  if(
$rs=mysql_query($sql))
  {
   
$i=0;
   while (
$fila=mysql_fetch_arrray($rs,MYSQL_ASSOC)) 
   {
          
$mdatos[$i]=$fila;
    
$i++;
   }
  }
 }
}
mysql_free_result($rs);
mysql_close($enlace);
echo 
'<br><pre>';
print_r($mdatos[0]);
echo 
'</pre>'
claro no podran ejecutarlo en sus maquinas pues no tienen dicha bd, pero el hecho como dije es que al obtener los datos de la bd con la funcion mysql_fetch_arrray($rs,MYSQL_ASSOC)) , me suprime los caracteres antes del "." y el punto incluido, quedando como resultado falsas llaves, que en mi caso hacen que mi algoritmo no funcione correctamente, comprenden???, que solucion proponen???, y osea para mi eso es anormal por que haciendo pruebas conclui que un array puede tener llaves con "." incluido en sus nombres, ejm:

Código PHP:
$vector['a.name']="john";
 
$vector["b.surname"]="kenedy";
  echo 
'<br><pre>';
 
print_r($vector);
 echo 
'</pre>';
 echo 
'<br>'
me imprime las llaves tal como estan originalmente, cual es problema entonces del mysql_fetch_array()???, por que de su comportamiento anormal???, y mas que nada como solucionar dicha alteracion de llaves????, gracias de antemano
__________________
"valor a pesar de toda debilidad del cuerpo, el espiritu debe triunfar"
Responder Con Cita
  #2  
Antiguo 22-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.029
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Cita:
Empezado por gabrielflowers
me suprime los caracteres antes del "." y el punto incluido
No entiendo porqué piensas que debería devolverte esos caracteres. No forman parte del nombre del campo. El "a" es simplemente el nombre de la tabla (o alias) que te permite indicarle al motor a qué tabla pertenece el campo, pero el campo en sí, sigue siendo sólo lo que hay después del punto.

Y, de hecho no entiendo porqué te conflictúa. ¿Cuál es el problema en usar simplemente $fila['cod'] en lugar de $fila['a.cod'] para obtener el valor del campo?

// Saludos
Responder Con Cita
  #3  
Antiguo 23-05-2008
Avatar de gabrielflowers
gabrielflowers gabrielflowers is offline
Miembro
 
Registrado: jul 2007
Posts: 88
Poder: 10
gabrielflowers Va por buen camino
roman: bueno para empezar para mi la funcion mysql_fetch_array deberia devolverme (o permitirme obtener) un array con las claves originales tal como estan el sql de consulta, bueno para mi ese seria su comportamiento normal; ahora bien tu dices que en "a.cod" cod es en realidad el nombre del campo y "a" es la tabla, claro amigo evidentemente es asi, pero imagina que tengo otro campo "b.cod", entonces la consulta sql devolveria dos campos "cod" (sin "a.") y "cod" (sin "b."), osea eso es algo confuso, creo que se puede solucionar dandole un alias a cada campo, pero a mi punto de vista la solucion mas optima seria que la funcion mysql_fetch_array() me devolviera un array con los campos originales, tal y como estan escritos en el sql para no crear confusion en ningun caso, bueno eso por un lado

por otro parte mi estimado roman, el hecho es que yo necesito casi imprescindiblemente que el sql me devuelva un array con los campos orginales con punto y todo, pues veras, yo estoy creando una libreria de componentes web, y para tal efecto cada componente deberia vivir por si solo, conociendo su propia estructura, bueno es mas que eso, pero no quiero comprometer mi proyecto, por eso solo te digo eso, gracias

pdta: entonces no se puede hacer nada al respecto???? solo me queda ajustarme a la forma de trabajo de php y su funcion mysql_fetch_array()???, sugerencias??, gracias, saludos
__________________
"valor a pesar de toda debilidad del cuerpo, el espiritu debe triunfar"
Responder Con Cita
  #4  
Antiguo 23-05-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.029
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Insisto; este problema no es inherente a PHP o MySQL. Si tu haces una consulta SQL que involucra varias tablas, la tabla de procedencia de cada campo no es parte de los datos, sino de los metadatos -información acerca de los datos.

Distintos motores y/o medios de acceso, tendrán distintas formas de obtener esa metadata.

Cita:
Empezado por gabrielflowers
entonces no se puede hacer nada al respecto???? solo me queda ajustarme a la forma de trabajo de php y su funcion mysql_fetch_array()???, sugerencias??
Claro que se puede hacer algo al respecto, es sólo que no es tan directo. Si gustas, te invito a leer mi "artículo" Acceso a datos con clase, que trata precisamente eso: cómo lidiar con campos del mismo nombre sin recurrir a alias.

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
abrir: por defecto Max_E. Varios 9 20-10-2008 15:55:24
Directorio por defecto en una BD Gagiel Conexión con bases de datos 2 13-02-2007 10:59:25
DateTimePicker por defecto... eli.vidal Varios 1 21-11-2005 16:35:16
Ejecucion por defecto... craven OOP 2 04-07-2003 12:10:15
opcion por defecto Irina Varios 2 16-05-2003 00:13:02


La franja horaria es GMT +2. Ahora son las 22:38:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi