Foros del Web » Programando para Internet » PHP »

obtener valor de otra tabla segun ID

Estas en el tema de obtener valor de otra tabla segun ID en el foro de PHP en Foros del Web. actualmente tengo creado esto, un paginador que lee de una tabla y muestra sus valores. $resultados = mysql_query("SELECT id FROM phpbazar_ads WHERE publicview = 1"); ...
  #1 (permalink)  
Antiguo 22/02/2011, 03:40
Avatar de crissrocca  
Fecha de Ingreso: febrero-2011
Mensajes: 51
Antigüedad: 13 años, 1 mes
Puntos: 1
obtener valor de otra tabla segun ID

actualmente tengo creado esto, un paginador que lee de una tabla y muestra sus valores.

$resultados = mysql_query("SELECT id FROM phpbazar_ads WHERE publicview = 1");
$total_registros = mysql_num_rows($resultados);
$resultados = mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 ORDER BY precio DESC LIMIT $inicio, $registros");
$total_paginas = ceil($total_registros / $registros);

if($total_registros) {

while($articulo=mysql_fetch_array($resultados)) {
echo "<b>".$articulo["catid"]."/".$articulo["subcatid"]."/".$articulo["subcat2id"]."/".$articulo["formato"]."</b><br>";
echo "<b>".$articulo["precio"]."</b><br>";
echo "<b>".$articulo["picture1"]."</b>";
echo "<b>".$articulo["picture2"]."</b><br>";
echo "<font color='#666666'>".$articulo["location"]."</font><br><br><br>";
}

} else {
echo "<font color='darkgray'>(sin resultados)</font>";
}

esto funciona correctamente y muestra todos los valores con el ID de la tabla correspondiente phpbazar_ads.

lo que necesito hacer es que en lugar de mostrar los "ID", lea esos "ID" en la tabla phpbazar_adcat y muestre su valor "NAME".

asi mismo en "picture1" y "picture2" necesito que pinte la imagen, no el valor del campo en formato textual.
  #2 (permalink)  
Antiguo 22/02/2011, 04:38
 
Fecha de Ingreso: agosto-2009
Mensajes: 216
Antigüedad: 14 años, 8 meses
Puntos: 3
Respuesta: obtener valor de otra tabla segun ID

Hola, para la primera cuestión prueba ésto:

Código PHP:
Ver original
  1. $sql = "SELECT *
  2.            FROM phpbazar_ads";
  3.  
  4. $res = mysql_query($sql);
  5.  
  6. while($row = mysql_fetch_array($res))
  7. {
  8.  
  9.      $sql1 = "SELECT name
  10.                   FROM phpbazar_adcat
  11.                   WHERE id = '".$row["id"]."'";
  12.  
  13.      $res1 = mysql_query($sql1);
  14.  
  15.     echo 'LO QUE QUIERAS IMPRIMIR';
  16.  
  17. }

Espero que te sirva. Para lo de las fotos, tendrás que darme más datos como qué guardas en la base de datos (si la imagen, la ruta o el nombre), cómo la guardas y cómo la subes al servidor...

Cualquier duda, pregunta.

Un saludo!
  #3 (permalink)  
Antiguo 22/02/2011, 06:45
marcofbb
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: obtener valor de otra tabla segun ID

Proba con la syntax INNER JOIN de MySQL
  #4 (permalink)  
Antiguo 22/02/2011, 11:41
Avatar de crissrocca  
Fecha de Ingreso: febrero-2011
Mensajes: 51
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: obtener valor de otra tabla segun ID

la imagen la guarda en el servidor y en una tabla dentro del campo "picture1" escribe por ejemplo el nombre de la imagen "blue_picture.jpg".

