Foros del Web » Programando para Internet » PHP »

Consulta a varias tablas pero solo muestra la ultima

Estas en el tema de Consulta a varias tablas pero solo muestra la ultima en el foro de PHP en Foros del Web. Vereis, ando algo desesperado, más que nada por que ignoro aún muchas cosas del php y todos los intentos me dan el mismo resultado. El ...
  #1 (permalink)  
Antiguo 26/04/2009, 07:03
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 15 años, 11 meses
Puntos: 3
Consulta a varias tablas pero solo muestra la ultima

Vereis, ando algo desesperado, más que nada por que ignoro aún muchas cosas del php y todos los intentos me dan el mismo resultado.

El problema que tengo es el siguiente, al ver que debido a la falta de conocimientos del tema, no podia mostrar en una tabla los resultados de 2 consultas a tablas de la base de datos, he optado por hacer 1 consulta a una, mostrar los resultados, y seguidamente hacer otra consulta a la otra, y que se muestren los resultados en otra tabla.
Vamos que utilizo casi el mismo script, en el que solo varia el nombre de la tabla a consultar.

La cuestión es que si muestro solo una consulta, cualquiera de las 2, muestra los resultados sin problema, creandome la tabla con los resultados. Pero al poner las 2, solo aparecen los resultados de la ultima escrita en el codigo, ignorando la primera consulta y sin mostrarme ninguna clase de error. He probado a ponerlas en el codigo en diferente orden, y el resultado es el mismo pero al reves, mostrando solo la otra tabla.

