---
title: "Hämta info."
type: "forum-thread"
url: "https://www.webforum.nu/amne/programmering/19288-hämta-info"
topic: "Programmering"
topic_url: "https://www.webforum.nu/amne/programmering"
author: "Kent"
published: "2001-02-12T21:24:00.000Z"
updated: "2001-02-21T22:50:00.000Z"
replies: 23
views: 298
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/programmering/19288-hämta-info"
---

# Hämta info.

_Sida 1 av 2._

## #1 — Kent, 2001-02-12T21:24Z

Hur gör man för att öppna en txt fil och visa den på en speciell sida, ex, visa.cgi?id=12.?

Permalänk: https://www.webforum.nu/p/19288

## #2 — flaerp, 2001-02-13T17:09Z

Förstår inte riktigt hur du menar, men i princip gör man såhär för att öppna filen text.txt när man anropar med script.pl?file=text.txt

OBS: Väldigt osäker kod, ta inte denna i drift som den är - med denna kan man läsa varenda fil i hela systemet. Dessutom är den skriven helt ur minnet. :-)

```
#!/usr/bin/perl
#
#

use CGI qw(:standard escapeHTML);

print header();

open FILE, param('file') &#0124;&#0124; die;

while(<FILE> ) {
  print $_;
}

close FILE;
```

Hoppas det gav lite klarhet i tillvaron.

Permalänk: https://www.webforum.nu/p/341589

## #3 — Kent, 2001-02-14T04:04Z

Ex, jag anropar med script.pl?id=12 då ska 12.txt löppnas för läsning.

Permalänk: https://www.webforum.nu/p/341590

## #4 — Demo, 2001-02-14T10:54Z

Det värde som du sänder med ger du bara tillgägget .txt. Variabeln $filer skall innehålla sökvägen till mappen där filen du vill läsa till, finns lagrad.

//Demo

```
open (TEXT,"$filer/$INFO{'id'}.txt")&#0124;&#0124; print "Kan inte hitta \n";

while ($rad=<TEXT> ){
$rad=~/(.*)::(.*)/;
$INFO1=$1;
$INFO2=$2;
}
close (TEXT);
```

Permalänk: https://www.webforum.nu/p/341591

## #5 — Kent, 2001-02-15T19:46Z

Funkar inte med din kod demo, och det är inte min det är fel på, lägger jag till din kod funkar det inte, tar jag bort den funkar det bra.

Permalänk: https://www.webforum.nu/p/341592

## #6 — Kent, 2001-02-16T20:43Z

Ingen annan som har någon bra kod.?

Permalänk: https://www.webforum.nu/p/341593

## #7 — FlashX, 2001-02-17T13:50Z

Båda alternativen fungerar nog om man ändrar förutsättningarna efter behovet.

Det är ju svårt att ge en helt fungerande kod om man t.ex inte vet hur resultatet ska skrivas ut.
Ska texten delas upp i olika värden?

Följande öppnar i.a.f. en fil och skriver ut den i befintligt skick. 

```
#!/usr/bin/perl

use CGI qw(:standard);
my $action = (param('action')) ? param('action') : 'viewFile';

&headerHTML;
view_file()	if($action eq 'viewFile');

sub view_file {
	$id = param('id');
	
	open (FILE,"<$id.txt") or die "$id.txt: $!\n";
		@lines = <FILE>;
		close (FILE);

print <<TEXT;
<table>
<tr>
<td><font face="Verdana, Arial, Helvetica, sans-serif" size="2">@lines</font></td>
</tr>
</table>
TEXT
}

&footerHTML;

################

sub headerHTML {
print "Content-type: text/html\n\n";
print<<HEAD;
<html>
<head>
<title>Titeln</title>
</head>

<body>
HEAD
}

sub footerHTML {
print<<FOOT;
</body>
</html>
FOOT
}
```

Antaganden:
Textfilen finns i samma mapp som skriptet och om textfilen heter 12.txt så anges 
skriptnamn.cgi?id=12 för att infoga filen i ett HTML-dokument.

Det finns utrymme för flera varianter och uppdelning av värden i textfilen (om dessa existerar) och andra "actions" kan enkelt läggas i andra subrutiner.
(subrutinen view_file körs som default utan action)

Du får pula lite själv och se hur det blir och återkom sedan om det finns speciella önskemål.

\[Redigerat av FlashX den 17 feb 2001\]

Permalänk: https://www.webforum.nu/p/341594

## #8 — Kent, 2001-02-17T15:35Z

Hmm,, hur ska man hämta informationen med denna kod,
om filen ser ut så här ,
12::namn::rubrik::inlagg::datum
då ska detta hämtas ut på sidan,
det borde ju se ut så här eller något,
ID: $param('id');
Namn: $param('namn');
Rubrik: $param('rubrik');
eller.?

Permalänk: https://www.webforum.nu/p/341595

## #9 — FlashX, 2001-02-17T18:10Z

Efter close (FILE); kan du lägga till 

