Avatar billede jampe Nybegynder
18. december 2006 - 19:56 Der er 16 kommentarer

Hjælp til formulering af funktion

Jeg har brug for hjælp til en funktion, jeg skal have ind i en template, men jeg tror, jeg har forkert fat i det:

$tpt = 'tpt/index.tpt';
$html_out = file_get_contents($tpt);

function BuildMenu() {
    if ($handle = opendir($_SERVER['DOCUMENT_ROOT'])) {
              while (false !== ($file = readdir($handle))) {
                  if ($file != "." && $file != ".." && $file != "index.php"  && $file != "img"  && $file != "css"  && $file != "inc"  && $file != "tpt") {
                    '<span class="menuLink"><a href="' . $file . '">' . $file . '</a></span>';
                  }
              }
              closedir($handle);
            }
}

$html_out = str_replace("<!--menu//-->", BuildMenu(), $html_out);
echo $html_out;

pointen er, at jeg skal have den kode, jeg skrev, der laver en liste over nogle mapper til at blive repræsenteret af linien "<!--menu//-->" i en ekstern .tpt-fil..

problemet er bare formuleringen.
Avatar billede mcardle Nybegynder
19. december 2006 - 13:23 #1
Jeg kan ikke helt finde ud af hvad du vil. Du skriver ikke til din temp-fil nu, vil du gerne det?

Du vil gerne skrive din mappestruktur til din tempfil, er det korrekt?
Avatar billede jampe Nybegynder
19. december 2006 - 15:14 #2
Nej, selve funktionen går bare ud på at skrive en liste over, hvilke mapper, der er et bestemt sted.. Med undtagelserne ".", "..", "index.php", "img", "css", "inc" og "tpt".

Men det er mere eller mindre irrelevant, for den virker fint.
Jeg er ude på, at få hele funktionen til at blive repræsenteret af linien "<!--menu//-->" i en .tpt(template)-fil.

Altså:
$html_out = str_replace("<!--menu//-->", *en linie, der repræsenterer funktionen (i mit eksempel BuildMenu)*, $html_out;
Avatar billede olebole Juniormester
19. december 2006 - 15:19 #3
<ole>

Hvad mener du med: "at få hele funktionen til at blive repræsenteret af linien"?

/mvh
</bole>
Avatar billede jampe Nybegynder
19. december 2006 - 15:26 #4
ok, ud i pap:

altså, f.eks kan man repræsentere linien "file_get_contents($tpt)" med linien "$html_out" ved at gøre dette:
$html_out = file_get_contents($tpt);

men man kan ikke gøre dette:
$BuildMenu = *hele den funktion, jeg har skrevet*

kan man så gøre dette?:
function BuildMenu() { *hele funktionen* }

og så efterfølgende skrive:
$html_out = str_replace("<!--menu//-->", BuildMenu(), $html_out);

åbenbart ikke, for det lader ikke til at virke. men hvad kan man så gøre?
..er mit spørgsmål
Avatar billede sw_red_6 Nybegynder
19. december 2006 - 15:28 #5
får du nogen fejl med den der ikke virker?
Avatar billede jampe Nybegynder
19. december 2006 - 15:31 #6
næh, mapperne kommer bare ikke til syne.
det eneste, der står, der hvor mapperne skulle blive oplistet, når jeg kigger i kildekoden er: <!--menu//--> ..
Avatar billede sw_red_6 Nybegynder
19. december 2006 - 15:33 #7
hmm har du prøvet med at sætte echo eller print foran din '<span>...' kode?
Avatar billede jampe Nybegynder
19. december 2006 - 15:44 #8
ja, men så bliver det jo bare sat ind i toppen.
pointen er, at jeg skal kunne bestemme præcis hvor koden sættes ind via en template(.tpt)-fil..
Avatar billede sw_red_6 Nybegynder
19. december 2006 - 15:55 #9
ahh, det skulle kun blive skrevet der hvor der står <!--menu//-->
Avatar billede jampe Nybegynder
19. december 2006 - 15:58 #10
præcis! :D
Avatar billede sw_red_6 Nybegynder
19. december 2006 - 16:07 #11
øhh, smækforvirret her. Betyder det at det virker eller..?
Avatar billede jampe Nybegynder
19. december 2006 - 16:22 #12
nej :D ..jeg må virkelig, virkelig være dårlig til at formulere mig, så.
når jeg skriver linien "<!--menu//-->" i .tpt-filen, vil jeg have, at denne kode skal komme frem i liniens sted:

if ($handle = opendir($_SERVER['DOCUMENT_ROOT'])) {
              while (false !== ($file = readdir($handle))) {
                  if ($file != "." && $file != ".." && $file != "index.php"  && $file != "img"  && $file != "css"  && $file != "inc"  && $file != "tpt") {
                    '<span class="menuLink"><a href="' . $file . '">' . $file . '</a></span>';
                  }
              }
              closedir($handle);
            }
}

and that's it..
Avatar billede sw_red_6 Nybegynder
19. december 2006 - 16:26 #13
lidt mindre forvirret her ;o)
har du forsøgt det her:
function BuildMenu() {
  $menu = '';
  if ($handle = opendir($_SERVER['DOCUMENT_ROOT'])) {
    while (false !== ($file = readdir($handle))) {
      if ($file != "." && $file != ".." && $file != "index.php"  && $file != "img"  && $file != "css"  && $file != "inc"  && $file != "tpt") {
        $menu .= '<span class="menuLink"><a href="' . $file . '">' . $file . '</a></span>';
      }
    }
    closedir($handle);
  }
  echo $menu;
}
Avatar billede jampe Nybegynder
19. december 2006 - 16:30 #14
jatak, det inspirerede mig til en løsning!
genialt, tak for det.. poster du lige et svar i stedet for en kommentar, så jeg kan sende dig de points?
Avatar billede sw_red_6 Nybegynder
19. december 2006 - 16:31 #15
du får et svar, kommer du så med løsningen?
Avatar billede jampe Nybegynder
19. december 2006 - 17:59 #16
$tpt = 'tpt/index.tpt';
$html_out = file_get_contents($tpt);

$BuildMenu = '';
if ($handle = opendir($_SERVER['DOCUMENT_ROOT'])) {
while (false !== ($file = readdir($handle))) {
  if ($file != "." && $file != ".." && $file != "index.php"  && $file != "img"  && $file != "css"  && $file != "inc"  && $file != "tpt"  && $file != "txt") {
    $BuildMenu .= '<span class="menuLink"><a href="' . $file . '">' . $file . '</a></span>';
  }
}
closedir($handle);
}

$BuildBlog ='';
$parser=xml_parser_create();
xml_set_element_handler($parser, "start_element", "end_element");
xml_set_character_data_handler($parser, "character_data");
$fp=fopen("txt/blog.txt", "r");

while( $line = fgets( $fp,100)){
$BuildBlog .= $line;
}


$html_out = str_replace("<!--menu//-->", $BuildMenu, $html_out);
$html_out = str_replace("<!--indhold//-->", $BuildBlog, $html_out);
echo $html_out;
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