Welke linken horen in welke tabel?
Ik wil simpele tabellen maken met een kop erboven en daaronder de linken die bij die kop horen.
Hoe maak ik mijn query zo dat de juiste linken in de juiste tabel terecht komen?
testpagina
#
# Table structure for table `linken`
#
CREATE TABLE linken (
link_id int(5) NOT NULL auto_increment,
link_naam varchar(255) NOT NULL default '',
link_url varchar(255) NOT NULL default '',
cat_id int(5) NOT NULL default '0',
PRIMARY KEY (link_id)
) TYPE=MyISAM;
#
# Table structure for table `categorie`
#
CREATE TABLE categorie (
cat_id int(5) NOT NULL auto_increment,
cat_naam varchar(255) NOT NULL default '',
volgende_pagina varchar(255) NOT NULL default '',
PRIMARY KEY (cat_id)
) TYPE=MyISAM COMMENT='Categorie namen';
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
//Laat zien hoeveel linken er in die categorie zitten:
$teller = "SELECT COUNT(link_id) AS teller FROM linken ";
$resultaatTeller = mysql_query($teller) or die ("Sorry maar kan de teller niet weergeven.");
$laatZienTeller = mysql_fetch_assoc($resultaatTeller);
//Laat de categorie naam zien boven in de tabel
$queryNaam = 'SELECT * FROM categorie ORDER BY cat_naam';
$resultNaam = mysql_query($queryNaam) or die ("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
while ($rowNaam = mysql_fetch_object($resultNaam))
{
echo '<table width="185" class="tabelborder" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td class="kopje">'.$rowNaam->cat_naam.' <div class="teller"> ' . $laatZienTeller['teller'].'</div>' ;
echo '</td>';
echo '</tr>'.ENTER;
//Laat de linken zien
$queryLink = 'SELECT * FROM linken ORDER BY RAND()LIMIT 0,3';
$resultLink = mysql_query($queryLink) or die ("Sorry maar ik kan de linken van de categorie niet weergeven, probeer het later opnieuw.");
while ($rowLink = mysql_fetch_object($resultLink))
{
echo '<tr>';
echo '<td>-'. $rowLink->link_url.'</a>';
echo '</td>';
echo '</tr>'.ENTER;
}
echo '<tr>';
echo '<td class="meer">';
echo '<a href="index2.php?categorie=' . $rowNaam->cat_naam . '&pagina='.$rowNaam->volgende_pagina.'"><font class="meer">Meer in de categorie '.$rowNaam->cat_naam.' -></font></a>';
echo '</td>';
echo '</tr>';
echo '</table>';
}
}
?>
//Laat zien hoeveel linken er in die categorie zitten:
$teller = "SELECT COUNT(link_id) AS teller FROM linken ";
$resultaatTeller = mysql_query($teller) or die ("Sorry maar kan de teller niet weergeven.");
$laatZienTeller = mysql_fetch_assoc($resultaatTeller);
//Laat de categorie naam zien boven in de tabel
$queryNaam = 'SELECT * FROM categorie ORDER BY cat_naam';
$resultNaam = mysql_query($queryNaam) or die ("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
while ($rowNaam = mysql_fetch_object($resultNaam))
{
echo '<table width="185" class="tabelborder" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td class="kopje">'.$rowNaam->cat_naam.' <div class="teller"> ' . $laatZienTeller['teller'].'</div>' ;
echo '</td>';
echo '</tr>'.ENTER;
//Laat de linken zien
$queryLink = 'SELECT * FROM linken ORDER BY RAND()LIMIT 0,3';
$resultLink = mysql_query($queryLink) or die ("Sorry maar ik kan de linken van de categorie niet weergeven, probeer het later opnieuw.");
while ($rowLink = mysql_fetch_object($resultLink))
{
echo '<tr>';
echo '<td>-'. $rowLink->link_url.'</a>';
echo '</td>';
echo '</tr>'.ENTER;
}
echo '<tr>';
echo '<td class="meer">';
echo '<a href="index2.php?categorie=' . $rowNaam->cat_naam . '&pagina='.$rowNaam->volgende_pagina.'"><font class="meer">Meer in de categorie '.$rowNaam->cat_naam.' -></font></a>';
echo '</td>';
echo '</tr>';
echo '</table>';
}
}
?>
kan je even schematisch je doel weergeven
zoiets, volgens mij is het namelijk puur je tabelopbouw
--------------------
|-link |
|-link |
|-link |
--------------------
|meer -> |
Eigenlijk moet het een zelfgemaakte startpagina worden met allemaal linken.
Je moet onderaan iedere tabel kunnen klikken op een link zodat je nog meer linken in die categorie te zien krijgt op een aparte pagina. Maar dat komt nog wel.
Eerst maar eens de juiste linken in de juiste tabel.
Hopelijk is dit wat je bedoelt.
Wie heeft er even tijd om te kijken?
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$query = "SELECT * FROM linken LEFT JOIN categorie ON linken.cat_id = categorie.cat_id
WHERE cat_id = "$_GET['cat_id']" ORDER BY cat_id";
?>
$query = "SELECT * FROM linken LEFT JOIN categorie ON linken.cat_id = categorie.cat_id
WHERE cat_id = "$_GET['cat_id']" ORDER BY cat_id";
?>
Ik weet het niet zker maar zoiets.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$queryLink = "
SELECT *
FROM linken
WHERE cat_id = '". $rowNaam->cat_id ."'
LIMIT 0,3";
?>
$queryLink = "
SELECT *
FROM linken
WHERE cat_id = '". $rowNaam->cat_id ."'
LIMIT 0,3";
?>
En dan liever in plaats van * alleen de velden selecteren die je ook daadwerkelijk gebruikt...
En bedankt voor de uitleg erbij. Het ziet er zoals gewoonlijk heel logisch uit maar kom er maar weer eens op....
Het begin is er nu.
Nu nog even puzzelen aan delink onder iedere tabel om alle linken te tonen op een vervolg pagina....wordt vervolgd....
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php
echo '<table align="center"><tr>';
$kolommen = 4;
//Laat de categorie naam zien boven in de tabel
$queryNaam = 'SELECT * FROM categorie ORDER BY cat_naam';
$resultNaam = mysql_query($queryNaam) or die ("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
while ($rowNaam = mysql_fetch_object($resultNaam))
{
//Laat zien hoeveel linken er in die categorie zitten:
$teller = 'SELECT COUNT(link_id) AS teller FROM linken WHERE cat_id = '. $rowNaam->cat_id .'';
$resultaatTeller = mysql_query($teller) or die ("Sorry maar kan de teller niet weergeven.");
$laatZienTeller = mysql_fetch_assoc($resultaatTeller);
echo '<td valign="top"><table width="185" align="left" class="tabelborder" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td class="kopje">'.$rowNaam->cat_naam.' <div class="teller"> ' . $laatZienTeller['teller'].'</div>' ;
echo '</td>';
echo '</tr>'.ENTER;
//Laat de linken zien
$queryLink = 'SELECT cat_id,link_url FROM linken WHERE cat_id = '. $rowNaam->cat_id .' ORDER BY RAND()LIMIT 0,3';
$resultLink = mysql_query($queryLink) or die ("Sorry maar ik kan de linken van de categorie niet weergeven, probeer het later opnieuw.");
while ($rowLink = mysql_fetch_object($resultLink))
{
echo '<tr>';
echo '<td class="link">-'. $rowLink->link_url.'';
echo '</td>';
echo '</tr>'.ENTER;
}
echo '<tr>';
echo '<td class="meer">';
echo '<a href="index2.php?categorie=' . $rowNaam->cat_naam . '&pagina='.$rowNaam->volgende_pagina.'"><font class="meer">Meer in de categorie '.$rowNaam->cat_naam.' -></font></a>';
echo '</td>';
echo '</tr>';
echo '</table>'.ENTER;
$counter++;
if($counter==$kolommen)
{
echo '</td></tr></table><table align="center"><tr>';
$counter = 0;
}
}
}
echo '</td></tr></table>'.ENTER;
?>
echo '<table align="center"><tr>';
$kolommen = 4;
//Laat de categorie naam zien boven in de tabel
$queryNaam = 'SELECT * FROM categorie ORDER BY cat_naam';
$resultNaam = mysql_query($queryNaam) or die ("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
while ($rowNaam = mysql_fetch_object($resultNaam))
{
//Laat zien hoeveel linken er in die categorie zitten:
$teller = 'SELECT COUNT(link_id) AS teller FROM linken WHERE cat_id = '. $rowNaam->cat_id .'';
$resultaatTeller = mysql_query($teller) or die ("Sorry maar kan de teller niet weergeven.");
$laatZienTeller = mysql_fetch_assoc($resultaatTeller);
echo '<td valign="top"><table width="185" align="left" class="tabelborder" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td class="kopje">'.$rowNaam->cat_naam.' <div class="teller"> ' . $laatZienTeller['teller'].'</div>' ;
echo '</td>';
echo '</tr>'.ENTER;
//Laat de linken zien
$queryLink = 'SELECT cat_id,link_url FROM linken WHERE cat_id = '. $rowNaam->cat_id .' ORDER BY RAND()LIMIT 0,3';
$resultLink = mysql_query($queryLink) or die ("Sorry maar ik kan de linken van de categorie niet weergeven, probeer het later opnieuw.");
while ($rowLink = mysql_fetch_object($resultLink))
{
echo '<tr>';
echo '<td class="link">-'. $rowLink->link_url.'';
echo '</td>';
echo '</tr>'.ENTER;
}
echo '<tr>';
echo '<td class="meer">';
echo '<a href="index2.php?categorie=' . $rowNaam->cat_naam . '&pagina='.$rowNaam->volgende_pagina.'"><font class="meer">Meer in de categorie '.$rowNaam->cat_naam.' -></font></a>';
echo '</td>';
echo '</tr>';
echo '</table>'.ENTER;
$counter++;
if($counter==$kolommen)
{
echo '</td></tr></table><table align="center"><tr>';
$counter = 0;
}
}
}
echo '</td></tr></table>'.ENTER;
?>
wel 500 complimenten voor de layouts die jij maakt zeg!
Die zijn echt gaaf!
[/beetje off]
[off topic]Thanks ! ga er helemaal van blozen [/off topic]
Elsy:
[off topic]Thanks ! ga er helemaal van blozen [/off topic]
Staat je best goed...;)
inderdaad, ziet er goed uit elsy, geen opmerkingen over ;)
Wat overigens wel mooi zou zijn, is: als er niet meer dan 3 links zijn, dat er ook geen link is naar de pagina met "meer links over dat onderwerp". Dan kunnen daarover ook geen onduidelijkheden ontstaan.
Verder helemaal top dus!
[/net zo'n beetje off]
Robert:
[net zo'n beetje off]
inderdaad, ziet er goed uit elsy, geen opmerkingen over ;)
Wat overigens wel mooi zou zijn, is: als er niet meer dan 3 links zijn, dat er ook geen link is naar de pagina met "meer links over dat onderwerp". Dan kunnen daarover ook geen onduidelijkheden ontstaan.
Verder helemaal top dus!
[/net zo'n beetje off]
inderdaad, ziet er goed uit elsy, geen opmerkingen over ;)
Wat overigens wel mooi zou zijn, is: als er niet meer dan 3 links zijn, dat er ook geen link is naar de pagina met "meer links over dat onderwerp". Dan kunnen daarover ook geen onduidelijkheden ontstaan.
Verder helemaal top dus!
[/net zo'n beetje off]
Ja, dat moet allemaal nog komen maar ik ben hier net mee begonnen. Er moeten ook meer dan 3 linken zichtbaar worden maar dit is nog een test.
Ik moet nu proberen om, als je dus op die bewuste link klikt, een pagina te openen met boven in alle kopjes bv. Kleding Kinderen en daar de linken onder. Dat is al wel gelukt, je ziet nu 1 kolom.
Maar nu wil ik nog graag dat als daar dan weer meer dan bv 10 linken in staan dat hij er automatisch een tabel naast zet.
Tja, dat is weer ietsje moeilijker volgens mij.
Je laat 2 tellers meelopen.. bij de 1 op 10 sluit je de tabel en open je een nieuwe, en bij de 3 sluit je de tabel, begin je op de nieuwe regel, en doe je hetzelfde opnieuw :)
Je kunt op de eerste pagina even testen met de kolom: Kleding Kinderen. Als je daar onderin op de link klikt voor nog meer linken kom je op de vervolgpagina terecht.
Daar moeten automatisch maar (nu even als voorbeeld) 10 linken in verschijnen en dan een nieuwe tabel ernaast.
Ik heb je aanwijzingen geprobeerd op te volgen maar het lukt niet.
Dit is de code voor die tabel op de vervolgpagina:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
//Laat de categorie naam zien boven in de tabel
$queryNaam = 'SELECT * FROM categorie WHERE cat_id = '.$_GET['cat_id'].' ORDER BY cat_naam';
$resultNaam = mysql_query($queryNaam) or die ("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
while ($rowNaam = mysql_fetch_object($resultNaam))
{
echo '<td valign="top">';
//Dit is de code voor een tabel
echo '<table width="185" align="left" class="tabelborder" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td class="kopje">'.$rowNaam->cat_naam.'</div>' ;
echo '</td>';
echo '</tr>'.ENTER;
//Laat de linken zien
$queryLink = 'SELECT cat_id,link_url FROM linken WHERE cat_id = '. $rowNaam->cat_id .' ORDER BY link_url LIMIT 0,10';
$resultLink = mysql_query($queryLink) or die ("Sorry maar ik kan de linken van de categorie niet weergeven, probeer het later opnieuw.");
if(mysql_num_rows($resultLink) > 0) // Er is iets gevonden
{
$i = 0;
while($i < 10 AND $rowLink = mysql_fetch_object($resultLink))
{
$i++;
echo '<tr>';
echo '<td class="link">-'. $rowLink->link_url.'';
echo '</td>';
echo '</tr>'.ENTER;
}
}
echo '<tr>';
echo '<td class="meer">';
echo '<a href="http://www.winkeltop10.nl/index2.php" target="_parent"><font class="meer">Terug</font></a>';
echo '</td>';
echo '</tr>';
}
echo '</table>'.ENTER;
}
?>
//Laat de categorie naam zien boven in de tabel
$queryNaam = 'SELECT * FROM categorie WHERE cat_id = '.$_GET['cat_id'].' ORDER BY cat_naam';
$resultNaam = mysql_query($queryNaam) or die ("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
while ($rowNaam = mysql_fetch_object($resultNaam))
{
echo '<td valign="top">';
//Dit is de code voor een tabel
echo '<table width="185" align="left" class="tabelborder" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td class="kopje">'.$rowNaam->cat_naam.'</div>' ;
echo '</td>';
echo '</tr>'.ENTER;
//Laat de linken zien
$queryLink = 'SELECT cat_id,link_url FROM linken WHERE cat_id = '. $rowNaam->cat_id .' ORDER BY link_url LIMIT 0,10';
$resultLink = mysql_query($queryLink) or die ("Sorry maar ik kan de linken van de categorie niet weergeven, probeer het later opnieuw.");
if(mysql_num_rows($resultLink) > 0) // Er is iets gevonden
{
$i = 0;
while($i < 10 AND $rowLink = mysql_fetch_object($resultLink))
{
$i++;
echo '<tr>';
echo '<td class="link">-'. $rowLink->link_url.'';
echo '</td>';
echo '</tr>'.ENTER;
}
}
echo '<tr>';
echo '<td class="meer">';
echo '<a href="http://www.winkeltop10.nl/index2.php" target="_parent"><font class="meer">Terug</font></a>';
echo '</td>';
echo '</tr>';
}
echo '</table>'.ENTER;
}
?>
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
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
$i = 0;
while($rowLink = mysql_fetch_object($resultLink))
{
$i++;
echo '<tr>';
echo '<td class="link">-'. $rowLink->link_url.'';
echo '</td>';
echo '</tr>'.ENTER;
if($i % 10 == 0 && $i < mysql_num_rows($resultLink)){
//wanneer er 10 items in de tabel staan, en het totaal aantal items nog niet is bereikt
//Link "Terug" weergeven.
echo '<tr>';
echo '<td class="meer">';
echo '<a href="http://www.winkeltop10.nl/index2.php" target="_parent"><font class="meer">Terug</font></a>';
echo '</td>';
echo '</tr>';
// tabel sluiten, en nieuwe maken
echo '</table><table width="185" align="left" class="tabelborder" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td class="kopje">'.$rowNaam->cat_naam.'</div>' ;
echo '</td>';
echo '</tr>'.ENTER;
}
elseif($i == mysql_num_rows($resultLink)){
//wanneer het totaal aantal items is bereikt
echo '</table>'.ENTER;
}
}
}
}
?>
$i = 0;
while($rowLink = mysql_fetch_object($resultLink))
{
$i++;
echo '<tr>';
echo '<td class="link">-'. $rowLink->link_url.'';
echo '</td>';
echo '</tr>'.ENTER;
if($i % 10 == 0 && $i < mysql_num_rows($resultLink)){
//wanneer er 10 items in de tabel staan, en het totaal aantal items nog niet is bereikt
//Link "Terug" weergeven.
echo '<tr>';
echo '<td class="meer">';
echo '<a href="http://www.winkeltop10.nl/index2.php" target="_parent"><font class="meer">Terug</font></a>';
echo '</td>';
echo '</tr>';
// tabel sluiten, en nieuwe maken
echo '</table><table width="185" align="left" class="tabelborder" cellspacing="0" cellpadding="0">';
echo '<tr>';
echo '<td class="kopje">'.$rowNaam->cat_naam.'</div>' ;
echo '</td>';
echo '</tr>'.ENTER;
}
elseif($i == mysql_num_rows($resultLink)){
//wanneer het totaal aantal items is bereikt
echo '</table>'.ENTER;
}
}
}
}
?>
Zoiets? (ik heb het overigens niet getest, en gewoon uit mijn hoofd gedaan)
Trouwens op deze vervolgpagina mag er gewoon overal de link "terug" onderin de kolom staan hoor.
Alleen op de eerste index.php moet het wel op de manier als jij hebt gedaan.
Ik heb 10 even aangepast naar 8 omdat er nog niet zoveel linken in de database zitten. Maar hij maakt geen nieuwe tabel aan.
Heb je wel de while lus zelf ook aangepast, zoals in mijn voorbeeld?
Edit:
Nu zet die in elke, behalve de laatste tabel de link: terug, om het ook in de laatste te zetten verander dan de code in deze elseif functie naar deze:
Nu zet die in elke, behalve de laatste tabel de link: terug, om het ook in de laatste te zetten verander dan de code in deze elseif functie naar deze:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Nou, ja zeg, dat is vreemd, nu doet hij het wel!
In de code stond nog bij terug: index2.php
Ik werk nu gewoon met index.php :)