Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

No puedo acceder al valor de un campo

Estas en el tema de No puedo acceder al valor de un campo en el foro de Mysql en Foros del Web. Hola Tengo la siguiente consulta a la bd : Select articulos.id,titulo,mensaje,dia,hora,categorias. nombre_categoria, categorias.logo,categorias.id FROM articulos,categorias where articulos.categoria = categorias.id AND articulos.categoria = ".$_GET["cat"]." order by ...
  #1 (permalink)  
Antiguo 12/08/2011, 08:59
Avatar de eMaa  
Fecha de Ingreso: octubre-2008
Mensajes: 223
Antigüedad: 15 años, 6 meses
Puntos: 1
No puedo acceder al valor de un campo

Hola

Tengo la siguiente consulta a la bd :


Select articulos.id,titulo,mensaje,dia,hora,categorias.
nombre_categoria,
categorias.logo,categorias.id FROM articulos,categorias where articulos.categoria = categorias.id AND
articulos.categoria = ".$_GET["cat"]." order by dia,hora desc


ahora en una parte de mi script luego de hacer la consulta quiero acceder al valor articulos.id pero en ves de darme su valor me da el de categorias.id.

en el array que devuelve mysql_fetch_array intento acceder al valor asi : $elArray["id"], pero no me devuelve el valor id del articulo sino el de categoria. como hago para referirme al campo correcto


Saludos
  #2 (permalink)  
Antiguo 12/08/2011, 09:53
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: No puedo acceder al valor de un campo

Hola eMaa:

No tengo conocimientos de PHP y por lo que puedo ver este es un problema con el Lenguaje, no con la BD, igual y es conveniente que publicaras tu pregunta en el foro correspondiente:

http://www.forosdelweb.com/f18/

Ahora bien, por simple intuición creo que el problema es que hay dos campos id en tu consulta, por lo que es posible que PHP no pueda determinar cual tomas y termina por presentar el primero que encuentre. A reserva de que te respondan los expertos en PHP podrías poner un alias a tus ID's, para que no tengan el mismo nombre.

Código:
FROM
articulos.id idArt,
...
categorias.id idCat
Saludos
Leo
  #3 (permalink)  
Antiguo 12/08/2011, 13:07
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: No puedo acceder al valor de un campo

No te sirve obtener los datos mediante el índice asociativo ya que tienes 2 indices repetidos:

- articulos.id
- categorias.id

Si quieres acceder a categorias.id tendrás que hacerlo con el indice numérico. Si tienes 8 campos, vendría siendo $elArray[7].

Mas información función mysql_fetch_array de PHP:

http://www.php.net/manual/es/function.mysql-fetch-array.php
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 12/08/2011, 13:21
Avatar de eMaa  
Fecha de Ingreso: octubre-2008
Mensajes: 223
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: No puedo acceder al valor de un campo

Hola leo, muy buena tu respuesta

intenté poner un alias pero creo que lo hago de una forma incorrecta, veo que lo pones despues del FROM, pero tengo una duda, alli no van las tablas?, como tendria que ser mi consulta completa usando alias?
  #5 (permalink)  
Antiguo 12/08/2011, 13:26
Avatar de eMaa  
Fecha de Ingreso: octubre-2008
Mensajes: 223
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: No puedo acceder al valor de un campo

Andres, me convendría cambiar los nombres de los campos ID al crear las tablas y nombrarlos por ejemplo id_articulo , id_categoria? para no tener este tipo de problemas?
  #6 (permalink)  
Antiguo 12/08/2011, 13:32
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: No puedo acceder al valor de un campo

No sabría decirte no soy experto en mysql pero eso no es problema para PHP como ya te expliqué, además tienes 2 soluciones a la mano. Usas alias o los llamas por su índice numérico. No creo que tengas que modificar la base de datos sólo por llamar un simple ID.

Un ejemplo rápido que combine Mysql Alias + indices numéricos PHP

Código PHP:
Ver original
  1. <?php
  2.  
  3. $c = mysql_connect('localhost', 'root', '12345');
  4. mysql_select_db('basededatos');
  5. $sql = 'select nombre as no from persona';
  6. $res = mysql_query($sql);
  7.  
  8. while ($reg = mysql_fetch_array($res, MYSQL_BOTH)) {
  9.     echo $reg['no'] . ' ' . $reg[0] . '<br />';
  10. }


Como vez puedes llamarlo en PHP por su alias no o por su indice numérico cero 0
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 12/08/2011, 13:51
Avatar de eMaa  
Fecha de Ingreso: octubre-2008
Mensajes: 223
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: No puedo acceder al valor de un campo

