Foros del Web » Programando para Internet » PHP »

Consultar con dos tablas

Estas en el tema de Consultar con dos tablas en el foro de PHP en Foros del Web. hola Tengo una tabla llamada "trabajo" y esta presenta varios punteros a la tabla "persona". Persona tiene Id y Nombre. Trabajo tiene Id, nomtrabajo y ...
  #1 (permalink)  
Antiguo 20/02/2008, 14:47
Avatar de manyametal  
Fecha de Ingreso: enero-2008
Mensajes: 36
Antigüedad: 16 años, 3 meses
Puntos: 0
Consultar con dos tablas

hola
Tengo una tabla llamada "trabajo" y esta presenta varios punteros a la tabla "persona". Persona tiene Id y Nombre. Trabajo tiene Id, nomtrabajo y 3 campos que apuntan a persona "persona1, persona2 y persona3" (que guardan el Id de la persona)
Estoy trabajando con un dataGrid de flash y quiero que al mostrar "trabajo" no me muestre los Id de la persona, sino los nombres..en el codigo AS llamo al codigo php para traer datos que es el siguiente:
Código PHP:
<documento>
<?php
    $link 
mysql_connect ("localhost""root""root");
    
mysql_select_db("trabajos");
    
$result mysql_query ("SELECT * FROM trabajo AS t INNER JOIN persona AS p ON t.Nombre1 = p.Id") or die ("Invalid query");
    
    echo 
    
"<datos>";

    while(
$row mysql_fetch_array($result)) {
        echo 
    
"<trabajo>
        <Id>" 
$row["Id"] . "</Id>
        <nomT>" 
$row["nomtrabajo"] . "</nomT>
        <nom1>" 
$row["Nombre"] . "</nom1>
        <nom2>" 
$row["Nombre"]. "</nom2>
        <nom3>" 
$row["Nombre"]. "</nom3>    
    </trabajo>"
;
    }
    echo 
"</datos>";
Bueno de esa forma solo soluciono mostrar el nombre de la persona1, pero faltaria de la persona2 y 3...No se si se podria hacer algo dentro del while o existe una consulta sql que facilite...¡gracias!!
  #2 (permalink)  
Antiguo 20/02/2008, 15:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Consultar con dos tablas

Puedes dentro del while hacer una subconsulta para obtener el nombre:
Código PHP:
function getName$id ) {
         
$nomQuery "SELECT `Nombre` FROM `persona` WHERE `Id`=$id";
         
$result mysql_query$nomQuery ) or die( "Query: $nomQuery, error: " mysql_error() );
         
$row mysql_fetch_row$result );
         
mysql_free_result$result );

         return 
$row[0];
}
while(
$row mysql_fetch_array($result)) {
        
        echo 
    
"<trabajo>
        <Id>" 
$row["Id"] . "</Id>
        <nomT>" 
$row["nomtrabajo"] . "</nomT>
        <nom1>" 
getName($row["Nombre1"]) . "</nom1>
        <nom2>" 
getName($row["Nombre2"]). "</nom2>
        <nom3>" 
getName($row["Nombre3"]). "</nom3>    
    </trabajo>"
;
    } 
Saludos.
  #3 (permalink)  
Antiguo 20/02/2008, 20:24
Avatar de manyametal  
Fecha de Ingreso: enero-2008
Mensajes: 36
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Consultar con dos tablas

gracias che, con eso puedo colocar todos los nombres. Ahora, tengo un problema solo me coloca los del primer registro de la tabla.. El problema es este: "Fatal error: Cannot redeclare getname() (previously declared in C:\AppServ\www\prueba\mostrar.php:13) in C:\AppServ\www\prueba\mostrar.php on line 13".
-cambiando el nombre de la funcion me sigue dando el mismo error!.. No esta declarada en ningun otro lado, no se que podra ser?
  #4 (permalink)  
Antiguo 20/02/2008, 22:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Consultar con dos tablas

Ese error puede ocurrir si pones el codigo de la funcion dentro del while, pon la declaracion de la funcion al principio o al final de tu script.

Saludos.
  #5 (permalink)  
Antiguo 21/02/2008, 10:53
Avatar de manyametal  
Fecha de Ingreso: enero-2008
Mensajes: 36
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Consultar con dos tablas

solucionado...se agradece!
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 16:19.