/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hjælp - Tekstfiler når der er mere end end~
Fra : Ukendt


Dato : 08-01-03 22:38

Håber nogen kan hjælpe?
Hvordan søger jeg og henter
indhold i tekstfiler når der er
mere end end række i filen?
Vil gerne kunne vælge at jeg vil
hente indhold i feks. række 2 felt 2
og så printe indholdet ud.
Vedlægger 2 eksempler jeg har fumlet med.

Hilsen
Tommy
-----------------------------------------------


<pre>
<?php
print("<hr>");

list($line) = file('test.txt');
$data = explode('|',$line);
var_dump($data);

print("<br>");
print "Navn: ".$data[1];
print("<br>");
print "Email: ".$data[0];
print("<br>");

print("<hr>");
print("<br>");
print("<br>");
print("<br>");
?>
</pre>

<pre>
<?php
$readfile = file("test.txt");
for ($k=0; $k<=count($readfile)-1; $k++) {
$fields = split("\|",$readfile[$k]);
print("<br>");
var_dump($fields);
print("<br>");
print "Navn: ".$fields[0];
print("<br>");
print "Email: ".$fields[1];
print("<br>");
print("<br>");
print("<br>");

}
print("<hr>");
print "spalter: ".count($fields);
//print count($fields);
print("<br>");
print "rækker: ".($k);
//print ($k);
print("<br>");
?>
</pre>


----------------------------------
test.txt

John Doe|doe.com
Jane Doe|jane.com
Billy Bob Joe|domain.com
Tommy|tc.com
1|hallo
----------------------------------



 
 
