09. januar 2006 - 22:24Der er
27 kommentarer og 1 løsning
Sti til linket i kat.php
Halløj eksperter
Jeg har efter en masser knuder og mas måttet opgive at få lavet en ordentlig sti fremviser til min kategorifil på vivaa.dk.
Meningen er at den skal vise stien til kategorien fx:
Her er du: EDB & Internet - Computerspil - Onlinespil
Hvordan får man lavet det?
Det største problem i dette er at en kategori godt kan have flere placeringer fx ligger kategorien internetreklame både under kategorien internet og kategorien reklame.
Min stifremviser skal bare vise den vej brugeren har valgt. Det må jo kunne gøres med nogle Sessioner, men min hjerne vil ikk rigtig udtænke det :)
jo men den kalder jo kun et id på den pågældne menu.. Den skal jo så at sige slæbe undermenuerne med sig, så de bliver kaldt frem løbende jo længere man bevæger sig ind på siden.
Men når du nu har lavet det anderledes, så må du jo lave en funktion, der slår "moderen" til kategorien op, tilføjer den til en streng, og kalder sig selv med dennes id, indtil der ikke er flere "mødre". :-)
Tjaa.. men problemet er at en kategori godt kan have flere "mothers". Som jeg skrev i spørgsmålet: fx ligger kategorien internetreklame både under kategorien internet og kategorien reklame.
Dvs. at både Internet og Reklame er mothers for kategorien Internetreklame..
De såkaldte mothers kaldes ud med navnene: ref, ref2 og ref3.
Jamen, hvordan skal scriptet så vide, hvilken mother den skal bruge? Altså nok kan man meget med scripting, men logikken bag bliver altså nødt til at være på plads, før man kan scripte det... Hvordan skal systemet vide, ad hvilken vej man er kommet ned i den pågældende kategori?
Jaa. det er jo problemet i mit spørgsmål.. Men ok, måske kan det gøres på din måde uden at virke forvirrende, så jeg prøver det lige af, så snart jeg har tid.
Jow, men min måde virker jo kun så længe der kun er 1 mother til hver kategori... Det vil jo ikke løse dit problem. Men du kunne måske overveje at medføre stien ned til den valgte kategori i en querystring for sig selv? Det tror jeg, jeg ville vælge som løsning, hvis jeg var dig.. Altså f.eks:
kat.php?id=15&dir=70-55-20
Som ville fortælle at brugeren gik via kategori 70, 55 og 20 ned i kategori 15. Så er det bare at explode() denne streng ved "-", udskifte numre med navne fra databasen og eventuelle links, og vupti så er løsningen der. Ulempen ved dette vil være, at brugeren ved at ændre et enkelt tal i din querystring har mulighed for at lave rod i din "stifinder".. Men så kan du selvfølgeligt lige lave chekcs af hvert tal.. :-)
Jo, det kan jeg da. Altså, vi går ud fra at du har en url, der hedder kat.php?id=15&dir=70-55-20 oppe i adresselinien, ikke?
//Så henter du query'en: $dir = $_GET["dir"];
//Eksploderer variablen til et array... $dir = explode("-",$dir);
//Laver en counter og nulstiller den... $c = 0;
//Kører løkke mens c er mindre end antallet af poster i array... while($c < count($dir)) { //Laeg nummeret til variablen sti (indsæt evt. databasekald her) $sti .= $dir[$c]." - "; //Adder counteren med 1... $c++; }
Og så er det bare at udskrive variablen sti...
Du kan jo så i array'et kald hver post i array'et op i databasen, og lægge navn og link til variablen sti, i stedet for blot nummeret...
Hvordan får man egentlig div postet i adresse linien rigtigt?
har stillet koden op sådan:
<? //Så henter du query'en: $dir = $_GET["dir"];
//Eksploderer variablen til et array... $dir = explode("-",$dir);
//Laver en counter og nulstiller den... $c = 0;
//Kører løkke mens c er mindre end antallet af poster i array... while($c < count($dir)) { //Laeg nummeret til variablen sti (indsæt evt. databasekald her) $select_sti = mysql_query("SELECT kat, id FROM kategori WHERE id = '$c'") or die(mysql_error()); $sti .= $dir[$c]." - "; //Adder counteren med 1... $c++; } echo "$sti";
?>
Og koden til kategorierne er:
<?
# sql der henter kategorierne $result = mysql_query("SELECT * FROM kategori WHERE kategori.ref = '".$_GET["id"]."' OR kategori.ref2 = '".$_GET["id"]."'OR kategori.ref3 = '".$_GET["id"]."' order by kat") or die(mysql_error());
echo "<table>"; $colums = 3; # Antal kategorier pr række $i = 0; while ($r = mysql_fetch_array($result)) { if ($i % $colums == 0 && $i != 0) { echo "</tr>\n"; }
Hehe.. Det var sådan set ikk planen du skulle lave det hele, men var lige lidt lost i det kodning der :)
Den driller en anelse.. Kan ikke rigtig få den til at udskrive alle de tidligere kategorier.. Den udskriver kun kategorien før..
Fx går jeg ind under 3D-Grafik udskriver den kun Computergrafik, altså den går kun et skridt tilbage. Den skulle jo gerne skrive EDB & Internet - Computergrafik - 3D-Grafik, når man befinder sig der.
Den kode jeg har nu ser sådan ud:
<? //Så henter du query'en: $dir = $_GET["dir"];
//Eksploderer variablen til et array... $dir = explode("-",$dir);
//Laver en counter og nulstiller den... $c = 0;
//Kører løkke mens c er mindre end antallet af poster i array... while($c < count($dir)) { //Laeg nummeret til variablen sti (indsæt evt. databasekald her) $select_path = mysql_query("SELECT kat, id FROM kategori WHERE id = '".$dir[$c]."'") or die(mysql_error()); $path = mysql_fetch_array($select_path); $sti = $path['kat']; $sti .= " - "; //Adder counteren med 1... $c++; } echo "$sti";
Det ser jo ud til at virke fint på vivaa.dk. Du skal bare lige huske at få dir-parametrene med på dine links i stien også.. Ellers kan den kun bruges 1 gang. ;-)
Halløj.. hvad er det der skal vendes om, som du skrev?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.