respecto a lo que me has pasado, te refieres a usar lo que me has puesto o a incluir lo que me has puesto dentro de while($articulo=mysql_fetch_array($resultados)) {...

porque realmente a mi lo que tengo ahora me funciona perfecto, tan solo necesito que esos valores ID que recoge y pinta los cambie por el "name" que esta en otra tabla, relacionado por el mismo ID.
  #5 (permalink)  
Antiguo 22/02/2011, 11:44
Avatar de crissrocca  
Fecha de Ingreso: febrero-2011
Mensajes: 51
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: obtener valor de otra tabla segun ID

Ok, por lo que veo seria algo asi.

SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo

voy a probarlo y os cuento.
  #6 (permalink)  
Antiguo 22/02/2011, 12:08
 
Fecha de Ingreso: agosto-2009
Mensajes: 216
Antigüedad: 14 años, 8 meses
Puntos: 3
Respuesta: obtener valor de otra tabla segun ID

Respecto a lo de las fotos, si guardas el nombre de la foto en un campo varchar en la base de datos, para mostrarla sería tan sencillo como:

Código PHP:
<img width="180" height="205" src="ruta/<?php echo $foto?>">
Dónde ruta/ es la ruta del servidor donde se encuentra la foto y $foto es el nombre de la foto.

Prueba lo otro como te dijo marcofbb y si no consigues solucionarlo, dímelo que te pongo otro ejemplo un poco más claro.

SaludoS!!
  #7 (permalink)  
Antiguo 22/02/2011, 18:28
Avatar de crissrocca  
Fecha de Ingreso: febrero-2011
Mensajes: 51
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: obtener valor de otra tabla segun ID

actualmente he visto que no puedo usar:
SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo

por que cada campo lo tiene que relacionar con una tabla diferente, digamos que
tendria que ser algo asi:
SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo = tabla2.campo
SELECT campos FROM tabla1 INNER JOIN tabla3 ON tabla1.campo = tabla2.campo
SELECT campos FROM tabla1 INNER JOIN tabla4 ON tabla1.campo = tabla2.campo

esto es un poco caotico y supongo que esto se puede realizar de alguna manera mas facil, a ver si alguien tiene idea de como relacionarlo.

el tema de mostrar la imagen ya me funciona con la siguiente linea:
Código PHP:
Ver original
  1. <? if ($articulo['picture1']){ ?>
  2. <img width="180" height="200" src="http://localhost/<?php echo $articulo['picture1']; ?>"><br/>
  3. <? } else {
  4.   echo "<b>Sin Imagen</b>";
  5. }?>
  #8 (permalink)  
Antiguo 22/02/2011, 22:28
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 16 años, 5 meses
Puntos: 18
Respuesta: obtener valor de otra tabla segun ID

mmm?, me late que debes de revisar tu modelo de BD, porque relacionar la misma columna con tantas tablas.

Utilizar una conexión al server dentro de un while no es recomendable.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #9 (permalink)  
Antiguo 23/02/2011, 03:58
 
Fecha de Ingreso: agosto-2009
Mensajes: 216
Antigüedad: 14 años, 8 meses
Puntos: 3
Respuesta: obtener valor de otra tabla segun ID

Me alegro que te funcionara lo de la foto, ahora a ver si solucionamos lo otro.

Prueba esto:

Código PHP:
$resultados mysql_query("SELECT id FROM phpbazar_ads WHERE publicview = 1");
$total_registros mysql_num_rows($resultados);
$resultados mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 ORDER BY precio DESC LIMIT $inicio, $registros");
$total_paginas ceil($total_registros $registros);

if(
$total_registros) {

while(
$articulo=mysql_fetch_array($resultados)) {

/*Aquí dentro debes hacer una consulta a la tabla phpbazar_adcat para sacar el NAME según el id*/

$sql "SELECT name
FROM phpbazar_adcat
WHERE id='"
.$variable."'";

$resmysql_query($sql);
$row mysql_fetch_array($res);

/*Ahora, cada vez que el while de una vuelta, tendrás sólo 1 id, por tanto te sacará el nombre de ese id y ya sólo te queda imprimirlo con $row["name"];
Debes sustituir $variable por aquella variable que contenga el campo que une las dos tablas (que no sé cuál es).*/


echo "<b>".$articulo["catid"]."/".$articulo["subcatid"]."/".$articulo["subcat2id"]."/".$articulo["formato"]."</b><br>";
echo 
"<b>".$articulo["precio"]."</b><br>";
echo 
"<b>".$articulo["picture1"]."</b>";
echo 
"<b>".$articulo["picture2"]."</b><br>";
echo 
"<font color='#666666'>".$articulo["location"]."</font><br><br><br>";
}

} else {
echo 
"<font color='darkgray'>(sin resultados)</font>";

Pruébalo y me dices.

Un saludo!
  #10 (permalink)  
Antiguo 23/02/2011, 04:03
 
Fecha de Ingreso: marzo-2009
Mensajes: 22
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: obtener valor de otra tabla segun ID

Lo que yo haría sería guardar la ruta de la imagen en la base de datos
de tal manera que al hacer la consulta, deberías de hacer esto.
Código PHP:
echo "<img src='$articulo['picture1']'>"
De tal manera lo que puedes hacer para leer las IDs
Código PHP:
$sql "SELECT name FROM phpazard_ads WHERE id='".$articulo['id']."';";
$query mysql_query($sql,$link);
while(
$row mysql_fetch_array($query,MYSQL_NUM))
{
   echo 
$row[0]."\n";

Para repetir eso para cada ID, puedes meterlo dentro de un bucle.
  #11 (permalink)  
Antiguo 23/02/2011, 16:15
Avatar de crissrocca  
Fecha de Ingreso: febrero-2011
Mensajes: 51
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: obtener valor de otra tabla segun ID

Cita:
Iniciado por bienpiyao Ver Mensaje
Me alegro que te funcionara lo de la foto, ahora a ver si solucionamos lo otro.

Prueba esto:

Código PHP:
$resultados mysql_query("SELECT id FROM phpbazar_ads WHERE publicview = 1");
$total_registros mysql_num_rows($resultados);
$resultados mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 ORDER BY precio DESC LIMIT $inicio, $registros");
$total_paginas ceil($total_registros $registros);

if(
$total_registros) {

while(
$articulo=mysql_fetch_array($resultados)) {

/*Aquí dentro debes hacer una consulta a la tabla phpbazar_adcat para sacar el NAME según el id*/

$sql "SELECT name
FROM phpbazar_adcat
WHERE id='"
.$variable."'";

$resmysql_query($sql);
$row mysql_fetch_array($res);

/*Ahora, cada vez que el while de una vuelta, tendrás sólo 1 id, por tanto te sacará el nombre de ese id y ya sólo te queda imprimirlo con $row["name"];
Debes sustituir $variable por aquella variable que contenga el campo que une las dos tablas (que no sé cuál es).*/


echo "<b>".$articulo["catid"]."/".$articulo["subcatid"]."/".$articulo["subcat2id"]."/".$articulo["formato"]."</b><br>";
echo 
"<b>".$articulo["precio"]."</b><br>";
echo 
"<b>".$articulo["picture1"]."</b>";
echo 
"<b>".$articulo["picture2"]."</b><br>";
echo 
"<font color='#666666'>".$articulo["location"]."</font><br><br><br>";
}

} else {
echo 
"<font color='darkgray'>(sin resultados)</font>";

Pruébalo y me dices.

Un saludo!
Usando la sentencia:
Código PHP:
$sql "SELECT name FROM phpbazar_adcat WHERE id='".$articulo['catid']."'";

$resmysql_query($sql);
$row mysql_fetch_array($res); 
he podido imprimir los resultados correctamente vinculandolo con las tres tablas que contienen el NAME relacionado con ese ID.

esta opcion era algo que habia valorado pero pensaba que se podria usar algo mas rapido y sencillo, ya que he tenido que realizar la query 3 veces y a su vez esta dentro de otra query que llena el while.. pero bueno, si funciona lo dejaremos asi.

muchas gracias!!

ahora voy a pegarme con la query principal
Código PHP:
        $resultados mysql_query("SELECT id FROM phpbazar_ads WHERE publicview = 1");
        
$total_registros mysql_num_rows($resultados); 
    
$resultados mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 ORDER BY precio DESC LIMIT $inicio, $registros");
    
$total_paginas ceil($total_registros $registros); 
ya que tengo que recoger las variables que envia el FORM e incluirlas de esta forma
Código PHP:
        $resultados mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 AND catid =$_POST['catid'] OR subcatid=$_POST['subcatid'] OR subcat2id=$_POST['subcat2id'] OR formato=$_POST['formato'] OR location=$_POST['location']");
        
$total_registros mysql_num_rows($resultados); 
    
$resultados mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 AND catid =$_POST['catid'] OR subcatid=$_POST['subcatid'] OR subcat2id=$_POST['subcat2id'] OR formato=$_POST['formato'] OR location=$_POST['location'] ORDER BY precio DESC LIMIT $inicio, $registros");
    
$total_paginas ceil($total_registros $registros); 
actualmente las variables las recoge el PHP correctamente y si solo incluyo un valor, por ejemplo:
Código PHP:
$resultados mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 AND catid =$_POST['catid'] ORDER BY id");
        
$total_registros mysql_num_rows($resultados); 
    
$resultados mysql_query("SELECT * FROM phpbazar_ads WHERE publicview = 1 AND catid =$_POST['catid'] ORDER BY precio DESC LIMIT $inicio, $registros");
    
$total_paginas ceil($total_registros $registros); 
funciona correctamente, pero no consigo sacarlo diciendole que haga la query con todas las variables.

supongo que es algo que esta mal puesto en la query o que para varios valores tengo que ponerlo de otra manera, no?
  #12 (permalink)  
Antiguo 26/02/2011, 07:25
Avatar de crissrocca  
Fecha de Ingreso: febrero-2011
Mensajes: 51
Antigüedad: 13 años, 1 mes
Puntos: 1
De acuerdo Respuesta: obtener valor de otra tabla segun ID

al final he visualizado la query resultado de esta consulta y he visto que una variable siempre pasaba un "0", de ahi el error al hacer las consultas.
Código PHP:
$sql "SELECT * FROM phpbazar_ads WHERE publicview=1";
if(
$_GET['catid'] != '')$sql .= " AND catid LIKE '%".$_GET['catid']."%'";
if(
$_GET['subcatid'] != '')$sql .= " AND subcatid LIKE '%".$_GET['subcatid']."%'";
if(
$_GET['subcat2id'] != '')$sql .= " AND subcat2id LIKE '%".$_GET['subcat2id']."%'";
if(
$_GET['formato'] != '')$sql .= " AND formato LIKE '%".$_GET['formato']."%'";
if(
$_GET['location'] != '')$sql .= " AND location LIKE '%".$_GET['location']."%'";
$sql .= "ORDER BY fecha DESC";

$resultados mysql_query($sql);

//y luego el resto del codigo... 
ahora he pasado esa variable en caso de no estar seleccionada de "0" a "null" y funciona correctamnete.

gracias todos por la informacion.

Etiquetas: tablas
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 21:30.