Comunidad de diseño web y desarrollo en internet online

Se puede poner un selec dentro de otro, como se hace

Citar            
MensajeEscrito el 07 Nov 2008 03:58 pm
Supongamos que tengo un foro y en una tabla tengo temas y en la otra tengo los mensajes de cada tema entonces quiero que me ponga tema y sus mensajes, son dos select (select * from temas y select * from mensajes) asi saldrian todos los temas y todos los mensajes, pero si quiero que me ponga tema y sus mensajes pues ocuparia un while pero no me sale me podrian explicar como.

Por lista

24 de clabLevel



 

msie7
Citar            
MensajeEscrito el 07 Nov 2008 09:14 pm
averigua sobre joiners en mysql para realizar un llamado a los dos tablas y que te muestren los datos de todoas esas tablas ;-)

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 11 Nov 2008 05:45 pm
hijole no se trata de eso, solo quiero un ejemplo del uso de while para poner los 2 select

Por lista

24 de clabLevel



 

msie7
Citar            
MensajeEscrito el 11 Nov 2008 06:45 pm
si tienes:
tabla temas
campos: id,titulo
tabla mensajes
campos: id, tema_id, texto

si quieres mostrar el tema y los mensajes como clab la consulta seria algo así, sin while:

Código :

select temas.id, temas.titulo, mensajes.id, mensajes.tema_id, mensajes.text 
FROM temas, mensajes 
WHERE temas.id=mensajes.tema_id and temas.id=$numero_de_tema


claro con eso solo mostrarías los mensajes de un solo tema.

si quieres listar todos los temas con sus respectivos mensajes seria algo asi-con la misma tabla-:

Código :

      $sql_temas="select id, titulo from temas order by id";
      $tu_sql=mysql_fetch_array($sql_temas))
      while($array=mysql_fetch_array($tu_sql)){
         echo $array['titulo'];
         $tema_id=$array['id'];
         $sql_mensajes="select id, tema_id, texto from mensajes where tema_id=$tema_id order by id";
         $tu_sql2=mysql_fetch_array($sql_mensajes))
         while($array=mysql_fetch_array($tu_sql2)){
            echo $array['mensaje'];      
         }
      }

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 11 Nov 2008 07:09 pm
Busca sobre selects anidados

Por psycho-vnz

Claber

1186 de clabLevel

7 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 11 Nov 2008 08:56 pm
MYSQL no soporta selects anidados! debes ingeniarte con JOINS

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 14 Nov 2008 04:15 pm
ya revise de los join aqui esta la liga
http://dev.mysql.com/doc/refman/5.0/en/rewriting-subqueries.html
y no entiendo como me pueden ser utiles, yo ocupo 2 select y los join se aplican cuando se tienen varias tablas y quieres sacar datos haciendo una subconsulta de otra tabla y yo no ocupo subconsultas porque los quiero todos.

Por lista

24 de clabLevel



 

msie7
Citar            
MensajeEscrito el 14 Nov 2008 04:25 pm
no funcionó ésto? :

chug0 escribió:

si tienes:
tabla temas
campos: id,titulo
tabla mensajes
campos: id, tema_id, texto

si quieres mostrar el tema y los mensajes como clab la consulta seria algo así, sin while:

Código :

select temas.id, temas.titulo, mensajes.id, mensajes.tema_id, mensajes.text 
FROM temas, mensajes 
WHERE temas.id=mensajes.tema_id and temas.id=$numero_de_tema


claro con eso solo mostrarías los mensajes de un solo tema.

si quieres listar todos los temas con sus respectivos mensajes seria algo asi-con la misma tabla-:

Código :

      $sql_temas="select id, titulo from temas order by id";
      $tu_sql=mysql_fetch_array($sql_temas))
      while($array=mysql_fetch_array($tu_sql)){
         echo $array['titulo'];
         $tema_id=$array['id'];
         $sql_mensajes="select id, tema_id, texto from mensajes where tema_id=$tema_id order by id";
         $tu_sql2=mysql_fetch_array($sql_mensajes))
         while($array=mysql_fetch_array($tu_sql2)){
            echo $array['texto'];      
         }
      }

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 15 Nov 2008 05:30 pm
use tu codigo igualito y no funciono, pero tome unas ideas para hacer este codigo, pero algo esta mal porque cuando es un solo while si funciona pero meti el otro while y ya no funciono

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
<style type="text/css">
<!--
.Estilo2 {font-size: 12px; font-weight: bold; }
-->
</style>
</head>

<body>
<?
define("servidor","localhost");//Servidor
define("usuario","pruebas");//Usuario
define("password","hisadsj");//Password
define("bd","pendientes");//Base de datos a la que se desea conectar.

$conexion=mysql_connect(servidor,usuario,password);
if (!$conexion) echo "Error al Intentar establecer la Conexión al Servidor!!";

mysql_select_db (bd, $conexion); //Selecciono la bd

$consulta="select ID, Autor, Tema, Mensaje from TEMAS order by ID";
$rcConsulta=mysql_query($consulta,$conexion);

if (!$rcConsulta) {
echo 'Could not run query: ' . mysql_error();
exit;
}

?>
<table width="813" border="1">
<tr>
<td width="89" align="center" class="Estilo2"><div align="center" class="Estilo2">ID</div></td>
<td width="143" class="Estilo2"><div align="center" class="Estilo2">Autor</div></td>
<td width="183" class="Estilo2"><div align="center" class="Estilo2">Tema</div></td>
<td width="95" class="Estilo2"><div align="center" class="Estilo2">Mensaje</div></td>
</tr>
<?
while ($registro = mysql_fetch_row($rcConsulta)){
?>

<?
foreach($registro as $campo){
?>
<? echo $campo;?>

<? } ?>

<?
$Padre=$registro['ID'];
$consulta2="select ID, Autor, Padre from mensajes where Padre=$Padre order by ID";
$rcConsulta2=mysql_query($consulta2,$conexion);?>
<?
while ($registro2 = mysql_fetch_row($rcConsulta2)){
?>
<? foreach($registro2 as $campo2){
?>
<? echo $campo2;?>

<? } ?>
<?
}
?>
</table>

</body>
</html>

Por lista

24 de clabLevel



 

msie7
Citar            
MensajeEscrito el 15 Nov 2008 05:55 pm
te falto cerrar un while:

Código :

while ($registro = mysql_fetch_row($rcConsulta)){
   foreach($registro as $campo){
      echo $campo;      
   }
   $Padre=$registro['ID'];
   $consulta2="select ID, Autor, Padre from mensajes where Padre=$Padre order by ID";
   $rcConsulta2=mysql_query($consulta2,$conexion);
   while ($registro2 = mysql_fetch_row($rcConsulta2)){
      foreach($registro2 as $campo2){
         echo $campo2;
      }
   }
}


por que cierras y abres tanto <? ?>, prueba usar un editor de texto decente, notepad++, eclipse, etc.. para que te ayude con el codigo.
Espero que esa no sea tu clave verdadera, no deberias publicarla.
Trata de usar clases para la conexiones a las dbs, aqui en clab puedes leer sobre eso.

saludos

Por chug0

Claber

136 de clabLevel



 

Perú

firefox
Citar            
MensajeEscrito el 15 Nov 2008 06:54 pm
ya me salio, pero en lugar de usar $registro['ID']; puse $registro['0']; y asi si sale
hijole que dificil es programar a pata, ahora tengo que ponerles link me ayudas, en el dreamwever nomas con un clic se hace el link

Por lista

24 de clabLevel



 

msie7
Citar            
MensajeEscrito el 15 Nov 2008 08:02 pm
ya se como hacer los link gracias

Por lista

24 de clabLevel



 

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.