Hasta donde me llegan mis limitados conocimientos, deduzco que pueda que se deba a la variable $row, ya que uso un while($row=mysql_fetch_row($busqueda_01) en la primera consulta y while($row=mysql_fetch_row($busqueda_02) en la otra.

Muchas gracias por vuestra ayuda.
  #2 (permalink)  
Antiguo 26/04/2009, 07:15
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 53
Antigüedad: 16 años
Puntos: 2
Respuesta: Consulta a varias tablas pero solo muestra la ultima

Y si ordenas el resultado de la consulta colocando al final de la SQL un ORDER BY atributo DESC / ASC ?

Donde DESC es descendente y ASC ascendente

pro otro lado juega con el parámetro LIMIT de SQL, por ejemplo LIMIT 0, 2 te muestras los 2 primeros resulatdos del SQL, donde 0 indica la posición y el 2 es la cantidad de registros, tambíen podría hacer LIMIT 20, 34, etc ....

Si solo quieres mostrar 1 registro de la BBDD utiliza:

$resultado = mysql_fetch_array($tu_consulta);

Y en caso de mostrar varios registros:

while($resultado = mysql_fetch_array($tu_consulta)) {

}
  #3 (permalink)  
Antiguo 26/04/2009, 07:23
 
Fecha de Ingreso: diciembre-2008
Mensajes: 54
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Consulta a varias tablas pero solo muestra la ultima

si pones el codigo va a ser mas facil que alguien pueda ayudarte lo de la variable $row no creo que tenga que ver si en cada while generas la tabla correspondiente o sea en el primer while una tabla y en el segundo while la otra tabla
  #4 (permalink)  
Antiguo 26/04/2009, 07:36
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Consulta a varias tablas pero solo muestra la ultima

Gracias Moddick. Veras, espero explicarme mejor mostrando el codigo de la consulta.
Decir que las consultas funcionan perfectamente, cuando solo pongo el codigo de una de las 2, el problema esta en que al poner los 2 codigos, pues solo muestra la tabla de resultados que corresponde al ultimo codigo, pongo el codigo de una de las consultas:


Código PHP:
//consulta a la tabla "honda"

$busqueda_honda mysql_query("
SELECT * FROM honda WHERE publicar = 'si' $select_modelo $select_ano select_color ORDER BY modelo ASC"
);

// creamos la tabla con los resultados


echo"<table width=100% table class='sortable'  id='lista_de_modelos
<tr>
<td><b>Modelo</b><td><b>Año</b></td><td><b>color</b></td>

</tr>"
;
$cont=0
while(
$row=mysql_fetch_row($busqueda_honda)){
if(
$cont%2==0){ $color='#7FB0FF';}else{ $color='#fff';}
$cont++; 

  echo
"<tr bgcolor=$color><td><a href=\"direccion_web_aqui/?coche=$row[1]\">$row[2]</a></td><td>$row[11]</td><td>$row[10]</td>
    </tr>"
;
}

echo
"</table>"
Esta consulta me funciona perfectamente, luego para hacer la siguiente la copio y solo cambio el nombre de la variable $busqueda_honda por $busqueda_toyota y el nombre de la tabla a consultar. Pues solo me muestra la última consulta escrita en el código.

PD: He quitado el enlace y he puesto "direccion_web_aqui" ya que no me dejaba postear el mensaje por las medidas Anti-spam
  #5 (permalink)  
Antiguo 26/04/2009, 09:22
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 53
Antigüedad: 16 años
Puntos: 2
Respuesta: Consulta a varias tablas pero solo muestra la ultima

parece que la consulta SQL está mal:

SELECT * FROM honda WHERE publicar = 'si' $select_modelo $select_ano select_color ORDER BY modelo ASC

no sería algo parecido a:

SELECT * FROM honda WHERE publicar='si' AND modelo='$select_modelo' AND ano='$select_ano' AND color='$select_color' ORDER BY modelo ASC

Y yo de tí, en vez de usar mysql_fetch_row usaría mysql_fetch_array y haría las llamadas
$row["modelo"], $row["color"], ... así es menos lioso que usar el nº de la posición del array, pero esto ya es una opción personal.
  #6 (permalink)  
Antiguo 26/04/2009, 09:43
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Consulta a varias tablas pero solo muestra la ultima

No, la consulta esta bien, las variables tipo $select_xxx.... ya contienen la cadena WHERE $variable=valor; en su interior, de hecho las consultas me funcionan perfectamente.
El problema es que no puedo poner 2 consultas (codigo repetido pero consultando otra tabla), ya que solo me muestra una tabla, la otra no da error ni nada, sencillamente no aparece.

He reemplazado mysql_fetch_row, por mysql_fetch_array como has dicho, pero el resultado es exactamente el mismo.

De todas formas muchas gracias por la ayuda. A ver si alguien sabe que hago mal :)
  #7 (permalink)  
Antiguo 26/04/2009, 09:51
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 53
Antigüedad: 16 años
Puntos: 2
Respuesta: Consulta a varias tablas pero solo muestra la ultima

ya pillo, entonces es cosa de SQL

mira este ejemplo:

SELECT * FROM honda WHERE modelo in (select modelo from modelos where marca='honda') AND color in (select color from colores)

una SQL sencillita que te pueda servir de ayuda de como hacer varias selects en 1, nos e si te debes referir a esto.
  #8 (permalink)  
Antiguo 26/04/2009, 10:32
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Consulta a varias tablas pero solo muestra la ultima

mhh quiza no me he explicado bien. Disculpa si es asi.

Ok, acabo de hacer una consulta basica desde cero, solo contiene el siguiente codigo, a parte de la conexion a la BD claro:


Código PHP:
$busqueda1 mysql_query("
SELECT * FROM honda WHERE publicar = 'si' ORDER BY modelo ASC"
);

echo 
"Resultados busqueda Honda";

echo
"<table width=100% table class='sortable' id='lista_de_coches_honda
<tr>
<td><b>Modelo</b><td><b>Año</b></td><td><b>color</b></td>

</tr>"
;
$contar=0
while(
$row=mysql_fetch_row($busqueda1)){
if(
$contar%2==0){ $color='#7FB0FF';}else{ $color='#fff';}
$contar++; 

  echo
"<tr bgcolor=$color><td><a href=\"direccion_web_aqui/?coche=$row[1]\">$row[2]</a></td><td>$row[11]</td><td>$row[10]</td>
    </tr>"
;


echo
"</table>"
Esto me funciona perfecto, me imprime en pantalla "Resultados busqueda Honda" y a continuacion imprime una una tabla que me muestra los coches de la tabla "honda".

Ahora copio este codigo otra vez, y solo cambio "honda" por "toyota" y la variable "$busqueda1" por "$busqueda2"

Quedando así:

Código PHP:
$busqueda2 mysql_query("
SELECT * FROM toyota WHERE publicar = 'si' ORDER BY modelo ASC"
);

echo 
"Resultados busqueda Toyota";

echo
"<table width=100% table class='sortable' id='lista_de_coches_toyota
<tr>
<td><b>Modelo</b><td><b>Año</b></td><td><b>color</b></td>

</trt
$contar=0; 
while($row=mysql_fetch_row($busqueda2)){
if($contar%2==0){ $color='#7FB0FF';}else{ $color='#fff';}
$contar++; 

  echo"
<tr bgcolor=$color><td><a href="direccion_web_aqui/?coche=$row[1]\">$row[2]</a></td><td>$row[11]</td><td>$row[10]</td>
    </tr>"
;


echo
"</table>"
Se supone que los 2 scripts juntos, deberian hacer esto:

1º Imprimir "Resultados busqueda Honda" en pantalla
2º Mostrar resultados honda en una tabla
3º Imprimir "Resultados busqueda Toyota" en pantalla
4º Mostrar resultados toyota en una tabla

Pues bien, lo que haces es esto
1º Solo imprime "Resultados busqueda Honda" en pantalla...
2º Solo me muestra los resultados de la tabla toyota...

Con lo poco que se, es posible que la variable $row sea de caracter global, y me reemplaze los datos guardados por la segunda busqueda? Otra cosa no se me ocurre
  #9 (permalink)  
Antiguo 26/04/2009, 10:57
 
Fecha de Ingreso: abril-2008
Ubicación: Barcelona
Mensajes: 53
Antigüedad: 16 años
Puntos: 2
Respuesta: Consulta a varias tablas pero solo muestra la ultima

Te debería ir bien, no veo nada raro, lo único es que detrás de la consulta SQL le has de pasar la conexión a BBDD tipo
$busqueda1 = mysql_query("SELECT * FROM honda WHERE publicar = 'si' ORDER BY modelo ASC", $db);

Sino prueba de poner $row1 y row2 en lugar de $row, aunque no creo
  #10 (permalink)  
Antiguo 26/04/2009, 11:15
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Consulta a varias tablas pero solo muestra la ultima

Pasandoles la consulta de la conexion como has dicho pasa exactamente lo mismo.
Respecto a cambiar la variable $row por $row1 o $row2, ya lo habia probado, pero da un error al cambiarle el nombre.

No se, con esto de querer mostrar resultados de 2 o más tablas, o mezclar datos de varias tablas, estoy empezando a pensar que ganaria tiempo juntando todas las tablas que tengo en una sola y acabaria antes haciendo el codigo.

La duda que me surge si hago eso, es que si hay algun tipo de limites de registro por tabla, o cuantos campos como máximo admite una tabla. A ver si alguien lo sabe :)
  #11 (permalink)  
Antiguo 01/05/2009, 07:59
 
Fecha de Ingreso: mayo-2008
Ubicación: España
Mensajes: 130
Antigüedad: 15 años, 11 meses
Puntos: 3
Respuesta: Consulta a varias tablas pero solo muestra la ultima

Al final lo solucioné. Simplemente era un error de sintaxis. Si os fijais, me faltaba cerrar cada tabla. Donde ponia:

echo"<table width=100% table class='sortable' id='lista_de_coches_honda

me faltaba cerrar con '>

Por eso solo se creaba una de las 2 tablas, menudo despiste...
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 05:46.