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

}
}
?>
Elsy schreef op 16.09.2006 15:54
Nee, ziet er niet goed uit.

Het zou wel fijn zijn als je wat specifieker was Elsy.
[edit]
en zie ook mijn vorige post. Teller pas aan het einde van de while lus ophogen.
[/edit]
[edit]
Te laat, ik had al het vermoeden dat het hieraan lag, maar Jan heeft het al toegelicht :)
[/edit]

$teller waarschijnlijk niet op de plek gezet waar Jan hem in gedachte had.. Zo dan?

<?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++;// teller werd niet opgehoogd, misschien moet die nog verplaatsen
}
if (!$list_completed) {
echo '<li class="leesmeer"><a href="http://www.winkeltop10.nl"; target="_parent">Terug</a></li>' . ENTER;
echo '</ul>';
}
?>
ja, ziet er al beter uit :)

EDIT: Ik heb even 10 linken in de tabel gezet.
Er staan nu 2 tabellen onder elkaar.

Is het misschien even verstandig om de linken terug te brengen naar 2 zodat je kunt zien of hij dadelijk 4 tabellen naast elkaar zet?
Nu nog sorteren en de lijsten naast elkaar. Geef even je code EXACT zoals je hem nu hebt Elsy.
Hij wordt waarschijnlijk 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 c.cat_id = " . $_GET['cat_id'] . "
AND c.cat_id = l.cat_id
ORDER BY l.link_url ASC
";
$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>';
}
?>
Elsy schreef op 16.09.2006 15:58
ja, ziet er al beter uit :)

EDIT: Ik heb even 10 linken in de tabel gezet.
Er staan nu 2 tabellen onder elkaar.

Is het misschien even verstandig om de linken terug te brengen naar 2 zodat je kunt zien of hij dadelijk 4 tabellen naast elkaar zet?

Er staan twee lijsten onder elkaar, geen tabellen toch? En terugbrengen naar 2 lijkt me niet zinvol omdat de lijsten pas naast elkaar komen te staan als er meer dan 10 linken zijn. Ik zou er dus eerder een stuk of 40 in gaan zetten.
Dit is mijn code en tevens jouw laatste wijziging.
Ik heb er even 2 linken van gemaakt zodat we straks kunnen zien of het werkt, 4 tabellen naast elkaar.


<?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 c.cat_id = " . $_GET['cat_id'] . "
        AND c.cat_id = l.cat_id
        ORDER BY l.link_url ASC
        ";
    $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 % 2 == 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 % 2 == 1) {
            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>';
    }
?>


ps. sorteren kan niet zomaar want ik heb daar in de database hele javascript of <a href=></a> codes in staan. Dus ik weet ook niet of dit kan.
Jan Koehoorn schreef op 16.09.2006 16:04
[quote=Elsy schreef op 16.09.2006 15:58]ja, ziet er al beter uit :)

EDIT: Ik heb even 10 linken in de tabel gezet.
Er staan nu 2 tabellen onder elkaar.

Is het misschien even verstandig om de linken terug te brengen naar 2 zodat je kunt zien of hij dadelijk 4 tabellen naast elkaar zet?

Er staan twee lijsten onder elkaar, geen tabellen toch? En terugbrengen naar 2 lijkt me niet zinvol omdat de lijsten pas naast elkaar komen te staan als er meer dan 10 linken zijn. Ik zou er dus eerder een stuk of 40 in gaan zetten.[/quote]

Sorry ik haal dat door elkaar.
Ik bedoel lijsten.
Elsy schreef op 16.09.2006 16:06
ps. sorteren kan niet zomaar want ik heb daar in de database hele javascript of <a href=></a> codes in staan. Dus ik weet ook niet of dit kan.

Dat is jammer! Een hele href code opslaan om een link te bewaren zorgt er nu voor dat het erg lastig wordt om er op te sorteren.
De volgende opzet was handiger geweest:

linknaam: Elsy's kinderkleding
linkurl: www.elsyskinderkleding.nl

Dan kon je sorteren op naam en het hele <a = href-gedoe met PHP (of MySQL) in elkaar sleutelen.
Jan Koehoorn schreef op 16.09.2006 16:04
[quote=Elsy schreef op 16.09.2006 15:58]ja, ziet er al beter uit :)

EDIT: Ik heb even 10 linken in de tabel gezet.
Er staan nu 2 tabellen onder elkaar.

Is het misschien even verstandig om de linken terug te brengen naar 2 zodat je kunt zien of hij dadelijk 4 tabellen naast elkaar zet?

Er staan twee lijsten onder elkaar, geen tabellen toch? En terugbrengen naar 2 lijkt me niet zinvol omdat de lijsten pas naast elkaar komen te staan als er meer dan 10 linken zijn. Ik zou er dus eerder een stuk of 40 in gaan zetten.[/quote]

Ze bedoelt met het terugbrengen naar 2, dat er maar 2 links per lijst in komen te staan.. Je hebt nu maar 2 "lijstjes".. (2 x een <ul><li> lijstje) maar dat moeten voor het goed testen meer zijn.. dus vandaar even aangepast naar 2.

Verder Elsy, dit postte ik eerder al (pagina 3):

"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."

Reageren