Ayuda con SELECT

carteluo
21 de Junio del 2005
Hola.

Tengo 2 tablas:
categorias
---------------------
| id | nombre |
---------------------

y contenido
---------------------------
| id | titulo | catid |
---------------------------

Lo que quisiera hacer es que mostrara el contenido segun la categoria, ejm:

Categoria 1
titulo del contenido 1
titulo del contenido 2

Categoria 2
titulo del contenido 1
titulo del contenido 2
titulo del contenido 3
titulo del contenido 4.......

Entonces hice esto:

$buscar=mysql_query("SELECT cat.id, cat.name, con.id, con.title, con.catid FROM mos_categories AS cat, mos_content AS con WHERE con.catid=cat.id AND con.state='-1' AND LEFT(created,10) = '$fechaMysql'",$link);
while($row = mysql_fetch_array($buscar)) {
$tituloCat =$row['name'];
titulo =$row['title'];
echo $tituloCat;
echo $titulo;
}

Como se ve, cuando imprimo sale asi:

Categoria 1
titulo del contenido 1

Categoria 1
titulo del contenido 2

Categoria 1
titulo del contenido 3

Categoria 2
titulo del contenido 1

Categoria 2
titulo del contenido 2......

Como podría hacerlo segun el formato que quiero?

Gracias y Salu2

Loop
21 de Junio del 2005
yo creo que te complicaste en extremo la vida con eso que mandas, si sólo quieres una categoria simplemente la eliges mediante sql,

"SELECT * FROM `tabla` WHERE `categoria`='$la_que_busco'"

un bucle while para que muestre el contendo de la categoría,

-------
Otra opción podría ser dos while el primero obtiene la categoría sobre la que se requiere y el otro anidado solicitando el resultado de esa categoría solamente. si tienes una sóla cantidad de categorías y éstas no son incrementadas constantemente podría manejarse con punteros estilo C , algo así

$a=1;
$CategoriasNum=20; // <-- Categorías
while($a>=$CategoriasNum){
$categoria="categoria".$a;
$id=$a;

$Query1="SELECT * FROM `tabla` WHERE `categoria`='$$categoria' AND `id`='$id'";
$Q=mysql_db_query("data_base",$Query1);
while($i=mysql_fetch_array($Q)){
echo $i['mi_dato'];
}

$a++;
}

En este caso igual podría servir manejarse por punteros como en el ejemplo, no creo que sea presisamente lo que buscas pero ojalá te sirva , un poco rudimentaria la idea de hacerlo ejecutando tantos consultas a la base de datos xD pero fue lo único que se me ocurrió !

Saludos !

rainbow2
21 de Junio del 2005
La pagina donde se seleciona la categoria puedes hacerla con un while:

$query = mysql_query("SELECT * FROM categorias")or die('Error');
while($row = mysql_fetch_array($query)) {
echo '<a href="segunda_pagina.php?categoria='.$row['id'].'">'.$row['nombre'].'</a>';
}

Y en la pagina que muestra el contenido:

$query = mysql_query("SELECT * FROM contenido WHERE catid='$_GET[categoria]'");
while($row = mysql_fetch_array($query)) {
echo $row['titulo'];
}

Espero que te sirva!

Salu2

Rainbow2
http://www.eurion.net