Avatar billede herberth Juniormester
21. februar 2015 - 14:27 Der er 21 kommentarer og
1 løsning

Include i PHP

Hej

Jeg har en PHP fil som generer noget indhold. Indholdet er 12 små tekstfiler som opdateres hver uge. PHP filen fungere fint. Når det bliver en ny uge så springer filen automatisk frem og tager fat i den næste ugemappe og viser således de samme filer - men blot for den nye uge. Alt fungere fint.

Nu vil jeg gerne gøre således at hver af disse 12 tekstfiler også opsplittes således at de vises 12 forskellige steder.

Fx vil jeg gerne at denne fil:
http://netspirit.dk/new/stjernetegn-skytte.html

Også viser den tekstfil som i den original PHP fil skabes via følgende kode:

$tmp.="<br /><br />
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">
  <tr>
    <td style=\"padding-right: 15px\" valign=\"middle\" width=\"70\">
    <IMG src=\"http://netspirit.dk/images/pagemaster/skytte.gif\"></td>
    <td valign=\"middle\" width=\"99%\">
    <A href=\"../?page=56\">
    <H2>Ugehoroskop Skytten</H2></A>
    ".implode('', file($horodir."/sagittarius.txt"))."
    </td></tr></table><br />
<br />

-------------------------------------

Så mit spørgsmål er hvordan jeg får html filen til at inkludere dette stykke php kode.

------------------

Her ligger den originale PHP fil:
http://netspirit.dk/new/pages/ugehoroskop.php

Skal jeg poste hele indholdet af PHP filen så bare sig til.

Nogle der kan pege mig i den rigtige retning?
Avatar billede herberth Juniormester
21. februar 2015 - 17:09 #1
Hejsa - Jeg har opdateret en af de 12 filer hvori jeg gerne vil have at teksten kommer frem - Det kan måske lette forståelsen.

Det jeg leder efter en en php include kommando (tror jeg nok!)

http://netspirit.dk/new/stjernetegn-skytte.html
Avatar billede olsensweb.dk Ekspert
21. februar 2015 - 17:45 #2
hvad er der galt med at bruge include  ??
istedet for include bør du bruge require hvis filen er vigtig
http://php.net/manual/en/function.require.php
http://php.net/manual/en/function.include.php
http://php.net/manual/en/function.require-once.php
http://php.net/manual/en/function.include-once.php

alternativt kig fopen
     
<?php
$handle = fopen("c:\\folder\\resource.txt", "r");
?>

http://www.w3schools.com/Php/php_file_open.asp


kiggede lige kort på http://www.eksperten.dk/spm/1001887
hvorfor anvender du short_open_tag ?? det er slået fra pr default på ny installationer
Avatar billede herberth Juniormester
21. februar 2015 - 18:00 #3
Hej tak for det fine svar. Jeg prøver at kigge lidt i de links du har givet. Jeg er blot på udkig efter en nem kode som jeg kan indsætte i html filen så den forstår at det her tekst skal ind på denne plads. Jeg er ikke haj i PHP og den gamle PHP fil virker fint så derfor bruger jeg den selvom den helt sikkert nok kunne skrives mere up-to-date.

Det her foben ser nemt og enkelt ud. Udfordringen er jo blot at den ikke kun skal have fat i en txt fil - men at den skal skifte denne hver uge til en ny - altså således som det originale og fungerende php fil gør.

Hvis jeg i html filen blot skriver:
<?php
$handle = fopen("c:\\folder\\resource.txt", "r");
?>

Og altså tilretter den så den peger på text filen jeg gerne vil inkludere - så viser den vel permanent kun denne tekstfil og skifter ikke hver uge sådan som det eksisterende php skrift gør?
Avatar billede herberth Juniormester
21. februar 2015 - 18:31 #4
Er jeg helt på vildspor hvis jeg tror at jeg er nødt til at lave 12 forskellige php filer - og så kalde den php fil jeg har brug for?

Altså tage det eksisterende php fil
- forkorte den så den kun viser en af de 12 tekster
- gemme den som php fil 1, 2, 3.... 12
- og så fra de 12 html filer kalde den jeg har brug for

Er det helt på vildspor?
Avatar billede herberth Juniormester
21. februar 2015 - 18:36 #5
Fx så for den første så forkorter jeg php filen til dette og kalder den for ugehoroskoper-01.php

<?php
require("../inc_main.php");
page_header();
$delay=time()+6*60*60;
$week=date("W",$delay);
$year=date("Y",$delay);

$horodir=$ns_static_path."/od/ugehoroskop/da/$year/$week";
//echo date("r",$delay);

$tmp="<h1>Ugehoroskop - Uge $week, år $year</h1>".
    @implode('', @file($ns_static_path."/od/ugehoroskop/da/header.txt"));

