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

}
}
?>
Ik heb die c. ervoor gezet en nu is dit het resultaat:

Test
Trouwens op de vervolgpagina hoeft hij niet te sorteren op cat_naam omdat alle kopjes daar hetzelfde zijn maar eigenlijk wel op link_naam.

Maar die linken zijn hele stukken code in de database, dus met <a href=></a> of javascript dus dat moet weer op een andere manier.
<?php
//Laat de categorie naam zien boven in de tabel
$sql = "
SELECT c.cat_id, c.cat_naam, l.link_url
FROM winkel_categorie AS c, winkel_linken AS l
WHERE cat_id = " . $_GET['cat_id'] . "
AND c.cat_id = l.cat_id
ORDER BY cat_naam
";
$res = mysql_query($sql) or die ("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
$teller = 0;
$list_completed = false;
while ($row = mysql_fetch_assoc ($res)) {
$teller++;// teller werd niet opgehoogd, misschien moet die nog verplaatsen
if ($teller % 12 == 0) {
echo '<ul>';
echo '<li class="kopje">' . $row['cat_naam'] . '</li>' . ENTER ;
}
echo '<li class="link">-' . $row['link_url'] . '</li>' . ENTER;
$list_completed = false;
if ($teller % 12 == 11) {
echo '<li class="leesmeer"><a href="http://www.winkeltop10.nl"; target="_parent">Terug</a></li>' . ENTER;
echo '</ul>';
$list_completed = true;
}
}
if (!$list_completed) {
echo '<li class="leesmeer"><a href="http://www.winkeltop10.nl"; target="_parent">Terug</a></li>' . ENTER;
echo '</ul>';
}
?>

Zo zou het beter moeten gaan.
Elsy schreef op 16.09.2006 15:38
Ik heb die c. ervoor gezet en nu is dit het resultaat:

Test

Okee dus geen foutmeldingen meer. Hoe nu verder?
@Jan

Nu wil ik graag 4 kolommen naast elkaar met daarin 10 linken.
En als het kan ook nog gesorteerd op alfabet.
Jan Koehoorn schreef op 16.09.2006 15:45
[quote=Elsy schreef op 16.09.2006 15:38]Ik heb die c. ervoor gezet en nu is dit het resultaat:

Test

Okee dus geen foutmeldingen meer. Hoe nu verder?[/quote]
Inderdaad geen foutmelding meer, maar niet 10 items in een <ul> lijstje, maar elke keer eentje.. zie mijn vorige post, variabele $teller werd nog niet opgehoogd, daar maar eens mee beginnen.. (zie wederom mijn vorige post)

Elsy schreef op 16.09.2006 15:42
Trouwens op de vervolgpagina hoeft hij niet te sorteren op cat_naam omdat alle kopjes daar hetzelfde zijn maar eigenlijk wel op link_naam.

Maar die linken zijn hele stukken code in de database, dus met <a href=></a> of javascript dus dat moet weer op een andere manier.


Waarom zet je ze dan zo in je database? Kan je niet beter op deze manier in je DB zetten?

link_naam, affiliate_id, zone_id, link_url (alleen http://www.pagina.nl?id)
Waarbij link_url alleen de juiste link bevat..
In je code doe je dan elke keer je javascript, want voor zover ik zie zijn die steeds hetzelfde, zonde om in je database te zetten.

Op die manier kan je normaal sorteren, en hoef je niet in elke URL je javascript te zetten, maar die kan je laten genereren.
Elsy schreef op 16.09.2006 15:47
@Jan

Nu wil ik graag 4 kolommen naast elkaar met daarin 10 linken.
En als het kan ook nog gesorteerd op alfabet.

Okee. Heb je die teller al opgehoogd nu?
Nee, ik had Robert even gemist, sorry, doe in nu
Nee, ziet er niet goed uit.
Robert schreef op 16.09.2006 15:50

Inderdaad geen foutmelding meer, maar niet 10 items in een <ul> lijstje, maar elke keer eentje.. zie mijn vorige post, variabele $teller werd nog niet opgehoogd, daar maar eens mee beginnen.. (zie wederom mijn vorige post)

Klopt die was ik vergeten. Hij moet echter pas aan het einde van de while opgehoogd worden, dus zo:
<?php
//Laat de categorie naam zien boven in de tabel
$sql = "
SELECT c.cat_id, c.cat_naam, l.link_url
FROM winkel_categorie AS c, winkel_linken AS l
WHERE cat_id = " . $_GET['cat_id'] . "
AND c.cat_id = l.cat_id
ORDER BY cat_naam
";
$res = mysql_query($sql) or die ("Sorry maar ik kan de naam van de categorie niet weergeven, probeer het later opnieuw.");
$teller = 0;
$list_completed = false;
while ($row = mysql_fetch_assoc ($res)) {
if ($teller % 12 == 0) {
echo '<ul>';
echo '<li class="kopje">' . $row['cat_naam'] . '</li>' . ENTER ;
}
echo '<li class="link">-' . $row['link_url'] . '</li>' . ENTER;
$list_completed = false;
if ($teller % 12 == 11) {
echo '<li class="leesmeer"><a href="http://www.winkeltop10.nl"; target="_parent">Terug</a></li>' . ENTER;
echo '</ul>';
$list_completed = true;
}
$teller++;
}
if (!$list_completed) {
echo '<li class="leesmeer"><a href="http://www.winkeltop10.nl"; target="_parent">Terug</a></li>' . ENTER;
echo '</ul>';
}
?>

Reageren