Foros del Web » Programando para Internet » PHP »

Consulta dentro de otra consulta.

Estas en el tema de Consulta dentro de otra consulta. en el foro de PHP en Foros del Web. Hola, Tengo dos bases de datos para mostrar un listado de coches en venta con sus propiedades y otra base de datos con las fotos ...
  #1 (permalink)  
Antiguo 04/11/2005, 02:37
Avatar de deccweb  
Fecha de Ingreso: febrero-2003
Ubicación: Mataro
Mensajes: 365
Antigüedad: 21 años, 1 mes
Puntos: 0
Consulta dentro de otra consulta.

Hola, Tengo dos bases de datos para mostrar un listado de coches en venta con sus propiedades y otra base de datos con las fotos de los coches. Y me gustaria mostrar la información del coche.. y a la vez todas las fotos de ese coche.

Lo estoy planteando bien?
Código PHP:
<?PHP
 
include ('inc/conectarse_bd.php');

$lista_colores=array('#eeeeee','#ffffff','#eeeeee','#ffffff'); 
$num_colores=4
$indice=0

$enlace=conectarse_bd();

mysql_select_db("qaj541") or die("No pudo seleccionarse la BD.");

    
$consulta="SELECT * FROM `sintecmotor` WHERE idcoche=$idcoche";

$resultado mysql_query($consulta)
    or die(
"La consulta falló" mysql_error());


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

?>
<table width="700" border="0">
  <tr bgcolor="#FFFFFF"> 
    <td colspan="2"> <table width="699" border="0">
        <tr bgcolor="#FFFFFF"> 
          <td width="551"> <div align="left"><img src="coches/<?=$linea[foto]?>" width=550></div></td>
          <td width="138"> <div align="left">
<?
$consulta2
="SELECT * FROM `sintecmotorfotos`  WHERE idcoche=$idcoche";

$resultado2 mysql_query($consulta2)
    or die(
"La consulta falló" mysql_error());


while (
$linea=mysql_fetch_array($resultado2)) 
    {
    print 
"<img src=<?=$linea[foto]?>>";
    }        



?>
    
</div></td>
        </tr>
      </table></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td width="131">&nbsp;</td>
    <td width="564">&nbsp;</td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td colspan="2"><em><strong>Ficha Tecnica</strong></em></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td> <div align="left"><strong>Modelo</strong></div></td>
    <td align="left"> 
      <?=$linea[modelo]?>
      <div align="left"></div></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td> <div align="left"><strong>Carroceria</strong></div></td>
    <td align="left"> 
      <?=$linea[carroceria]?>
      <div align="left"></div></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td> <div align="left"><strong>A&ntilde;o</strong></div></td>
    <td align="left"> 
      <?=$linea[ano]?>
      <div align="left"></div></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td> <div align="left"><strong>Kms</strong></div></td>
    <td align="left"> 
      <?=$linea[kms]?>
      <div align="left"></div></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td> <div align="left"><strong>Color</strong></div></td>
    <td align="left"> 
      <?=$linea[color]?>
      <div align="left"></div></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td> <div align="left"><strong>Combustible</strong></div></td>
    <td align="left"> 
      <?=$linea[combustible]?>
      <div align="left"></div></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td> <div align="left"><strong>Descripci&oacute;n</strong></div></td>
    <td align="left"> 
      <?=$linea[descripcion]?>
      <div align="left"></div></td>
  </tr>
</table>
<?


}        


liberar_result($resultado);
desconectar_bd($enlace);
?>
__________________
Calle17.net

edgargranados.es

Última edición por deccweb; 04/11/2005 a las 06:14 Razón: Faltaba documentar
  #2 (permalink)  
Antiguo 04/11/2005, 03:59
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Ese es tu aporte no documentado a la comunidad o tienes algún problema en el código que has posteado?

Saludos
  #3 (permalink)  
Antiguo 04/11/2005, 04:11
Avatar de deccweb  
Fecha de Ingreso: febrero-2003
Ubicación: Mataro
Mensajes: 365
Antigüedad: 21 años, 1 mes
Puntos: 0
Ui! lo siento, se me ha olvidado.

Pues quiero hacer una consulta dentro de un while, pero no encuentro la forma. He probado varias formas.
__________________
Calle17.net

edgargranados.es
  #4 (permalink)  
Antiguo 04/11/2005, 07:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
No deberías usar ese tipo de "sub-consultas" como lo haces .. Es decir . .anindando un par de "SELECT" vía PHP ejecutandolos.

Para eso en SQL tienes las sentencias como INNERT JOIN (o LEFT .. RIGTH) y similares .. y para el tema de "no repetir" una "cabecera", ejemplo:

Obtendrás datos tras un INNER JOIN tipo:
motor foto
motor1 foto1
motor1 foto2
motor1 foto3
motor2 foto1
motor2 fotoX

En ese caso .. a ti te interes obtener:

motor1
foto1
foto2
foto3
motor2
foto1
foto2
fotoX

(sin repetir esa "cabecera" pero mostrando el "detalle")

Revisa este mensaje:
http://www.forosdelweb.com/showthrea...ght=acomulador

Eso sería lo "optimo" ..

Si quieres seguir haciendolo como lo haces (no me parece nada correcto) ten presente que PHP gestiona lo que denomina "links" de conexión .. en un script si no indicas expresamente cual vas a usar .. se crea uno en el primer momento que haces un "mysql_connect()" y se usa por el resto de funciones de mysql_xxx() que uses .. Por ende .. si tu tienes dos "consultas" a la vez ejecutandose .. debes crear DOS links de conexión uno para cada consulta y usarlo expresamente en las funciones mysql_xxxx() como segundo parámetro que todas disponen como "opcional" por lo dicho.

Código PHP:
$link1=mysql_connect(....);
$link2=mysql_connect(.....);

mysql_select_db("bd",$link1);
mysql_select_db("bd",$link2);

$resultado1=mysql_query($sql,$link1);
While (.....){
     
$resultado2=mysql_query($sql,$link1);
     While (.....){
     }

Un saludo,
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 13:19.