array van database gegevens
Code (php)
1
2
3
4
5
6
2
3
4
5
6
| id | linknaam | link | pagina | kolom | categorie |
| 1 | site 1 | http:// 1.nl/ | jan | 1 | zooi 1 |
| 2 | site 2 | http:// 2.nl/ | jan | 1 | zooi 1 |
| 3 | site 4 | http:// 5.nl/ | jan | 1 | zooi 2 |
| 4 | site 19 | http:// 6.nl/ | jan | 1 | zooi 2 |
| 1 | site 1 | http:// 1.nl/ | jan | 1 | zooi 1 |
| 2 | site 2 | http:// 2.nl/ | jan | 1 | zooi 1 |
| 3 | site 4 | http:// 5.nl/ | jan | 1 | zooi 2 |
| 4 | site 19 | http:// 6.nl/ | jan | 1 | zooi 2 |
Nu wil ik daar zo’n soort array uit hebben:
1
--Zooi 1
---- site 1, http://www.site1.nl/
---- site 2, http://www.site2.nl/
--zooi2
---- site 4, http://5.nl/
---- site 19, http://6.nl/
oftwel:
kolom
--categorie
----linknaam, link
SELECT linknaam, link, kolom, categorie FROM tabel WHERE pagina = jan
Maar hoe moet ik dan verder gaan?
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$query = mysql_query("SELECT * FROM table") or die("error");
while($r = mysql_fetch_array($query)){
echo $r['column_naam'] . "<br>\n";
echo $r['column_naam2'] . "<br>\n";
//enzovoort
}
?>
$query = mysql_query("SELECT * FROM table") or die("error");
while($r = mysql_fetch_array($query)){
echo $r['column_naam'] . "<br>\n";
echo $r['column_naam2'] . "<br>\n";
//enzovoort
}
?>
Categorie:
id
parentId
name
Waarbij zooi1 en zooi2 een parentId 1 krijgen. Id 1 bevat de 'hoofdcategorie'. Op het moment dat je deze categorie selecteerd, kan je dus automatisch meerdere categorien gebruiken.
Wat je nu doet is eigenlijk de categorie bij de link zelf zetten, wat dus redundantie oplevert.
Dat is exact wat ik dacht, en meestal doe in dit soort situaties, gewoon een `categorie` tabel, en in de 'andere' tabel een `categorie_id` maken, die gekoppeld is aan `categorie`.`id` zo kun je veel makkelijker alle gegevens uit een bepaalde categorie halen!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
--
-- Tabel structuur voor tabel `categorie`
--
CREATE TABLE categorie (
id int(5) NOT NULL auto_increment,
categorie varchar(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel `links`
--
CREATE TABLE links (
id int(11) NOT NULL auto_increment,
linknaam text NOT NULL,
link text NOT NULL,
pagina text NOT NULL,
kolom int(2) NOT NULL,
categorie_id int(10) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
-- Tabel structuur voor tabel `categorie`
--
CREATE TABLE categorie (
id int(5) NOT NULL auto_increment,
categorie varchar(50) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel `links`
--
CREATE TABLE links (
id int(11) NOT NULL auto_increment,
linknaam text NOT NULL,
link text NOT NULL,
pagina text NOT NULL,
kolom int(2) NOT NULL,
categorie_id int(10) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Zo dus,
2 tabellen, 1 met de categorieën en 1 met de links.
En hoe krijg ik dan HIER de array uit die ik wil?
@andries: wat jij zegt doet hij al. Alleen ondersteund z'n datamodel op het moment geen subcategorieen.
Gewijzigd op 01/01/1970 01:00:00 door Pim Vernooij
Je kan ze nu toch prima in een array zetten?
Code (php)
volgens mij moet het zo wel lukken ?
Gewijzigd op 01/01/1970 01:00:00 door Pim Vernooij
Alleen moet er nu ook nog de kolom voorkomen.
Dank jullie wel allemaal
while($link = mysql_fetch_assoc($res ))
{
$linkArray[$link['kolom']][$link['categorie_id']][] = $link;
}
In dit geval komt er een foreignkey op categorie_id int(10) met het id uit de tabel categorie. Wil je dan een categorie verwijderen, dan zul je eerst de bijbehorende links moeten verwijderen of moeten koppelen aan een andere categorie. Anders mislukt de DELETE-query van deze categorie. Hierbij ga ik er even van uit dat iedere link is gekoppeld aan 1 categorie en dat je CASCADE gebruikt bij een UPDATE en een DELETE. Zie verder de MySQL-handleiding