Thoraxxx Skrevet 9. juni 2007 Skrevet 9. juni 2007 Jeg ønsker å lage et sidekart som lister opp alle kategoriene og underkategoriene på en nettside. Nettsiden bruker database og kolonnene er som følger: - "Type" Navn på kategorien. - "Under" Navn på hovedkategorien, underkategorien ligger under. Her er koden jeg bruker for å hente ut kategoriene, men hvordan skal jeg få til å hente ut underkategoriene så de havner under den korrekte hovedkategorien? Klikk for å se/fjerne innholdet nedenfor <?phpinclude_once('config.php'); extract($config); // Connects to your Database mysql_connect("", "", "") or die(mysql_error()); mysql_select_db("") or die(mysql_error()); //Remove mode removes data for a given ID if ( $mode=="remove") { mysql_query ("DELETE FROM {$prefix}cms1 where id=$id"); } $data = mysql_query("SELECT * FROM {$prefix}cms1 WHERE length(under)=0 ORDER BY id ASC") or die(mysql_error()); Print "<table border=0 cellpadding=3>"; Print "<tr><th width=250></th></tr>"; while($info = mysql_fetch_array( $data )) { Print "<td>".$info['type'] . "</td></td></tr> "; } Print "</table><p>"; Print "<a href=endre_rekke.php title=\"Endre rekkefølge\">Endre rekkefølge</a> "; ?> Eks: Kontakt - Meg - Familien min Om meg - Interesser - Venner
nree Skrevet 9. juni 2007 Skrevet 9. juni 2007 (endret) Du kjører en select på "overkategorier" inni while løkken legger du en select på "underkategorier".. f.eks: $resultat = mysql_query("select * from hkategorier"); while($rad = mysql_fetch_array($resultat)) { echo $rad['navn']; $overkat = $rad['id']; $resultat2 = mysql_query("select * from ukategorier where overkat='$overkat'"); while($rad2 = mysql_fetch_array($resultat2)) { echo("- ".$rad2['navn']."<br />"); } } I denne spørringen har jeg tatt utgangspunkt i at du har disse tabellene: - hkategorier (Kontakt og Om meg) Felt: id, navn - ukategorier (Meg, Familien min, Interesser, Venner) Felt: id, navn (Her brukes id for å knytte artikler til kategori ol.) Håper du fikk noe ut av dette Endret 9. juni 2007 av goggen90
Stian Jacobsen Skrevet 9. juni 2007 Skrevet 9. juni 2007 Om du ønsker å lage et side kart, så ikke bruk table, dette er ikke særlig SEO/F Bruk unsorted list <ul> <li title="Min hjemmeside">www.minside.no <ul> <li title="Hovedsiden">index.php</li> <li title="bildegalleri">galleri.php</li> </ul> </li> </ul>
Runar0 Skrevet 9. juni 2007 Skrevet 9. juni 2007 Personleg så brukar eg ein funksjon som fungerar slik: Henter alle sider frå databasen. I ei while løkke går eg igjennom alle resultata og plasserar dei i ein array etter dette formatet: [overside][] => [informasjon om sida] Og så til slutt så har eg ein rekursiv funksjon som looper alle topnivå sidene i $sider[0] og vist sida har underkategorier $sider[sideid] så blir funksjonen kalla på nytt men denne gangen looper den $sider[sideid]. Og slik fortsette det. $sider kan da se slik ut etter steg to: $sider = array( [0] => array( [0] => array(informasjon om den første topnivå sida), [1] => array(informasjon om den andre topnivå sida) ), [10] => array( [0] => array(informasjon om den første undersida til sida med id 10) ) ); Sjølve funksjonen er det ingen vist i at eg viser her ettersom at den baserar seg på eit sjølvskreve klasse bibliotek men eg håper lista over kan hjelpe deg vidare
grimjoey Skrevet 9. juni 2007 Skrevet 9. juni 2007 (endret) $sql = "select * from {$prefix}cms1 where length(under)=0;"; $res = mysql_query($sql); $hovedKat = array() while($row = mysql_fetch_assoc($res)) { array_push($hovedKat, $row); } mysql_free_result($res); foreach($hovedKat as $kat) { echo('<b>'.$kat."</b><br />\n"); $sql = "select type from {$prefix}cms1 where under = '$kat';"; $res = mysql_query($sql); while($row = mysql_fetch_assoc($res)) { echo('- '.$row['type']."<br />\n"); } echo("<br />\n"); } mysql_free_result($res); du får endre htmlen til table eller list Endret 9. juni 2007 av grimjoey
Thoraxxx Skrevet 9. juni 2007 Forfatter Skrevet 9. juni 2007 Tusen takk for alle svar! Prøver de ut nå! Tror det er noen skrivefeil i det siste scriptet.
Crowly Skrevet 9. juni 2007 Skrevet 9. juni 2007 (endret) Her en en løsning med kun ett database oppslag. Tabell felter: hoved -> id, hovedkat underkat -> id, ukat, hid (hid = hoved.id) PHP <?php $sql="SELECT t1.ukat, t2.hovedkat FROM underkat t1, hoved t2 WHERE t1.hid = t2.id ORDER BY t1.hid, t1.id"; $result=mysql_query($sql); $kat=''; $i=0; while ($row=mysql_fetch_assoc($result)) { //sjekk for ny hovedkategori if ($kat!=$row['hovedkat']) { if ($i==0) { echo "<ul>n"; $i=1; } else echo "</ul>n"; //lagrer hovedkatergori for å ha noe å sjekke mot over $kat=$row['hovedkat']; echo "<li>".$row['hovedkat']."</li>n<ul>n"; } //skriv ut underkategoriene echo "<li>".$row['ukat']."</li>n"; } echo "</ul>n</ul>n"; ?> Endret 9. juni 2007 av crowly
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå