Avatar billede numb92 Nybegynder
02. februar 2011 - 17:48 Der er 8 kommentarer og
1 løsning

Omdanne streng til array, sætte links på streng-delene, og sætte sammen til array igen.

Jeg vil have en adresse eks:(rod/billeder/storebilleder) delt op i de enkelte elementer adskilt af /. Herefter vil jeg tage hvert enkel del, og lave den til et link således:

rod          -> <a href="rod">rod</a>
billeder      -> <a href="rod/billeder">billeder</a>
storebilleder -> <a href="rod/billeder/storebilleder">storebilleder</a>

Indtil videre ser det sådan ud:

///////////////Create breadcrumbs/////////////
$str = $_GET["folder"];
$ray = (explode("/", $str));
$count = count($ray);

for ($i = 0; $i <= $count-1; $i++) {
if($i==0){
    $ray[$i] = $ray[$i];
}else{
    $link    =    $ray[$i-1];
$ray[$i] = "<a class='mainwhite' href='../$link/$ray[$i]'>". $ray[$i] ."</a>";
}
}
$str = "../";
$str .= implode("/",$ray);


Problemet er at jeg får et underligt output, og jeg kan ikke lige gennemskue hvad der skal ændres, da jeg allerede har prøvet mig frem med forskellige løsninger.
02. februar 2011 - 18:26 #1
Jeg tror du goer det for indviklet.  Jeg proevede med nedenstaaende kode (hvor jeg i stedet for $_GET['folder'] brugte strengen 'rod/billeder/storebilleder').  Du kan se resultatet i dette link: http://christianjorgensen.be/number92.php  Var det saadan du ville have det?

Her er koden jeg brugte:

<?
$str = "rod/billeder/storebilleder";
$ray = explode("/", $str);
$count = count($ray);
for($i = 0; $i < $count; $i++)
{
  $r = $ray[$i];
  //echo "$r <br>";
  $ray[$i] = "$r -> <a class='mainwhite' href= '../$r'>$r</a><br>";
  echo $ray[$i];
}
?>
Avatar billede numb92 Nybegynder
02. februar 2011 - 19:06 #2
Nej, det var ikke sådan jeg ville have det. Jeg ville have det sådan:

rod -> <a href='rod'>rod</a>
billeder -> <a href='rod/billeder'>billeder</a>
storebilleder -> <a href='rod/billeder/storebilleder'>rod</a>

Altså at den for hver gang den løber for løkken igennem, bortset fra 1. gang, lægger det forhenværende link til det nuværende.

1. gang den løber for løkken igennem, bliver linket korrekt 'rod'
2. gang skal linket blive "link fra 1. gennemløb" + "nuværende link"
3. gang skal linket blive "link fra 2. gennemløb" + "nuværende link"
Avatar billede showsource Seniormester
02. februar 2011 - 19:13 #3
Et andet ex. hvis det er url som skal vises:


function navigation($opdel=" :: ") {

$path = explode("/", $_SERVER["PHP_SELF"]); 
$dirs = count($path); 
$home = "/"; 

echo "<div class=\"nav_menu\"><small>Navigation: <a href=\"". $home ."\">Forsiden</a>"; 

    for ($i = 1; $i < $dirs; $i++) {

        if(is_dir($_SERVER["DOCUMENT_ROOT"] . $home . $path[$i])) { 
        $home = $home . $path[$i] ."/"; 
        echo $opdel ."<a href=\"". $home ."\">". $path[$i] ."</a>"; 

        }else{ 

            if(basename($_SERVER["PHP_SELF"]) != "index.php") {
            echo $opdel ."<a href=\"". $path[$i] ."\">". $path[$i] ."</a>";
            }

            if(!empty($_SERVER["QUERY_STRING"])) { 
            echo " ? ". htmlentities(urldecode($_SERVER["QUERY_STRING"])); 
            }

        } 

    }

echo"</small></div>\r\n";

}
Avatar billede numb92 Nybegynder
02. februar 2011 - 19:22 #4
Det var ikke helt det jeg mente, men jeg har modificeret scriptet så det klarer opgaven, mange tak for hjælpen
02. februar 2011 - 19:50 #5
Saa spoergsmaalet er 'loest' - eller omdefineret.  Soerger du for at lukke spoergsmaalet?  Jeg kan se at du er ny, saa lad mig forklare (undskyld hvis det er til overflod:) Man lukker et spoergsmaal ved at acceptere et svar, et indlaeg markeret med gult, og man accepterer det ved at saette et 'flueben' i den lille firkant og derefter ved at klikke i feltet 'Accepter svar og afgiv points'.  Du har allerede oprettet et svar, #4, saa venligst accepter det.  Derved faar du ogsaa de 30 points tilbage.
Avatar billede numb92 Nybegynder
02. februar 2011 - 19:59 #6
Ja det kan jeg forstå på det hele, men vil det ikke være en smule "snyd" hvis jeg accepterede mit eget svar som "svar", når det nu var 'showsource' der kom med den egentlige løsning?
02. februar 2011 - 20:02 #7
Det forandrer sagen (det havde jeg ikke forstaaet.)  Saa skal du bede showsource at oprette et svar som du saa accepterer hvorved du lukker spoergsmaalet og afgiver de lovede points til ham.
Avatar billede showsource Seniormester
02. februar 2011 - 20:53 #8
Der kommer et svar her.

Det er iøvrigt god skik at poste den løsning man finder frem til, hvis ikke den findes blandt kommentar/svar. ("modificeret scriptet")
Avatar billede numb92 Nybegynder
02. februar 2011 - 20:59 #9
Den modificerede funktion ser således ud:

function navigation($opdel="/") {
$path = explode("/", $_GET["folder"]); 
$dirs = count($path);
$home = "";
    for ($i = 0; $i < $dirs; $i++) {
        $home = $home . $path[$i] ."/";
        echo $opdel ."<a class='mainwhite' style='margin:0px;' href=\"filemanager.php?view=$_GET[view]&folder=". $home ."\">". $path[$i] ."</a>";
    }
    }
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester