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

}
}
?>
Kun je dat ook voor de index.php pagina maken.
Ik bedoel dat hij als een kolom vol is pas laat zien dat je naar een volgende pagina kunt gaan?



<?php
echo '<table align="center"><tr>';
$kolommen = 4;

//Laat de categorie naam zien boven in de tabel
$queryNaam = 'SELECT * FROM winkel_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 winkel_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.'&nbsp;<div class="teller"> ' . $laatZienTeller['teller'].'</div>' ;
echo '</td>';
echo '</tr>'.ENTER;
//Laat de linken zien
$queryLink = 'SELECT cat_id,link_url FROM winkel_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="index.php?cat_id='.$rowNaam->cat_id.'"><font class="meer">Meer in de categorie '.$rowNaam->cat_naam.'&nbsp;-></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;
}

?>
Lees ook mijn vorige post nog even.. (ik heb hem aangepast) als je de daarin genoemde elseif functie aanpast, dan krijg je ook in de laatste tabel de "terug" link.

En in de while lus moet je wel die $i < 10 AND weghalen:
[edit]DEZE WHILE:
while($i < 10 AND $rowLink = mysql_fetch_object($resultLink))
[/edit]

Waarom zal je misschien denken: omdat die anders maar 10 resultaten weergeeft, en er zouden volgens de teller 14 resultaten moeten zijn.
En dat voor de laatste vraag van je zou zoiets moeten worden:

<?php

$resultLink = mysql_query($queryLink) or die ("Sorry maar ik kan de linken van de categorie niet weergeven, probeer het later opnieuw.");
$j = 0;
while ($rowLink = mysql_fetch_object($resultLink))
{
$j++;
echo '<tr>';
echo '<td class="link">-'. $rowLink->link_url.'';
echo '</td>';
echo '</tr>'.ENTER;
if($j == 3){
echo '<tr>';
echo '<td class="meer">';
echo '<a href="index.php?cat_id='.$rowNaam->cat_id.'"><font class="meer">Meer in de categorie '.$rowNaam->cat_naam.'&nbsp;-></font></a>';
echo '</td>';
echo '</tr>';
}

}



echo '</table>'.ENTER;

?>
@Elsy

Het gaat nog niet helemaal goed zie ik? (op de 2e linkpagina, dus met de complete lijst met links gaat het wel goed blijkt) Op de hoofdpagina met de groepen, en 3 links en dan de "meer" link gaat er nog iets niet goed.. :S
Ik weet zo nog niet wat dat is..
Ik zal wel iets niet goed hebben met de haakjes?

Dit is de code nu:

Ik heb op de eerste pagina de linken op 10 gezet.


<?php
echo '<table align="center"><tr>';
$kolommen = 4;

//Laat de categorie naam zien boven in de tabel
$queryNaam = 'SELECT * FROM winkel_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 winkel_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.'&nbsp;<div class="teller"> ' . $laatZienTeller['teller'].'</div>' ;
echo '</td>';
echo '</tr>'.ENTER;
//Laat de linken zien
$queryLink = 'SELECT cat_id,link_url FROM winkel_linken WHERE cat_id = '. $rowNaam->cat_id .' ORDER BY RAND()';
$resultLink = mysql_query($queryLink) or die ("Sorry maar ik kan de linken van de categorie niet weergeven, probeer het later opnieuw.");
$j = 0;
while ($rowLink = mysql_fetch_object($resultLink))
{
    $j++;
    echo '<tr>';
    echo '<td class="link">-'. $rowLink->link_url.'';
    echo '</td>';
    echo '</tr>'.ENTER;
    if($j == 10){        
        echo '<tr>';
        echo '<td class="meer">';
        echo '<a href="index.php?cat_id='.$rowNaam->cat_id.'"><font class="meer">Meer in de categorie '.$rowNaam->cat_naam.'&nbsp;-></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;
}

?>
$queryLink = 'SELECT cat_id,link_url FROM winkel_linken WHERE cat_id = '. $rowNaam->cat_id .' ORDER BY RAND()';

Zet daar eens LIMIT 0,10 achter, dan zou het probleem moeten zijn opgelost :)
Ha, da's leuk! Die stond op 3 en had ik net weggehaald.

Nu werkt het weer.

Ga nu met kids eten.
In ieder geval super bedankt. Je bent hier echt goed in.
Je hoort nog van me......

Elsy
Daar ben ik weer.

Testpagina

Ik heb de linken van 10 even op 2 gezet zodat ik kon zien wat hij zou doen als er meer dan 4 kolommen naast elkaar komen te staan. Hij zet ze er dus gewoon naast wat niet de bedoeling is.

Nu heb ik op de index pagina ook al zoiets gedaan met $kolommen= 4 maar ik weet niet of dat in dit stukje code er ook nog bij te zetten is. En waar dan wel.


<?php
//Laat de categorie naam zien boven in de tabel
$queryNaam = 'SELECT * FROM winkel_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 winkel_linken WHERE cat_id = '. $rowNaam->cat_id .' ';
$resultLink = mysql_query($queryLink) or die ("Sorry maar ik kan de linken van de categorie niet weergeven, probeer het later opnieuw.");
$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 % 2 == 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" 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 '<tr>';
                echo '<td class="meer">';
                echo '<a href="http://www.winkeltop10.nl" target="_parent"><font class="meer">Terug</font></a>';
                echo '</td>';
                echo '</tr>';
                echo '</table>'.ENTER;
                }
                  }
    }
}
?>
Denk dat het dan zo moet, maar weet het niet zeker, wederom niet getest.

<?php
//Laat de categorie naam zien boven in de tabel
$queryNaam = 'SELECT * FROM winkel_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.");
$kolommen = 4;
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 winkel_linken WHERE cat_id = '. $rowNaam->cat_id .' ';
$resultLink = mysql_query($queryLink) or die ("Sorry maar ik kan de linken van de categorie niet weergeven, probeer het later opnieuw.");
$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 % 2 == 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"; 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 '<tr>';
echo '<td class="meer">';
echo '<a href="http://www.winkeltop10.nl"; target="_parent"><font class="meer">Terug</font></a>';
echo '</td>';
echo '</tr>';
echo '</table>'.ENTER;
}
if($i % 4 ==0){
echo '</td></tr></table><table align="center"><tr>';
$counter = 0;
}
}
}
}
?>
Ik ben er de hele middag mee bezig geweest maar krijg het niet voor elkaar.
Ik heb nu de code weer terug gezet als hierboven.

Reageren