Ik ben het weer helemaal kwijt en kom er niet uit.

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';


<?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.'&nbsp;<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.'&nbsp;-></font></a>';

echo '</td>';
echo '</tr>';


echo '</table>';

}
}
?>
[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]
Robert schreef op 13.09.2006 21:28
[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.
Wat je daaraan kan doen (10 per tabel) is het volgende:

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 :)
Dit lukt me helaas niet.

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:

<?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;

}
?>
Wie heeft er zin en tijd om mij hier mee te helpen?

De testpagina is nu dit geworden:
Testpagina

EDIT: Je kunt het beste testen met Kleding Kinderen
<?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;
}
}
}
}
?>

Zoiets? (ik heb het overigens niet getest, en gewoon uit mijn hoofd gedaan)
Nee het werkt niet.

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.
Weet je het zeker Elsy, ik zie wel een 2e tabel, met daarin een paar links.
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:
<?php
elseif($i == mysql_num_rows($resultLink)){
//wanneer het totaal aantal items is bereikt
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;
}
?>
[/edit]
Nou, ja zeg, dat is vreemd, nu doet hij het wel!
Ik weet al wat het was.
In de code stond nog bij terug: index2.php

Ik werk nu gewoon met index.php :)

Reageren