array van database gegevens

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Newbie

PHP Newbie

17/11/2006 23:42:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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    |
 


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
 
PHP hulp

PHP hulp

19/11/2024 00:36:17
 
Leroy Boerefijn

Leroy Boerefijn

17/11/2006 23:46:00
Quote Anchor link
is dat niet gewoon met zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}
?>
 
Pim Vernooij

Pim Vernooij

17/11/2006 23:54:00
Quote Anchor link
Ik denk dat je je datamodel moet gaan aanpassen...

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.
 
Andries Louw Wolthuizen

Andries Louw Wolthuizen

17/11/2006 23:58:00
Quote Anchor link
@Pim Vernooij:
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!
 
PHP Newbie

PHP Newbie

18/11/2006 00:04:00
Quote Anchor link
dus wat ik nu heb:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
--
-- 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?
 
Pim Vernooij

Pim Vernooij

18/11/2006 00:06:00
Quote Anchor link
Als je in je categorie tabel nou een 'parentId' kolom toevoegd, kan je subcategorien gebruiken. Als je de id's van die subcategorien in als categorie_id in je links kolom zet, kan je die weer herleiden naar je hoofdcategorie.

@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
 
PHP Newbie

PHP Newbie

18/11/2006 00:13:00
Quote Anchor link
Ik snap het niet Pim, waarom subcategorieën?

Edit:

ik heb het hier even wat duidelijker in een PDF je gezet.
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
 
Pim Vernooij

Pim Vernooij

18/11/2006 00:30:00
Quote Anchor link
whoops, ik heb wat verkeerd gelezen...
Je kan ze nu toch prima in een array zetten?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
while( $link = mysql_fetch_assoc( $res ) ) {
    $linkArray[$link['category_id']][] = $link;
}

echo "<pre>";
echo print_r( $linkArray, true );
echo "</pre>";
?>


volgens mij moet het zo wel lukken ?
Gewijzigd op 01/01/1970 01:00:00 door Pim Vernooij
 
PHP Newbie

PHP Newbie

18/11/2006 01:02:00
Quote Anchor link
Klopt bijna helemaal.

Alleen moet er nu ook nog de kolom voorkomen.
 
PHP Newbie

PHP Newbie

18/11/2006 01:06:00
Quote Anchor link
het is gelukt :-)

Dank jullie wel allemaal

while($link = mysql_fetch_assoc($res ))
{
$linkArray[$link['kolom']][$link['categorie_id']][] = $link;
}
 
Frank -

Frank -

18/11/2006 11:06:00
Quote Anchor link
Tip: Gebruik de innoDB-engine van MySQL en niet MyIsam. Met innoDB kun je foreignkey's gebruiken en kun je dus een onderling verband gaan leggen tussen de verschillende tabellen. Met MyIsam is dit onmogelijk.

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.