Lars Dybdahl (08-01-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 08-01-03 22:46

$fp=fopen("filnavn","r");
$count=0;
while (!feof($fp) && $count<2) {
// Sålænge der er data, og mindre end 2 rækker har været læst,
// gentages det, som står inde i denne parentes
$count++;
$line=fgets($fp,1000);
$data=explode("|",$line);
// Kun udskriv 2. række
if ($count==2) echo ($data);
}
fclose ($fp);

--
Dybdahl Engineering
http://dybdahl.dk/

Ukendt (08-01-2003)
Kommentar
Fra : Ukendt


Dato : 08-01-03 23:29

On Wed, 08 Jan 2003 22:45:34 +0100, Lars Dybdahl <lars@dybdahl.dk>
wrote:

>$fp=fopen("filnavn","r");
>$count=0;
>while (!feof($fp) && $count<2) {
> // Sålænge der er data, og mindre end 2 rækker har været læst,
> // gentages det, som står inde i denne parentes
> $count++;
> $line=fgets($fp,1000);
> $data=explode("|",$line);
> // Kun udskriv 2. række
> if ($count==2) echo ($data);
>}
>fclose ($fp);


Tak
Men der er lige 2 ting
1- Det eneste jeg får ud at køre denne file er at den skriver Array
2 - Jeg vil gerne kunne vælge at se kun nogle af felterne i en række.

Venligst
Tommy


Ukendt (09-01-2003)
Kommentar
Fra : Ukendt


Dato : 09-01-03 00:04

On Wed, 08 Jan 2003 23:28:55 +0100, Popeye <> wrote:

>On Wed, 08 Jan 2003 22:45:34 +0100, Lars Dybdahl <lars@dybdahl.dk>
>wrote:
>
>>$fp=fopen("filnavn","r");
>>$count=0;
>>while (!feof($fp) && $count<2) {
>> // Sålænge der er data, og mindre end 2 rækker har været læst,
>> // gentages det, som står inde i denne parentes
>> $count++;
>> $line=fgets($fp,1000);
>> $data=explode("|",$line);
>> // Kun udskriv 2. række
>> if ($count==2) echo ($data);
>>}
>>fclose ($fp);
>
>
>Tak
>Men der er lige 2 ting
>1- Det eneste jeg får ud at køre denne file er at den skriver Array
>2 - Jeg vil gerne kunne vælge at se kun nogle af felterne i en række.
>
>Venligst
>Tommy


Fik dit script til at køre med små ændringer - næste spørgsmål er så :
Jeg vil gerne kunne kalde på scriptet fra andre sider på den måde
at hente data fra txt filen - hvordan ændres scriptet så det kan lade
sige gøre??

Venligst
Tommy


<pre>
<?php
$fp=fopen("test.txt","r");
$count=0;

while (!feof($fp) && $count<5) {
// Sålænge der er data, og mindre end 2 rækker har været læst,
// gentages det, som står inde i denne parentes
$count++;
$line=fgets($fp,1000);
$data=explode("|",$line);
var_dump($data);
// Kun udskriv 2. række
if ($count==5) echo ($data[1]);

}
fclose ($fp);
?>
</pre>

Lars Dybdahl (09-01-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 09-01-03 08:09

Læg dette i sub.php:

<?php
function getdata ($row,$col) {
$fp=fopen("filnavn","r");
$count=0;
while (!feof($fp) && $count<$row) {
// Sålænge der er data, og mindre end 2 rækker har været læst,
// gentages det, som står inde i denne parentes
$count++;
$line=fgets($fp,1000);
$data=explode("|",$line);
// Kun udskriv 2. række
if ($count==$row) echo ($data[$col]);
}
fclose ($fp);
}
?>

I de andre skriver du så:

<?php
require "sub.php";
echo getdata (2,2);
?>

Undskyld fejlen sidst - ingen af de scripts, jeg skriver her, har været
testet i praksis - ud fra devisen om at du nok hellere vil have et tip, der
ikke er testet, end at undvære tippet bare fordi jeg ikke lige har tid til
at teste, om jeg har skrevet 100% rigtigt...

Hilsen,

Lars.

--
Freelance programmør
http://dybdahl.dk/

Ukendt (09-01-2003)
Kommentar
Fra : Ukendt


Dato : 09-01-03 10:37

On Thu, 09 Jan 2003 08:09:07 +0100, Lars Dybdahl <lars@dybdahl.dk>
wrote:

>Læg dette i sub.php:
>
><?php
>function getdata ($row,$col) {
> $fp=fopen("filnavn","r");
> $count=0;
> while (!feof($fp) && $count<$row) {
> // Sålænge der er data, og mindre end 2 rækker har været læst,
> // gentages det, som står inde i denne parentes
> $count++;
> $line=fgets($fp,1000);
> $data=explode("|",$line);
> // Kun udskriv 2. række
> if ($count==$row) echo ($data[$col]);
> }
> fclose ($fp);
>}
>?>
>
>I de andre skriver du så:
>
><?php
>require "sub.php";
>echo getdata (2,2);
>?>
>
>Undskyld fejlen sidst - ingen af de scripts, jeg skriver her, har været
>testet i praksis - ud fra devisen om at du nok hellere vil have et tip, der
>ikke er testet, end at undvære tippet bare fordi jeg ikke lige har tid til
>at teste, om jeg har skrevet 100% rigtigt...
>
>Hilsen,
>
>Lars.
Hej Lars
Takker mange gang for din hjælp .
Ligner helt sikkert det jeg har brug for - men jeg har bare
det problem at der intet sker når jeg kører de 2 sidste scripts.
Har rodet rundt med det men kan ikke finde fejlen - HJÆLP
Hilsen
Tommy


Lars Dybdahl (09-01-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 09-01-03 10:56

Skrive echo $data og echo $line hist og her - så ser du, hvad dit script
laver undervejs.

Hilsen,

Lars.

Popeye <> wrote:
> Ligner helt sikkert det jeg har brug for - men jeg har bare
> det problem at der intet sker når jeg kører de 2 sidste scripts.
> Har rodet rundt med det men kan ikke finde fejlen - HJÆLP

--
Freelance programmør
Programmering mod timebetaling

Ukendt (09-01-2003)
Kommentar
Fra : Ukendt


Dato : 09-01-03 11:51

On Thu, 09 Jan 2003 10:55:55 +0100, Lars Dybdahl <lars@dybdahl.dk>
wrote:

>Skrive echo $data og echo $line hist og her - så ser du, hvad dit script
>laver undervejs.
>
>Hilsen,
>
>Lars.
>
>Popeye <> wrote:
>> Ligner helt sikkert det jeg har brug for - men jeg har bare
>> det problem at der intet sker når jeg kører de 2 sidste scripts.
>> Har rodet rundt med det men kan ikke finde fejlen - HJÆLP


Ok - har prøvet det og kan ikke få det til at funke.
Tak for hjælpen - måske der er en anden der kan hjælpe?

Hilsen
Tommy


Niels Andersen (09-01-2003)
Kommentar
Fra : Niels Andersen


Dato : 09-01-03 13:05

Popeye <> wrote in <cukq1vsr5vkon4hj6aclmkkqn6t3fd2cut@4ax.com>:
>>Skrive echo $data og echo $line hist og her - så ser du, hvad dit script
>>laver undervejs.
> Ok - har prøvet det og kan ikke få det til at funke.
> Tak for hjælpen - måske der er en anden der kan hjælpe?

Jeg vil tro at funktionen finder det, den skal finde (så længe linjerne er
under ca. 1000 bytes lange). Problemet er, at den udskriver det, i stedet
for at returnere det.

Jeg kommer her med et nyt forslag, som egentlig bare er en masse rettelser i
den tidligere funktion:

function getdata ($row,$col) {
//Første række og kolonne har nummer 1
$fp=fopen("filnavn","r");
$count=0;
while (!feof($fp) && $count++<$row) {
// Sålænge der er data, og mindre end 2 rækker har været læst,
// gentages det, som står inde i denne parentes
$line=fgets($fp,4096);
}
fclose ($fp);
$data=explode("|",$line);
return $data[$col+1];
}

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

Ole Moe (09-01-2003)
Kommentar
Fra : Ole Moe


Dato : 09-01-03 15:26

Niels Andersen wrote in dk.edb.internet.webdesign.serverside.php:
> return $data[$col+1];

Skal det ikke være:

return $data[$col-1];

- ellers for du jo nr. 4 og ikke nr. 2?

Ole

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Niels Andersen (09-01-2003)
Kommentar
Fra : Niels Andersen


Dato : 09-01-03 16:28

Ole Moe wrote in <avk0pu$1k4$1@sunsite.dk>:
> Niels Andersen wrote in dk.edb.internet.webdesign.serverside.php:
>> return $data[$col+1];
> Skal det ikke være:
> return $data[$col-1];

Jo. :)

--
Mvh.
Niels Andersen
http://myplace.dk/articles/getpost/?lang=da

Ukendt (09-01-2003)
Kommentar
Fra : Ukendt


Dato : 09-01-03 16:37

On Thu, 09 Jan 2003 16:28:28 +0100, Niels Andersen
<niels-usenet@myplace.dk> wrote:

>Ole Moe wrote in <avk0pu$1k4$1@sunsite.dk>:
>> Niels Andersen wrote in dk.edb.internet.webdesign.serverside.php:
>>> return $data[$col+1];
>> Skal det ikke være:
>> return $data[$col-1];
>
>Jo. :)


Tak tak tak - det virker ))))

Hilsen
Tommy


Lars Dybdahl (09-01-2003)
Kommentar
Fra : Lars Dybdahl


Dato : 09-01-03 20:00

Øv...

Niels Andersen wrote:
> Jeg vil tro at funktionen finder det, den skal finde (så længe linjerne er
> under ca. 1000 bytes lange). Problemet er, at den udskriver det, i stedet
> for at returnere det.

Lars Dybdahl.

--
Freelance programmør
Programmering mod timebetaling

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste