2011-02-15 6 views
0
**categories** mysql table 
id|category_name 

**listings** mysql table 
id|listing_title|category_id 

Je veux lister toutes les catégories sur 1 seule/même page PHP, avec toutes les listes indiquées ci-dessous chaque catégorie. Comment puis-je faire cela en interrogeant la table des annonces une fois. Je peux le faire en faisant une requête séparée à partir de la boucle des catégories, mais ce serait plus que nécessaire, je devine.Interroger la table MySQL une fois pour obtenir toutes les listes pour toutes les catégories

 

//query listings table once 
$sql = mysql_query("SELECT * FROM listings", $conn); 

//loop through all categories 
$sql = mysql_query("SELECT * FROM categories ORDER BY catname", $conn); 
while($row= mysql_fetch_array($sql, MYSQL_ASSOC)){ 

    //print category name 
    print"$row[catname]"; 

    //print listings of category 

} 

Répondre

2

est ici simple (Nom de la catégorie, Annonces)

$ sql_code = « SELECT C.category_name CAT_NAME, listes L.listing_title des catégories C, L annonces OÙ C.id = L.category_id ORDER BY C. Nom de catégorie";

$ next_catname = "";

while ($ row = mysql_fetch_array ($ sql, MYSQL_ASSOC)) {
if (strcmp (next_catname $, $ row [catname]) < 0)
{
if (strlen (next_catname $)> 0)
{print "< \ BR>":}
print "Catégorie:". $ row [catname]. "< \ BR>";
} print "$ row [catname]: $ row [annonces] < \ BR>"; }

Voici un Freaky (Nom de la catégorie Avec Liste séparées par des virgules Annonces)

annonces $ sql_code = « SELECT C.category_name CAT_NAME, GROUP_CONCAT (L.listing_title) des catégories C, L annonces O C. C.id = L.category_id GROUP BY C.category_name ";

$ sql = requête mysql ($ sql_code, $ conn);

while ($ row = mysql_fetch_array ($ sql, MYSQL_ASSOC)) {
print "Catégorie: $ row [catname] < \ BR> Annonces: $ row [liste] < \ BR> < \ BR>";
}

ou « » et les imprimer un par un

vous pourriez exploser $ row [annonce] Amusez-vous avec celui-ci !!!

+0

merci. bizarre on travaille! – SomeRandomDude

0

avez-vous pensé à

select * from categories, listings 
where categories.id = listings.category_id 
order by categories.name, categories.id, listings.listing_title, listings.id 

ayant alors la boucle de code PHP à travers la piste de maintien de la liste si la catégorie actuelle correspond à la catégorie précédente?

Questions connexes