Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Sisäliitos ja tietojen tulostus

Triton [11.06.2009 01:05:48]

#

Eräässä skriptissäni haen tietokannasta select-haulla sisäliitosta hyödyntäen kahdesta taulusta tietoja ja ne tulisi järjestellä ikäänkuin kategorioittain... En kuitenkaan keksi miten voisin välttää saman otsikon tulostamisen kahdesti, kun tulostan tiedot...

Eli nyt se tekee näin:

Kirjailijat:
Ilkka Remes

Kirjailijat:
Arto Paasilinna

kun sen pitäisi...

Kirjailijat:
Ilkka Remes
Arto Paasilinna

Toivottavasti ymmärsitte kysymykseni...

Sami [11.06.2009 02:30:58]

#

Tekisiköhän UNION sen mitä haluat?

taulu a:
+------+
| x    |
+------+
| foo  |
+------+

taulu b:
+------+
| x    |
+------+
| bar  |
| baz  |
+------+

SELECT x FROM a UNION SELECT x FROM b;
+------+
| x    |
+------+
| foo  |
| bar  |
| baz  |
+------+

Vai haitko takaa jotain aivan muuta?

Triton [11.06.2009 10:58:37]

#

En tarkoittanut ihan tuota... Täytynee selittää paremmin. Eli siis taulu rakenne on tällänen:

taulu: menu
+----+---------------+
| id | category_name |
+----+---------------+
| 1  | Kirjailijat   |
| 2  | Ohjaajat      |
+----+---------------+

taulu: tiedot
+----+------------+-------------+
| id | nimi       | category_id |
+----+------------+-------------+
| 1  | Remes      | 1           |
| 2  | Paasilinna | 1           |
| 3  | Hitchcock  | 2           |
+----+------------+-------------+

Haen ne tiedot siis tällä hetkellä
seuraavasti: SELECT category_name, nimi FROM menu, tiedot WHERE category_id = menu.id

Siinä vaiheessa kun tulostan tiedot while-rakenteella, niin ne tulostuvat:

Kirjailijat:
Remes

Kirjailijat:
Paasilinna

Ohjaajat:
Hitchcock

Haluaisin tulostaa saman
kategorian nimen vain kerran:

Kirjailijat:
Remes
Paasilinna

Ohjaaja:
Hitchcock

Eli jospa nyt selkeni...

Metabolix [11.06.2009 11:00:48]

#

Lisää hakuun ORDER BY category_id tms, ja tarkista tulostusvaiheessa, oliko edellisen tulostetun asian kategoria sama.

Merri [11.06.2009 11:37:19]

#

Vaihtoehtoisesti voit luoda arrayn, jossa kategorian nimi toimii päätason elementtinää, esim.:

$tiedot = array();

for($i = 0, $maxi = $lähdemäärä; $i < $maxi; $i++) {
    $tiedot[ $lähde[$i]['category_name'] ][] = $lähde[$i]['nimi'];
}

Tämä lähinnä tekee tulostusvaiheen vähän luettavammaksi (kai, mielipideasia lienee).

Triton [11.06.2009 11:55:26]

#

Ongelma ratkaistu, kiitos avusta!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta