Avatar billede lsskaarup Nybegynder
07. december 2005 - 16:31 Der er 15 kommentarer og
1 løsning

Oprette en genvej

Jeg ved hvordan man opretter en mappe, men kan man få php til at lave genveje. Jeg skal bruge det til et system, hvor der skal være en stifinder, som viser indholdet an en mappe. Heri skal der altså være en genvej til en anden mappe, men den skal gerne blive lavet automatisk. Derudover er den dynatisk, da det er forskelle stier genvejene referer til.
Avatar billede jakobdo Ekspert
07. december 2005 - 18:00 #1
Hvis du har adgang til boksen, skal du nok arbejde med symlinks!
Avatar billede lsskaarup Nybegynder
07. december 2005 - 20:52 #2
Okay, efter php.net så er den ikke implementeret på Windows platformen, hvilket betyder hvad? At idet vi kører det på windows at vi så ikke kan bruge den.
Avatar billede jakobdo Ekspert
07. december 2005 - 20:57 #3
Jeg tror ikke du kan lave genveje som du kender i windows!
Enten skal du kode en funktion som så kan gøre det evt via noget database!
Avatar billede lsskaarup Nybegynder
12. december 2005 - 14:22 #4
Hmm, er det noget du kan hjælpe med?
Avatar billede jakobdo Ekspert
12. december 2005 - 15:04 #5
Helst ikke!
Det er bedre du selv laver det! :o)
Avatar billede showsource Seniormester
12. december 2005 - 15:37 #6
Avatar billede lsskaarup Nybegynder
13. december 2005 - 08:35 #7
Tjaa, det første link kan jeg måske godt bruge, idet jeg skal have lavet et pænere layout af "stifinderen". Lige nu er det kun simpel tekst og der ser ikke ud til at være forskel på filer og mapper.

Men jeg vil godt kunne lave en genvej, præcist som en genvej i Windows fungerer.

Grunden til dette, er at det er til et internt salgs/ordre system. Her baserer ordren sig på et tilbud, og hver har henholdsvis deres egen mappestruktur. Derfor kunne brugerne godt tænke sig, at der fra ordrens mappestruktur var en genvej til tilbudet, som ligger til grund for ordren.
Avatar billede showsource Seniormester
13. december 2005 - 10:53 #8
Et lidt andet layout, hvor der bruges <dl> og <dd> i stedet for <div>
http://users.showsource.dk/install.php

Men det du skal, er vel at få listet alle ordre-mapper, og ved klik på mappe få vist indholdet, i stil med linket herover?
Evt. så kombineret med det "box_click" script?
Avatar billede lsskaarup Nybegynder
13. december 2005 - 13:34 #9
Opbygningen er som følger, numrene er henholdsvis tilbudets og ordrens nummer:

Tilbud (mappe)
  - 100-199 (mappe)
  - 200-299 (mappe)
      - 200 (mappe)
      - 201 (mappe)
        diverse filer herunder

Ordre (mappe)
  - 10-19 (mappe)
  - 20-29 (mappe)
      - 20 (mappe)
      - 21 (mappe)
        diverse filer herunder

Tilbud- og Ordre-mapperne er sideordnet, så Ordre ligger ikke i Tilbud eller omvendt, men altså i hver deres.

Selve systemet er sådan opbygget, at der er nogle oversigtssider, hvorfra brugeren kan åbne de enkelte tilbud/ordre, som så komme i en popup. I denne popup er der så en stifinder, som viser indholdet af kun den ordre, f.eks. ordre 21. Findes mappen ikke, så bliver den automatisk oprettet, med mkdir().

Her er ønsket så.

Hvis ordre 21 er lavet ud fra tilbud 13, så vil brugerne gerne have at der automatisk bliver lavet en genvej i ordre-mappen "21" som peger på tilbuds-mappen "13".

Kan det lade sig gøre og hvis ja, hvordan?

box_click som du referer til, hvad er det?

Selve layouttet er jeg lige glad med nu, det kan jeg tilpasse senere.
Avatar billede showsource Seniormester
13. december 2005 - 13:48 #10
well, alt kan jo lade sig gøre med PHP :O)
Men er ikke helt med på hvordan dirstruktur er opbygget.
Men for at få vist undermapper til et dir, kan scriptet jo godt bruges.
Hvis du vil lave "krydsende mapper" er det nok noget sql du skal bruge. Hvilket også vil være langt hurtigere end at bruge dir() funktionen.

box_click er javascript.

Et eks. på en kombi:

<html>
<head>
<title>Javascript test</title>
<script type="text/javascript">

// javascript found at exp.dk

function get_id ($id) {
    if (document.all && document.getElementById) {
    return document.all($id);
    } else if (!document.all && document.getElementById) {
    return document.getElementById($id);
    } else {
    return false;
    }
}

function box_click ($id) {
    if (($bcontent = get_id($id))) {
    $bcontent = $bcontent.style;
    } else {
    return false;
    }

    if ($bcontent.visibility == 'hidden') {
    $bcontent.display = '';
    $bcontent.visibility = 'visible';
    } else {
    $bcontent.display = 'none';
    $bcontent.visibility = 'hidden';
    }
}

</script>
</head>
<body>

<?php
// detox hjalp mig med dette script! :O)
// http://www.eksperten.dk/spm/599757

// Nedenstående fem variabler er de eneste som skal rettes
$start_path = $_SERVER["DOCUMENT_ROOT"]; // Sti til roden af domain. Skal evt. ændres hvis f.ex. ens side ligger som subdomæne
$read_start = "/handler"; // Fra roden af domain, og frem til dir som skal læses igennem. Kan evt. blot være "/" Bruges ved link til filer
$start_dir = ""; // Navn på dir som skal læses igennem. Kan være tom

$dir_image = "/images/mappe.gif"; // "url-sti" til billede af en mappe. Kan evt. findes på http://showsource.users.whitehat.dk/images/mappe.gif
$indryk = 30; // Hvor meget indrykning pr. subdir der skal være



$mappe = $start_path . $read_start . $start_dir;
$liste = array($mappe);

function visFiler($dir) {
$out = array();
    $d = dir($dir);
    while (false !== ($file = $d->read())) {
        if (is_file($dir ."/". $file)) {
            $out[] = $file;
        }     
    }
    $d->close();

return $out;
}

function visMapper($dir, &$out) {
    $d = dir($dir);
    while (false !== ($file = $d->read())) {
        if ($file != '.' && $file != '..') {
            if (is_dir($dir ."/". $file)) {
                $out[] = $dir ."/". $file;
                visMapper($dir ."/". $file, $out);
            }     
        }
    }
    $d->close();
}

if(is_dir($mappe)) {

visMapper($mappe, $liste);
sort($liste);

$ialt = 0;

    foreach ($liste as $sti) {

    $ialt++;

    $visdir = explode($start_path . $read_start, $sti);
    $linksti = $read_start . $visdir[1];
    $dirantal = explode("/", $visdir[1]);
    $t = (count($dirantal)*$indryk);
    $dirstien = (!empty($visdir[1]) ? $visdir[1] : "/");

    $filer = visFiler($sti);

    echo "<div style=\"margin-left: ". $t ."px; padding: 4px;\"><span style=\"cursor: hand;\" onclick=\"box_click('dir_". $ialt ."');\"><img src=\"". $dir_image ."\" align=\"top\" border=\"0\"> <b>". $dirstien .":</b> <small>(". count($filer) ." filer)</small></span>\r\n";

    echo "<div style=\"margin-left: ". $indryk ."px; position: relative; visibility: hidden; display:none;\" id=\"dir_". $ialt ."\">\r\n";

        if (count($filer) !=0) {
        sort($filer);

            foreach ($filer as $fil) { //
            echo "<a href=\"http://". $_SERVER["HTTP_HOST"] . $linksti ."/". $fil ."\">". $fil ."</a><br />\r\n";
            }

        }else{
        echo"Ingen filer";
        }

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

}else{

echo"Fejl i stiangivelse!";

    if(is_dir($start_path)) {
    echo"<br />\r\n\$start_path er korrekt.";

        if(is_dir($start_path . $read_start)) {
        echo"<br />\r\n\$read_start er korrekt.";
        echo"<br />\r\n<b>\$start_dir</b> findes IKKE!.";
        }else{
        echo"<br />\r\n<b>\$read_start</b> er forkert defineret.";
        }

    }else{
    echo"<br />\r\n<b>\$start_path</b> er forkert defineret.";
    }
}

clearstatcache();
?>
</body>
</html>
Avatar billede showsource Seniormester
13. december 2005 - 13:51 #11
$read_start er så det dir hvor de to mapper tilbud og ordrer ligger.

$start_dir kan så defineres som
$start_dir = "/". $_GET["dir"];
eller hvordan du nu finder ud af hvilket mappe der er klikket på til popup

Og sidst, så kan det jo laves så underdir først vises ved klik på mappe
Avatar billede lsskaarup Nybegynder
13. december 2005 - 14:11 #12
Ved ikke om vi snakker forbi hinanden, eller om det bare er mig som har misforstået noget.

Uden at have gennemlæst alt, så vil jeg da mene, at din kode laver selve stifinderen, og den er jeg endnu ikke interesseret i. Har en grim en, men den virker efter brugernes ønsker.

I denne mappe
//server/salgssystem/ordre/20-29/21/
skal jeg have en genvej til
//server/salgssystem/tilbud/10-29/13/

Det skal bare oprettes automatisk af systemet, så brugeren slipper for det.
Avatar billede showsource Seniormester
13. december 2005 - 14:21 #13
Hvis du fra
//server/salgssystem/ordre/20-29/21/
vil have adgang til
//server/salgssystem/tilbud/10-29/13/

skal du nok over i noget database.

Hvis du blot vil ha' adgang til
//server/salgssystem/tilbud/10-29/
kan du godt bruge dir()
Avatar billede showsource Seniormester
13. december 2005 - 14:22 #14
hov, ved jeg sgutte du, lav det med database, for at finde ud hvilke dirs som hører sammen!

Scriptet vist her, er jo blot subdirs og filer
Avatar billede lsskaarup Nybegynder
13. december 2005 - 14:51 #15
Ja, jeg er med på at det skal være noget database-værk, kan i teorien vist trække enten tilbudnr ud fra ordre eller omvendt. Selve stien kan jeg tage fra administratordelen, da den bliver defineret der.

Og jeg kan selvføgelig godt lave et hyperlink til mappen, men hvis nu jeg gerne vil have en genvej til at ligge i strukturen også, så man efterfølgende f.eks. kan gå via "Denne computer" ned til genvejen.

Hvordan skal det så gøres?

Jeg ved ikke om det er noget jeg har drømt engang, men jeg synes der foresvæver jeg noget med genvej.lnk ?-)
Avatar billede lsskaarup Nybegynder
12. januar 2006 - 12:03 #16
Ingen der kan hjælpe fuldt ud?
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