```
foreach $line (@lines) {
($id, $namn, $rubrik, $inlagg, $datum) = split(/\:\:/, $line);
}
```

och sedan använder du dessa variabler i den HTML du vill skriva ut.

Exempelvis:

```
#!/usr/bin/perl

use CGI qw(:standard);
my $action = (param('action')) ? param('action') : 'viewFile';

&headerHTML;
view_file()	if($action eq 'viewFile');

sub view_file {
	$id = param('id');
	open (FILE,"<$id.txt") or die "$id.txt: $!\n";
		@lines = <FILE>;
		close (FILE);
		
		foreach $line (@lines) {
		($id, $namn, $rubrik, $inlagg, $datum) = split(/\:\:/, $line);
		
	print qq(
		<table>
		  <tr> 
		    <td colspan="2"> 
		      <hr size="1">
		    </td>
		  </tr>
		  <tr> 
		    <td><font face="Verdana" size="1">$id</font></td>
		    <td><b><font size="2" face="Verdana">$rubrik</font></b></td>
		  </tr>
		  <tr> 
		    <td><font face="Verdana" size="2"><b>$namn<br>
		      </b></font><font size="1" face="Verdana">$datum</font></td>
		    <td><font face="Verdana" size="2">$inlagg</font></td>
		  </tr>
		  <tr> 
		    <td colspan="2">&nbsp;</td>
		  </tr>
		</table>
		);
	}
}

&footerHTML;

################

sub headerHTML {
print "Content-type: text/html\n\n";
print<<HEAD;
<html>
<head>
<title>Titeln</title>
</head>

<body>
HEAD
}

sub footerHTML {
print<<FOOT;
</body>
</html>
FOOT
}
```

\[Redigerat av FlashX den 18 feb 2001\]

Permalänk: https://www.webforum.nu/p/341596

## #10 — Kent, 2001-02-17T22:56Z

Ja nu verkar det ju funka riktigt bra, tack för hjälpen FlashX.!

Permalänk: https://www.webforum.nu/p/341597

## #11 — FlashX, 2001-02-18T01:32Z

Roligt att det fungerar :)
Redigerade dock koden ovan något, så den skriver ut alla rader i textfilen.
(ifall det var avsikten)

Permalänk: https://www.webforum.nu/p/341598

## #12 — Kent, 2001-02-18T12:46Z

Vad redigerade du då, upptäckte det felet nu att den inte skrev ut allt.

Permalänk: https://www.webforum.nu/p/341599

## #13 — FlashX, 2001-02-18T15:20Z

Kolla mellan close (FILE); och &footerHTML; så ser du skillnaden mellan den kod du kopierade första gången. 

Klicka på redigeraikonen när du kopierar texten så får du koden rätt formaterad.

Permalänk: https://www.webforum.nu/p/341600

## #14 — Kent, 2001-02-18T16:41Z

Menar du, print qq(.?
testade detta men det fungerar inte,
den skriver alltså inte ut allt.

Permalänk: https://www.webforum.nu/p/341601

## #15 — FlashX, 2001-02-19T00:03Z

Ligger den innanför *foreach-lopen* så skriver den ut alla rader i textfilen.

Permalänk: https://www.webforum.nu/p/341602

## #16 — Kent, 2001-02-19T00:13Z

Jo jag har den innanför, men skriver inte ut allt ändå.?

\[Redigerat av Kent den 19 feb 2001\]

Permalänk: https://www.webforum.nu/p/341603

## #17 — FlashX, 2001-02-19T17:33Z

Du får kolla igenom skriptet igen.
Varje rad i textfilen skrivs ut så som du bestämt mellan print qq( och );

Kolla också så det verkligen är flera rader i textfilen, så allt inte ligger på samma rad...

Permalänk: https://www.webforum.nu/p/341604

## #18 — Kent, 2001-02-19T19:29Z

Hur menar du med flera rader i textfilen,?
så här ser den ut nu,
id::namn::rubrik::inlagg::datum::en massa html kod::html kod igen

Permalänk: https://www.webforum.nu/p/341605

## #19 — FlashX, 2001-02-19T22:41Z

Jag tar för givet att varje inlägg ligger i en egen rad.
Du skrev ovanför att värdena var indelade i 

> 12::namn::rubrik::inlagg::datum

och då antar man att det ser ut så här i textfilen.
12::namn::rubrik::inlagg::datum
13::namn::rubrik::inlagg::datum
14::namn::rubrik::inlagg::datum
o.s.v.

Varför har du en massa html-kod i textfilen?
Tanken var att skriptet skriver ut sidan och infogar inläggen ifrån textfilen...

Permalänk: https://www.webforum.nu/p/341606

## #20 — Kent, 2001-02-19T22:47Z

Jag tod bara som ex hur den ser, menar du att det inte går att hämta html kod med detta script.?

Permalänk: https://www.webforum.nu/p/341607

---

Tråden på webben: https://www.webforum.nu/amne/programmering/19288-hämta-info  
Nästa sida: https://www.webforum.nu/amne/programmering/19288-hämta-info/page2.md
