Avatar billede hbhansen Nybegynder
28. marts 2003 - 11:33 Der er 15 kommentarer og
2 løsninger

Include noget af en anden fil, ikke det hele.

Hej

Er der nogen der kan svare mig på hvordan man includer noget af en anden php fil og ikke det hele med funktionen include(...)
F.eks:
<< Andenfil.php
.. tekst 1
.. tekst 2
.. tekst 3
<< Førstefil.php
her ønsker jeg så kun at den f.eks. kun includer tekst 2

Hvis der er nogen der har andre løsninger til problemet er de også vel set...
Avatar billede lauer Nybegynder
28. marts 2003 - 11:39 #1
nej, det kan du ikke, med mindre du deler din includefil op med nogle ifsætninger, og på den måde kun udføre noget af koden, hvis en variabel er sat til noget bestemt.
Avatar billede exp Juniormester
28. marts 2003 - 11:40 #2
Du kunne evt prøve med noget switch:

<< Andenfil.php
<?php
    switch ($_GET["action"]) {
    case "1":
        echo "tekst 1"
        break;
    case "2":
        echo "tekst 2";
        break;
    default:
        echo "standardtekst"; }
?>

include ("andenfil.php?action=1");
include ("andenfil.php?action=2");
Avatar billede exp Juniormester
28. marts 2003 - 11:41 #3
<<førstefil.php
include ("andenfil.php?action=1");
include ("andenfil.php?action=2");
Avatar billede avminarm Juniormester
28. marts 2003 - 11:44 #4
Blive filen altid includeret? eller bliver den kaldt f.eks vi a et link?

hvis den kaldes via et link, kan du dele filen op ved at sætte options på dit link <a href="fil.php?op=tekst1">tekst1</a>

if($_GET['op']=="tekst1"{
gør noget
}
Avatar billede hbhansen Nybegynder
28. marts 2003 - 11:44 #5
For syv sytten og en helvedes masse andre bandeord.. "Accepter" og "Afvis" sidder alt for tæt på hinanden....
Jeg kan ikke rigtig bruge jeres svar til noget...
Jeg skal have den til at læse fra en php fil og så sortere noget at det læste fra..
Andenfil.php, kan jeg ikke rigtig pille ved...
De er fast defineret fra starten af, men min visning skal kun vise noget af filen.
Avatar billede lauer Nybegynder
28. marts 2003 - 11:47 #6
Det kan du ikke... der findes kun de løsninger vi har givet.
Avatar billede exp Juniormester
28. marts 2003 - 11:54 #7
Hvis filen er fast kan du måske lege lidt med substr()
http://dk.php.net/manual/en/function.substr.php
Avatar billede kaer Nybegynder
28. marts 2003 - 11:57 #8
Hejsa,

læs filen ind i en $variable og brug regular expression til at finde hvad du leder efter... Se eventuelt -> http://www.php.net/manual/en/function.preg-grep.php eller http://www.php.net/manual/en/function.preg-replace.php

Måske en mulighed?
Avatar billede hbhansen Nybegynder
28. marts 2003 - 12:01 #9
exp>> Du kan ikke bruge substr med php filer, det vil den ikke tolken ordentlig.. desværre.. Især ikke hvis php filen har parametre med.
Eks. fil.php?var=test
Kaer>> Det er ikke noget du har et kodet eks. på?
Avatar billede exp Juniormester
28. marts 2003 - 12:03 #10
det var også bare en forflyvsk tanke

:o)
Avatar billede kaer Nybegynder
28. marts 2003 - 12:24 #11
Lidt kode jeg har brugt til at læse FAQ filer med... Spørgsmål er adskilt med ?Q og svar med ?A. Jeg laver spørgsmål om til links og fjerner svaret...

--- FAQ Kode ---

if($dirHandler = opendir('faq')) {

    $fileCounter = 0;

    while (false !== ($theFile = readdir($dirHandler))) {
        if ($theFile != "." && $theFile != "..") {

            $fileContent = fread(fopen("faq/$theFile", "r"), filesize("faq/$theFile"));
            $fileContent = preg_replace('!\?Q(.*?)\?Q!s', '<a href="#'.$fileCounter.'">$1</a><br>', $fileContent);
            $fileContent = preg_replace('!\?A(.*?)\?A!s', '', $fileContent);
            echo $fileContent;
           
            $fileCounter++;
           
        }
    }
}

--- FAQ Kode ---
Avatar billede hbhansen Nybegynder
28. marts 2003 - 12:32 #12
Ok, tak, prøver at kigge på det... Men så vidt jeg kan se så er eks. ligesom at læse en fil fra enden til anden og så adskille skidt fra kanel..
Det mener jeg ikke vil virke hvis php filen har parametre med ..
Avatar billede hbhansen Nybegynder
28. marts 2003 - 14:09 #13
Har fundet frem til en lidt alternativ løsning, hvor jeg læse filen linie for linie og piller det ud jeg ønsker dernæste, tager jeg og gemme det i en ny fil som jeg sletter når jeg er færdig. så tager jeg såmen bare og includer den nye fil med de gamle parametre.. Alternativ løsning men den virker indtil videre..
Andre forslag er meget velkommen.
Avatar billede kaer Nybegynder
28. marts 2003 - 18:36 #14
Jeg er nok ikke helt med på hvad du vil. :-)

Kan du ikke smide din alternative kode op, så kan jeg måske bedre forstå det og komme med et forslag?
Avatar billede hbhansen Nybegynder
31. marts 2003 - 13:09 #15
Jow, det kan jeg godt..
Det skal bruges til en print venlig side..
Og på alle sider afsætter jeg det der skal printes imellem:
<? // ------ PRINT PAGE - START ------ ?>
<? // ------ PRINT PAGE - END ------ ?>
ob_start();
$pageExplode = explode("/", $page);
$thePage = array_pop($pageExplode);
//FIND PAGE PARAMETERS
$pageParameters = explode("?",$thePage);

$pageStart = implode("/",$pageExplode)."/";
$userid = intval(userGetUserID());
$fp = @fopen($pageParameters{0}, "r");

if ($fp) {
    while($line = fgets($fp, 1024)) {
        //START PRINT CODE
        if (trim($line) == trim("<? // ------ PRINT PAGE - START ------ ?>"))
            $startPrintPage = 1;
        //END PRINT CODE
        if (trim($line) == trim("<? // ------ PRINT PAGE - END ------ ?>"))
        {
            $outline .= $line;
            $stopPrintPage = 1;
            break;
        }

        if ($startPrintPage)
            $outline .= $line;
    }

    fclose($fp);

    if (!$startPrintPage || !$stopPrintPage) { ?>
        <table width="100%" border="0" align="center">
            <tr>
                <td align="center">
                <br>
                <b>The page is not configurated to be used with this print page.
                <br>
                <br>
                Contact the system administrator for further information.</b>
                <br>
                </td>
            </tr>
        </table>
    <?} else {
        //SHOW RESULT
        session_start();
                $tmpfilename = sessionID().".php";
                session_destroy();
        $tempfp = fopen($tmpfilename, "w");
        fwrite($tempfp, "<? include_once(".chr(34)."../config/functions.php".chr(34).");?>\r\n");
        fwrite($tempfp, $outline);
        fclose($tempfp);

        if ($pageParameters{1})
        {
            include($pageStart.$tmpfilename."?".$pageParameters{sizeof($pageParameters)-1});
        }
        else
        {
            include($tmpfilename);
        }
        unlink($tmpfilename);

        ?>
        <body onload="window.print();">
        <?
    }
} else { ?>
    <table width="100%" border="0" align="center">
        <tr>
            <td align="center">
            <br>
            <b>
            The requested file couldn't be found.
            <br><br>
            Contact the system administrator for further information.</b>
            <br>
            </td>
        </tr>
    </table>
<? }

ob_end_flush();

?>

Håber det giver mening.. Det er nok ikke den bedste løsning men den virker..
Avatar billede kaer Nybegynder
31. marts 2003 - 14:07 #16
Hejsa,

jeg vil stadig mene at du kan læse din fil ind i en $variable og så bruge preg_grep eller lignende til at finde hvad der er mellem dine <? // ------ PRINT PAGE - START ------ ?> og <? // ------ PRINT PAGE - END ------ ?>.

Du kan godt læse din side ind i en $variable med parametre.

$variable = fopen('http://yourdomain.com/default.php?parameter='.$parameter.'', 'r');

Håber det kan give dig en idé?
Avatar billede hbhansen Nybegynder
31. marts 2003 - 14:11 #17
Ja, men problemet med fopen hvor der står http i filnavn er at den så tolker det som om at det er en ny åbning af den pågældende side..
Dvs. at de login tjek jeg har på siden ikke vil slå igennem da det så er en "form for" ny session, der påbegyndes.
Det resultere i at jeg får login siden tilbage i hovedet istedet..
Derfor denne lidt alternative kode :-)
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