Foros del Web » Programando para Internet » PHP »

Tablas relacionadas

Estas en el tema de Tablas relacionadas en el foro de PHP en Foros del Web. Hola a todos, siento mucho tener que hacer esta consulta tan simple, pero llevo varios días atascado y no se como seguir y no encuentro ...
  #1 (permalink)  
Antiguo 24/12/2012, 08:17
 
Fecha de Ingreso: enero-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Tablas relacionadas

Hola a todos, siento mucho tener que hacer esta consulta tan simple, pero llevo varios días atascado y no se como seguir y no encuentro que es lo que estoy haciendo mal.

Tengo dos tablas:


Código:
LNG
id_lng		|idioma
---------------------------------------------
1		|español
2		|français
Código:
ARTICULO
id_lng		|titulo
---------------------------------------------
1		|Articulo escrito en Español
2		|Article rédigé en français
Y como os imaginareis lo que quiero conseguir es este resultado:

Código:
idioma		|titulo
---------------------------------------------
Español		|Articulo escrito en Español
Français	|Article rédigé en français
A continuación os paso uno de mis últimos intentos para que me podas orientar de que es lo que estoy haciento mal y como puedo solucionarlo.
Código PHP:
<?php

function Conectarse()
{
$dbhost "localhost";
$dbuser "root";
$dbname "ela";
$dbpass "";

  if (!(
$link=mysql_connect($dbhost$dbuser$dbpass)))
    {
    echo 
"Error conectando a la base de datos.";
    exit();
    }
  if (!
mysql_select_db($dbname,$link))
    {
    echo 
"Error seleccionando la base de datos.";
    exit();
    }
  return 
$link;
  }
  

function 
sql_ver_noticias ()                        //Ver todas las noticias para editarlas o borrarlas
  
{
  
//$consulta = "SELECT * FROM articulo ORDER BY id_articulo DESC";
  /*SELECT a.id, a.precio, a.cantidad, b.titulo AS tipo FROM productos AS a LEFT JOIN productos_tipo AS b ON a.tipo = b.id WHERE a.tipo = '1' AND a.cantidad = '10'"
  SELECT id_mensaje, nombre, mensaje FROM usuarios INNER JOIN mensajes ON usuarios.id_usuario = mensajes.id_usuario*/

  
$consulta "SELECT titulo, fecha, id_lng FROM articulo INNER JOIN lng ON articulo.id_lng = lng.id_lng";
  
$query mysql_query($consulta);
  return 
$query;
  }
  
  function 
db_muestra_editar_borrar ()
  {
  echo 
"
    <h1>Art&iacute;culos</h1>
    <table cellspacing='10' cellpadding='10' border='0'>
    <tr>
      <td><b>T&iacute;tulo</b></td>
      <td><b>Idioma</b></td>
      <td><b>Fecha</b></td>
      <td><b>Editar</b></td>
      <td><b>Borrar</b></td>
    </tr>"
;
        
$link=Conectarse();                            //Abre conexion a la db
    
$resultado sql_ver_noticias();                         //Consultamos cuantos idiomas existen
    
while ($fila mysql_fetch_array($resultado))             //Cremos bucle que muestra idiomas
      
{
      echo 
"
      <tr>
        <td>"
.$fila['titulo']."</td>
        <td>"
.$fila['id_lng']."</td>
        <td>-</td>
        <td align='center'><a href='#'><img src='img/edit.png'></a></td>
        <td align='center'><a href='#'><img src='img/borrar.png'></a></td>

      </tr>"
;
      }
    
mysql_free_result($resultado);                    //Borramos el contenido de la variable donde hemos 
                                          //almacenado la consulta sql
    
    
mysql_close($link);                             //Cierra la conexion

  
echo "</table>";
  }
  
db_muestra_editar_borrar ()
?>

Muchas gracias a todos.
  #2 (permalink)  
Antiguo 24/12/2012, 08:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Tablas relacionadas

Al parecer la consulta es correcta. Lo que te faltaría es agregar el campo idioma al SELECT:
Código:
SELECT idioma, titulo, fecha, id_lng FROM ...
Y luego mostrarlo con $fila['idioma']
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 25/12/2012, 13:07
 
Fecha de Ingreso: enero-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Tablas relacionadas

Gracias David por tu respuesta, al final en esta web he encontrado la respuesta a todos mis problemas:

[URL="http://joan.garnet.io/?p=42"]http://joan.garnet.io/?p=42[/URL]

Y el código con el que lo he probado es este:

Código PHP:
<?php

function Conectarse()
{
$dbhost "localhost";
$dbuser "root";
$dbname "contactos";
$dbpass "";

  if (!(
$link=mysql_connect($dbhost$dbuser$dbpass)))
    {
    echo 
"Error conectando a la base de datos.";
    exit();
    }
  if (!
mysql_select_db($dbname,$link))
    {
    echo 
"Error seleccionando la base de datos.";
    exit();
    }
  return 
$link;
  }
  

function 
sql_ver_noticias ()                        //Ver todas las noticias para editarlas o borrarlas
  
{
   
$consulta "

    SELECT
        clientes.nombre AS nombre_cliente,
        localidades.nombre_localidad AS localidad_cliente,
        tipos_cliente.tipo AS tipo_cliente
    FROM clientes,
        localidades,
        tipos_cliente
    WHERE clientes.localidad=localidades.id
        AND clientes.tipo_cliente=tipos_cliente.id;

"
;
  
$query mysql_query($consulta);
  return 
$query;
  }
  
  function 
db_muestra_editar_borrar ()
  {
  echo 
"
    <h1>Clientes</h1>
    <table cellspacing='10' cellpadding='10' border='0'>
    <tr>
      <td><b>Nombre</b></td>
      <td><b>Localidad</b></td>
      <td><b>Trabajo</b></td>
    </tr>"
;
        
$link=Conectarse();                            //Abre conexion a la db
    
$resultado sql_ver_noticias();                         //Consultamos cuantos idiomas existen
    
while ($fila mysql_fetch_array($resultado))             //Cremos bucle que muestra idiomas
      
{
      echo 
"
      <tr>
        <td>"
.$fila['nombre_cliente']."</td>
        <td>"
.$fila['localidad_cliente']."</td>
        <td>"
.$fila['tipo_cliente']."</td>
      </tr>"
;
      }
    
mysql_free_result($resultado);                    //Borramos el contenido de la variable donde hemos 
                                          //almacenado la consulta sql
    
    
mysql_close($link);                             //Cierra la conexion

  
echo "</table>";
  }
  
db_muestra_editar_borrar ()
?>
Gracias a todos.
  #4 (permalink)  
Antiguo 26/12/2012, 06:57
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: Tablas relacionadas

Buenas,

creo que seria mejor que cambiaras la consulta, para agilizar la respuesta

Código SQL:
Ver original
  1. SELECT clientes.nombre AS nombre_cliente,
  2.         localidades.nombre_localidad AS localidad_cliente,
  3.         tipos_cliente.tipo AS tipo_cliente
  4.         FROM (clientes INNER JOIN localidades ON clientes.localidad = localidades.id) INNER JOIN tipos_cliente ON clientes.tipo_cliente=tipos_cliente.id;

Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..

Etiquetas: mysql
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 10:17.