Foros del Web » Programando para Internet » PHP »

Problema al relacionar dos campos de distintas tablas

Estas en el tema de Problema al relacionar dos campos de distintas tablas en el foro de PHP en Foros del Web. Hola de nuevo :) Resulta que quiero imprimir las noticias posteadas en mi foro phpBB. Para estoy necesito primeramente todos los temas de la tabla ...
  #1 (permalink)  
Antiguo 16/12/2010, 10:09
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 14 años, 9 meses
Puntos: 8
Problema al relacionar dos campos de distintas tablas

Hola de nuevo :)

Resulta que quiero imprimir las noticias posteadas en mi foro phpBB. Para estoy necesito primeramente todos los temas de la tabla phpbb_topic creados en el foro de Noticias (forum_id=5). Teniendo esta información guardo en una variable el topic_first_post.

Código PHP:
Ver original
  1. $sql1 = 'select * from phpbb_topics where forum_id=5';
  2. $res1 = mysql_query($sql1,$connforo);
  3.  
  4. while($row1 = mysql_fetch_array($res1)) {
  5. $post_id = row1['topic_first_post'];
  6. }

Luego hago una nueva consulta, esta vez a la tabla phpbb_posts poniendo como condición que el post_id sea igual al topic_first_post que tengo guardado como variable:

Código PHP:
Ver original
  1. $sql = 'select * from phpbb_posts where post_id = '.$post_id.' order by topic_id DESC limit 0,3';

Al hacer esto obtengo el siguiente error:

Parse error: syntax error, unexpected '[' in /home/audition/public_html/nuevo/tabladenoticias.php on line 57

La línea 57 es en la que defino la variable post_id

Cúal seria la forma correcta de definirla?
Gracias desde ya.
  #2 (permalink)  
Antiguo 16/12/2010, 10:11
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Problema al relacionar dos campos de distintas tablas

Código PHP:
Ver original
  1. $post_id = row1['topic_first_post'];

row1 ?.... no sera $row1 ???
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 16/12/2010, 10:26
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Problema al relacionar dos campos de distintas tablas

Cita:
Iniciado por Hidek1 Ver Mensaje
Código PHP:
Ver original
  1. $post_id = row1['topic_first_post'];

row1 ?.... no sera $row1 ???
*loool*
Muchas gracias! XD se me paso totalmente.

Ahora me surgió otro problema. Al hacer la consulta me imprime el siguiente error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY topic_id DESC LIMIT 0,3' at line 1

Supongo que el problema esta en la cláusula WHERE:

Código PHP:
Ver original
  1. WHERE post_id = '.$post_id.'

Alguna idea?
  #4 (permalink)  
Antiguo 16/12/2010, 14:04
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 14 años, 9 meses
Puntos: 8
Solo 1 resultado tras consulta

Hola,

Mi problema es el siguente:
Estoy intentando extraer los temas del foro Noticias de mi foro hecho en phpBB. Tras varios intentos lo logré hacer de la siguiente manera:
Código PHP:
Ver original
  1. <?php
  2. ()conexi&#243;n a base de datos
  3.  
  4. /* Primero tomé todos los temas creados en el foro 5, es decir, mi foro de noticias */
  5.  
  6. $sql1 = 'select * from phpbb_topics where forum_id=5';
  7. $res1 = mysql_query($sql1,$connforo);
  8.  
  9. /* Luego guardé el ID del primer post hecho de los temas en una variable */
  10.  
  11. while($row1 = mysql_fetch_array($res1)) {
  12. $first_post = $row1['topic_first_post_id'];
  13. }
  14.  
  15. /* Finalmente selecciono los posts que tengan como ID el mismo que los guardados anteriormente en la variable */
  16.  
  17. $sql = "SELECT * FROM phpbb_posts WHERE post_id=$first_post ORDER BY post_time DESC LIMIT 0,3";
  18. $res = mysql_query($sql,$connforo) or die(mysql_error());
  19.  
  20. while($row = mysql_fetch_array($res)){
  21.  
  22.     if (strlen($row['post_text']) > 160) {
  23.         $row['post_text'] = substr($row['post_text'],0,160-3)."...";
  24.     }
  25. ?>

Lo cuál me muestra sólo una noticia, sin embargo existen 4 noticias en dicho foro y yo estoy dandole un limite de 3.

Por qué sólo me muestra una?

Última edición por kenproxd; 16/12/2010 a las 14:13
  #5 (permalink)  
Antiguo 16/12/2010, 14:18
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Solo 1 resultado tras consulta

while($row1 = mysql_fetch_array($res1)) {

$first_post = $row1['topic_first_post_id'];

}

ese while solo te guarda la ultima id que haces en el select

prueba guardando en un arreglo

while($row1 = mysql_fetch_array($res1)) {

$first_post[] = $row1['topic_first_post_id'];

}

luego haces un implode
$ids = implode("','",$first_post);

y luego en la segunda consulta preguntas con un IN

sql = "SELECT * FROM phpbb_posts WHERE post_id IN ('". $ids ."') ORDER BY post_time DESC LIMIT 0,3";
  #6 (permalink)  
Antiguo 16/12/2010, 15:16
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 14 años, 9 meses
Puntos: 8
Respuesta: Solo 1 resultado tras consulta

Cita:
Iniciado por Death_Empire Ver Mensaje
while($row1 = mysql_fetch_array($res1)) {

$first_post = $row1['topic_first_post_id'];

}

ese while solo te guarda la ultima id que haces en el select

prueba guardando en un arreglo

while($row1 = mysql_fetch_array($res1)) {

$first_post[] = $row1['topic_first_post_id'];

}

luego haces un implode
$ids = implode("','",$first_post);

y luego en la segunda consulta preguntas con un IN

sql = "SELECT * FROM phpbb_posts WHERE post_id IN ('". $ids ."') ORDER BY post_time DESC LIMIT 0,3";
Muchas gracias! funciona perfectamente

Etiquetas: campos, distintas, dos, relacionar, 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 19:00.