$tmp.="<br /><br />
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">
  <tr>
    <td style=\"padding-right: 15px\" valign=\"middle\" width=\"70\">
    <IMG src=\"http://netspirit.dk/images/pagemaster/skytte.gif\"></td>
    <td valign=\"middle\" width=\"99%\">
    <A href=\"../?page=56\">
    <H2>Ugehoroskop Skytten</H2></A>
    ".implode('', file($horodir."/sagittarius.txt"))."
    </td></tr></table><br />
<br />

<br clear=\"all\" />
<div align=\"center\">
</div>
<br />";

$page['METATAGS'] = '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />';

$page['BODY']=$tmp;
echo $tmp;
page_footer();
?>
Avatar billede herberth Juniormester
21. februar 2015 - 18:57 #6
Det her virker ikke.

  <?php
$str= file_get_contents("www.netspirit.dk/od/ugehoroskop/da/header.txt");
echo $str;
?>

Intet resultat på siden.
http://netspirit.dk/new/stjernetegn-skytte.html
Avatar billede olsensweb.dk Ekspert
21. februar 2015 - 20:20 #7
#3
>så viser den vel permanent kun denne tekstfil og skifter ikke hver uge sådan som det eksisterende php skrift gør?
du laver bare folder/filnavnet dynamisk vha php
evt ud fra dine
$delay=time()+6*60*60;
$week=date("W",$delay);
$year=date("Y",$delay);

jeg ved ikke lige hvad du skal med $delay, du kna vel nøjes med time()


fra http://netspirit.dk/new/stjernetegn-skytte.html

...
</script></div>
<p><span style="font-weight: bold; font-size: 30pt; color: #008080">Ugehoroskop skytten </span><span style="font-weight: bold; font-size: 14px; color: #CCC">Dit horoskop fra søndag midnat og ugen frem.</span></p>
  <?php
$str= file_get_contents("/od/ugehoroskop/da/header.txt");
echo $str;
?>
<?php
$handle = fopen("www.netspirit.dk\\od/ugehoroskop/da\\header.txt", "r");
?>
<p>

hvordan har du tænkt dig at HTML skal fortolke PHP ??
omdøb
stjernetegn-skytte.html
til
stjernetegn-skytte.php

du skal også gøre noget med den $handle du laver med $handle = fopen.
den giver dig en pointer til starten af filen, men du skal også læse filen, og skal efterfølges af en fread se eksemplet fra w3shcools jeg linkede til i #2
Avatar billede herberth Juniormester
21. februar 2015 - 21:25 #8
Pyha... jeg kommer rigtig på arbejde i aften, super godt - jeg går videre med de anbefalinger du har givet.
Avatar billede herberth Juniormester
22. februar 2015 - 13:06 #9
Kommet lidt videre, fik omdøbt til php som du foreslog.

Men nu får jeg denne fejl:
Warning: file(/od/ugehoroskop/da/2015/08/sagittarius.txt): failed to open stream: No such file or directory in /home/herbert_c_brandt/netspirit.dk/new/stjernetegn-skytte.php on line 40

Og dette er hvad der står i linie 40:
".implode('', file($horodir."/sagittarius.txt"))."

Men denne fil eksistere - jeg kan jo se i det resultat som den originale php fil give mig her:
http://netspirit.dk/new/pages/ugehoroskop.php

Så det forstår jeg ikke.

Nogen hjælp?
Avatar billede herberth Juniormester
22. februar 2015 - 13:08 #10
Avatar billede herberth Juniormester
22. februar 2015 - 13:15 #11
Opdatering - Fik ordnet den her fejl - Havde glemt et @ tegn

Så nu er der ingen fejlmeddelelse, men desværre vises der stadig heller ingen tekst. Er det fordi jeg skal skrive noget ekstra kode - altså sådan som du skriver:

"du skal også gøre noget med den $handle du laver med $handle = fopen. den giver dig en pointer til starten af filen, men du skal også læse filen, og skal efterfølges af en fread se eksemplet fra w3shcools jeg linkede til i #2 "

?
Avatar billede herberth Juniormester
22. februar 2015 - 13:40 #12
Hvad er der galt med denne kode siden teksten ikke viser sig?
(Koden er jo identisk til den originale php fil som rent faktisk virker - Hvad er der galt med koden?

<?php
$delay=time()+6*60*60;
$week=date("W",$delay);
$year=date("Y",$delay);

$horodir=$ns_static_path."/od/ugehoroskop/da/$year/$week";
//echo date("r",$delay);

$tmp="<h1>Ugehoroskop - Uge $week, år $year</h1>".
    @implode('', @file($ns_static_path."/od/ugehoroskop/da/header.txt"));

$tmp.="<br /><br />
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">
  <tr>
    <td style=\"padding-right: 15px\" valign=\"middle\" width=\"70\">
    <IMG src=\"http://netspirit.dk/images/pagemaster/skytte.gif\"></td>
    <td valign=\"middle\" width=\"99%\">
    <A href=\"../?page=56\">
    <H2>Ugehoroskop Skytten</H2></A>
    ".@implode('', @file($horodir."/sagittarius.txt"))."
    </td></tr></table><br />
<br />

<br clear=\"all\" />
<br />";

$page['BODY']=$tmp;
echo $tmp;
?>

Den forkortede kode ligger i denne fil:
http://netspirit.dk/new/stjernetegn-skytte.php

Den originale php fil ligger her:
http://netspirit.dk/new/pages/ugehoroskop.php
Avatar billede olsensweb.dk Ekspert
22. februar 2015 - 14:07 #13
>Opdatering - Fik ordnet den her fejl - Havde glemt et @ tegn
>@implode('', @file($ns_static_path."/od/ugehoroskop/da/header.txt"));
at sætte @ foran dine functioner er noget af det dummeste du kan gøre under udvikling, du undertrykker visning af fejl functionen laver.
hvis du fjerner de 2 @ og rette fejlene kommer du tættere på en løsning, måske løsningen

at tro man kan udvikle uden at begå fejl er utopi
at udvikle uden at rette sine fejl er idioti
Avatar billede herberth Juniormester
22. februar 2015 - 14:18 #14
Okay - tak for rådet - jeg forsøger
Avatar billede herberth Juniormester
22. februar 2015 - 14:25 #15
Fejlen den viser på siden er nu:
Warning: file(/od/ugehoroskop/da/2015/08/sagittarius.txt): failed to open stream: No such file or directory in /home/herbert_c_brandt/netspirit.dk/new/stjernetegn-skytte.php on line 38

Men hvis jeg direkte skriver adressen ind i browserlinien:
http://netspirit.dk/od/ugehoroskop/da/2015/08/sagittarius.txt

Så vises filen! Så den eksistere jo!

Hvad er det jeg så gør galt?
Avatar billede herberth Juniormester
22. februar 2015 - 14:57 #16
Jeg er superglad for rådet om at fjerne de her @ så jeg kan se hvad fejlen er. Så tak for det råd.

Men jeg vedbliver altså med at få denne fejl selvom filen rent faktisk eksistere:


Warning: file(www.netspirit.dk/od/ugehoroskop/da/2015/08/sagittarius.txt): failed to open stream: No such file or directory in /home/herbert_c_brandt/netspirit.dk/new/stjernetegn-skytte.php on line 38

Warning: implode(): Invalid arguments passed in /home/herbert_c_brandt/netspirit.dk/new/stjernetegn-skytte.php on line 38
Avatar billede herberth Juniormester
22. februar 2015 - 15:17 #17
Fik det til at virke!!!

Jeg indsatte http://
I
$horodir=$ns_static_path."http://www.netspirit.dk/od/ugehoroskop/da/$year/$week";

Og nu ser det ud til at virke!!!

Kan jeg gøre noget for at forbedre koden før jeg kopiere den ud til de øvrige 11 stjernetegn?

Alle råd modtages med glæde.
Avatar billede olsensweb.dk Ekspert
22. februar 2015 - 15:21 #18
prøv at rette
@implode('', @file($ns_static_path."/od/ugehoroskop/da/header.txt"));

til
@implode('', @file($_SERVER['DOCUMENT_ROOT']"/od/ugehoroskop/da/header.txt"));

så du får en absolut parth til din fil
Avatar billede herberth Juniormester
22. februar 2015 - 15:39 #19
Det er den ikke glad for - giver fejl både i linie 24 og 28


$horodir=$_SERVER"http://www.netspirit.dk/od/ugehoroskop/da/$year/$week";
//echo date("r",$delay);

$tmp="<h1>Ugehoroskop - Uge $week, år $year</h1>".
    @implode('', @file($_SERVER['DOCUMENT_ROOT']"/od/ugehoroskop/da/header.txt"));
Avatar billede herberth Juniormester
22. februar 2015 - 15:40 #20
her er den originale:

$horodir=$ns_static_path."http://www.netspirit.dk/od/ugehoroskop/da/$year/$week";
//echo date("r",$delay);

$tmp="<h1>Ugehoroskop - Uge $week, år $year</h1>".
    @implode('', @file($ns_static_path."/od/ugehoroskop/da/header.txt"));
Avatar billede herberth Juniormester
22. februar 2015 - 19:01 #21
Tak for den meget fine hjælp.
Problemet blev løst - og samtidig lærte jeg en masse - super.

Smid et svar og ellers så lukker jeg blot spørgsmålet selv om en dags tid.
Avatar billede olsensweb.dk Ekspert
22. februar 2015 - 19:29 #22
får du her
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

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