Probe con ambas formas andres, pero lo que veo es que el problema radica en que no me esta trayendo el articulos.id , al usar $array[0] me muestra el campo titulo, como si no lo tuviera en cuenta al articulos.id
  #8 (permalink)  
Antiguo 12/08/2011, 13:53
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: No puedo acceder al valor de un campo

Cita:
Iniciado por eMaa Ver Mensaje
Probe con ambas formas andres, pero lo que veo es que el problema radica en que no me esta trayendo el articulos.id , al usar $array[0] me muestra el campo titulo, como si no lo tuviera en cuenta al articulos.id
Poco lees de lo que escribo, si tienes 8 campos en el array numérico sería el indice 7 no el cero.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #9 (permalink)  
Antiguo 12/08/2011, 13:58
Avatar de eMaa  
Fecha de Ingreso: octubre-2008
Mensajes: 223
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: No puedo acceder al valor de un campo

sisi entendi eso, pero no funciona, probé desde el 0 al 8 y ninguno me da con el articulos.id , por eso mi teoria de que no me lo esta tomando
  #10 (permalink)  
Antiguo 12/08/2011, 14:04
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: No puedo acceder al valor de un campo

En ese caso ya es problema de tu consulta, si tienes más dudas de PHP pásate por el 18:

http://www.forosdelweb.com/f18/

Espero haberte ayudado en algo, revisa tu sentencia SQL esperemos que algún experto en el tema te ayude con Mysql.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #11 (permalink)  
Antiguo 12/08/2011, 14:04
Avatar de eMaa  
Fecha de Ingreso: octubre-2008
Mensajes: 223
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: No puedo acceder al valor de un campo

Ya encontre el problema y era una cuestion de estructura

gracias a los dos me sirvio para aprender un par de cosas
  #12 (permalink)  
Antiguo 12/08/2011, 14:33
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: No puedo acceder al valor de un campo

Hola de nuevo eMaa... Veo que ya pudiste resolver tu problema, pero no quiero dejar sin responder algunas cuestiones que preguntaste al inicio.

Cita:
Iniciado por eMaa Ver Mensaje
Hola leo, muy buena tu respuesta

intenté poner un alias pero creo que lo hago de una forma incorrecta, veo que lo pones despues del FROM, pero tengo una duda, alli no van las tablas?, como tendria que ser mi consulta completa usando alias?
perdón, fue un error mio, el listado de los campos con sus alias se hace en SELECT, no después del FROM.

En cuanto a esto que preguntas:

Cita:
me convendría cambiar los nombres de los campos ID al crear las tablas y nombrarlos por ejemplo id_articulo , id_categoria? para no tener este tipo de problemas?
en lo particular yo si recomiendo el uso de esta notación, sobre todo para manejar el mismo nombre en caso de las llaves foráneas, trataré de explicarme, supongamos que tienes una tabla Doctores, una tabla pacientes y una tabla Doctores_Pacientes

Si pones los datos asi:

Código:
Doctores
id|descripcion

Pacientes
id|descripcion

DoctoresPacientes
id|idDoctor|idPaciente
observa que las FK quedarían

Código:
Doctores (id) -> DoctoresPacientes (idDoctor)
Pacientes (id) -> DoctoresPacientes (idPaciente)
Si manejaras cada nombre distinto sería así:

Código:
Doctores
idDoctor|descripcion

Pacientes
idPaciente|descripcion

DoctoresPacientes
idDocPac|idDoctor|idPaciente
Por lo tanto, las FK quedarían referenciadas exactamente con el mismo nombre

Código:
Doctores (idDoctor) -> DoctoresPacientes (idDoctor)
Pacientes (idPaciente) -> DoctoresPacientes (idPaciente)
Igual y eso no afecta en nada el desempeño de la BD, pero la administración suele simplificarse sobre todo cuando llega alguien nuevo que no tenga conocimiento del modelo de la BD,

Lo mismo pasa en la parte del código, es común (y muy mala práctica) que los programadores pongan un Select * from Tabla y que hagan referencia a los campos por la posición, tal y como recomienda el compañero andresdzphp, sin embargo si alguien externo tiene que darle mantenimiento al código y no tiene muchos conocimientos de la BD puede resultar más complicado que si manejaras el nombre del campo como tu referencia.

De igual manera, como manejes los campos no afecta en nada el resultado, es cuestión de gustos.

Saludos
Leo.

Etiquetas: acceder, select, sql, campos
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 23:06.