11 berichten aan het bekijken - 1 tot 11 (van in totaal 11)
  • Q:
    Bijdrager
    vikking

    PHP+mySQL: links pagina, laat maar 1 categorie zien

    Dus ik heb een links pagina gebouwd met PHP en mySQL, maar hij laat maar 1 categorie zien…:
    [code:1:144ff2f7ed]<?php
    require "header.php";
    echo "<h1>Links</h1>";
    echo "<table>";
    $result = mysql_query("SELECT category FROM links GROUP BY category");
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $category = $row[’category’];
    echo "<h2>$category</h2>";
    $result = mysql_query("SELECT id, link, comment FROM links WHERE category ="$category"");
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $link = $row[’link’];
    $linkdisplay = str_replace("http://", "", $link);
    $comment = $row[’comment’];
    echo "<tr><td><p><a href="$link" target="_blank">$linkdisplay</a></p></td><td><p>$comment</p></td></tr>";
    }
    }
    echo "</table>";
    require "footer.php";
    ?>[/code:1:144ff2f7ed]
    Wie vind de fout?

    Bijdrager
    JZ

    tenminste 2 fouten:

    ‘gebouwt’ (gebouwd) en ‘te fout’ (de fout)

    Bijdrager
    vikking

    Whoops inderdaad, heb het even aangepast:P

    Bijdrager
    klaus

    Je gebruikt dezelfde variabelen 2 keer.

    $result en $row overschrijf je opnieuw in je 2de while lus.

    [code:1:bab5cae7ad]
    <?php
    require "header.php";
    echo "<h1>Links</h1>";
    echo "<table>";
    $result = mysql_query("SELECT category FROM links GROUP BY category");
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $category = $row[’category’];
    echo "<h2>$category</h2>";
    $result2 = mysql_query("SELECT id, link, comment FROM links WHERE category ="$category"");
    while ($row2 = mysql_fetch_array($result2, MYSQL_ASSOC)) {
    $link = $row2[’link’];
    $linkdisplay = str_replace("http://", "", $link);
    $comment = $row2[’comment’];
    echo "<tr><td><p><a href="$link" target="_blank">$linkdisplay</a></p></td><td><p>$comment</p></td></tr>";
    }
    }
    echo "</table>";
    require "footer.php";
    ?>[/code:1:bab5cae7ad]

    Maar los daarvan is het niet erg zinnig om dit in 2 afzonderlijke queries te gaan doen, dat kan je best in 1 en dezelfde query.

    Bijdrager
    vikking
    ”klaus”

    Maar los daarvan is het niet erg zinnig om dit in 2 afzonderlijke queries te gaan doen, dat kan je best in 1 en dezelfde query.

    Kan je me zeggen hoe alsublieft? (Ik ben vrij nieuw in het PHP+mySQL gebeuren)

    Btw: Nu geeft hij onder elkaar de categorie├źn en dan onder elkaar de links…

    Bijdrager
    klaus

    Wat wil je juist gaan doen dan?

    dit?

    Categorie 1
    – link 1
    – linke 2

    Categorie 2
    – link 3
    – link 4

    Bijdrager
    vikking
    ”klaus”

    Wat wil je juist gaan doen dan?

    dit?

    Categorie 1
    – link 1
    – linke 2

    Categorie 2
    – link 3
    – link 4

    Jep:)

    Bijdrager
    klaus

    [code:1:060b626232]
    <?php
    require "header.php";
    echo "<h1>Links</h1>";
    $result = mysql_query("SELECT id,link,comment,category FROM links order by category");
    $sPreviousCategory = "";

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    if($sPreviousCategory != $row[’category’]){
    echo "<h2>" . $row[’category’] . "</h2>";
    $sPreviousCategory = $row[’category’];
    }

    echo "- " . "<a href=’" . $row[’link’] . "’>" . $row[’link’] . "</a><br/>";
    echo "<p>" . $row[’comment’] . "</p>";
    }
    require "footer.php";
    ?>[/code:1:060b626232]

    Probeer dit eens, kan zijn dat er nog een syntaxfout in zit hoor..

    Bijdrager
    vikking

    Mooi, alleen begrijp ik er niet veel van, wil je het uitleggen alstublieft :innocent:

    Bijdrager
    klaus

    Concreet haalt die code alle links uit je database, geordend per category.
    [code:1:f97c4fd392]$result = mysql_query("SELECT id,link,comment,category FROM links order by category"); [/code:1:f97c4fd392]
    Daarna overloop je elke rij met gegevens, en schrijf ik elke link weg naar het scherm.

    [code:1:f97c4fd392]echo "- " . "<a href=’" . $row[’link’] . "’>" . $row[’link’] . "</a><br/>";[/code:1:f97c4fd392]

    Dan heb je alle links, maar nog niet gegroepeerd per categorie natuurlijk.
    Dit doe ik met een hulpvariabele, die sPreviousCategory. Daar sla ik de vorige categorie in op. Zolang die dus per link hetzelfde is als de vorige, hoef ik niet de categorie opnieuw uit te schrijven.

    Als dat wel het geval is, dan schrijf ik de naam uit, en zet ik de sPreviousCategory terug op de recentste categorie, en zo kan het opnieuw beginnen

    [code:1:f97c4fd392]
    if($sPreviousCategory != $row[’category’]){
    echo "<h2>" . $row[’category’] . "</h2>";
    $sPreviousCategory = $row[’category’];
    }
    [/code:1:f97c4fd392]

    Bijdrager
    vikking

    Oke bedankt:)

11 berichten aan het bekijken - 1 tot 11 (van in totaal 11)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.