[php/mysql] met één query hele pagina opbouwen

Pagina: 1
Acties:

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 17:19

Pelle

🚴‍♂️

Topicstarter
In MySQL heb ik twee tabellen:
code:
1
2
3
4
5
6
7
8
9
10
11
+-------------------------+
| tableLinks          |
+----+-------+------+-----+
| id | titel | link | cat |
+----+-------+------+-----+

+-----------------------------+
| tableCats          |
+----+------+-------+---------+
| id | naam | kolom | positie |
+----+------+-------+---------+

Oftewel, een tabel met linkjes en een tabel met categorieën. Het idee is à la startpagina; er zijn 3 kolommen en in elke kolom zijn er een paar categorieën met een aantal linkjes.
Nu wil ik met één query alles uit de db trekken, en daarna presenteren op die pagina.
Met deze query
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
$qAlleLinks = mysql_query("SELECT
                              l.id,
                              l.titel,
                              l.link,
                              c.naam,
                              c.kolom,
                              c.positie
                           FROM
                              tableLinks l,
                              tableCats c
                           WHERE
                              l.cat = c.id
                           ORDER BY
                              c.kolom,
                              c.positie ");
?>

..krijg je een resultaat als dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
+----+-----------+----------------------+---------------+-------+---------+
| id | Titel     | Link          | Naam     | kolom | positie |
+----+-----------+----------------------+---------------+-------+---------+
| 1  | Altavista | http://www.av.com    | Searchengines | 1     | 1  |
| 2  | Yahoo     | http://www.yahoo.com | Searchengines | 1     | 1  |
| 3  | Ilse | http://www.ilse.nl   | Searchengines | 1     | 1   |
| 4  | Blaat     | http://www.blaat.nu  | Onzin    | 1     | 2   |
| 5  | Melp | http://www.melp.com  | Onzin     | 1     | 2   |
| 6  | Huuu | http://www.huu.zuut  | Hoi         | 2     | 1     |
| 7  | Huuu2     | http://www.hu2.zuut  | Hoi        | 2     | 1     |
| 8  | Grrr | http://www.grrrrrrr  | JaNee     | 3     | 1   |
+----+-----------+----------------------+---------------+-------+---------+

En nu wil ik dus met deze ene query de hele pagina gaan vullen. De 3 kolommen zijn 3 cellen uit een tabel, de links staan per categorie in een <div>-je en de naam van de categorie komt bovenaan die <div>.
Ik heb me er suf aan gepiekerd, maar ik kan geen manier verzinnen om door de resultaten heen te lopen en ze te printen in de juiste volgorde en op de juiste positie.

Als eerste moet er dus de naam van de eerste categorie uit de eerste komen te staan, met daaronder de bijbehorende linkjes. Vervolgens kolom 1, categorie 2 enz.

  • vandijk
  • Registratie: Oktober 1999
  • Laatst online: 23:06
je kan er gewoon doorheenlopen het een while ofzo.. voor dat je de lus ingaat zet je een aantal variabelen voor kolom en naam.
in de lus check je :
- of de kolom gelijk is aan de kolom in de regel zo niet > sluit oude kolom,sluit sectie, open nieuwe kolom en sectie
- of de naam gelijk is aan de naam in de regel zo niet > sluit oude sectie, open nieuwe sectie
Daarna print je de link
tot slot stop je van de huidige regel de kolom en naam in de variabele en ga je verder met je loopje

Canon cameras en lenzen. Elinchrom flitsers, Lowepro en Pelican tassen/koffers. Polestar 2


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

pseudo code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
geef begin tabel.
kolumnr=1
open eerste cel.
loepje van 1e resultaat tot laatste.
is kolom groter dan kolumnr dan 
  sluit cel
  open nieuwe cel
einde is.
druk resultaat af.
einde loepje.
sluit cel af
sluit tabel af

Easy as it comes.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 17:19

Pelle

🚴‍♂️

Topicstarter
Op woensdag 19 september 2001 09:55 schreef vandijk het volgende:
je kan er gewoon doorheenlopen het een while ofzo..
Done. Ik heb op positie gechecked, en niet op naam aangezien dat iets minder problemen opleverde. Ik moest er nog even een check inbouwen die keek of het de eerste keer was dat er door die loop werd heengelopen. Zo ja, dan moet de eerste categorie-naam ook geprint worden.
Hij werkt nu perfect. Zelf zat ik veel te moeilijk te denken; alle resultaten doorlopen en in multi-dimensionale arrays zetten, en daarna met een foreach de kolommen, categorien en links doorlopen.

Bedankt dus voor de snelle reactie!
en dusty ook natuurlijk ;)