/ 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
Tekstfil + array
Fra : Mads Madsen


Dato : 09-01-03 15:21

Hej gruppe
Er det muligt at rette et sted i nedenstående kode således at den ikke tager
den sidste linie med fra tekstfilen?

Hilsen Mads

<?
$adr ="http://";
$fil = fopen("tekstfil", "r");
while (!feof($fil)){
$streng = fgets($fil, 4096);
$brugere = explode("|", $streng);

echo "<TR>";
echo "<TD>" . ($brugere[0]) . "</TD>\n";
echo "<TD>";
echo "<A HREF='mailto:$brugere[2]'>$brugere[1]</A> ";
echo "</TD>";
echo "<TD><center>" . ($brugere[3]) . "</center></TD>\n";
echo "<TD>";
if ($brugere[4] == $adr){echo "<center><img
src=images/mellemrum.gif></center>";}else{echo "<A HREF='$brugere[4]'
target='_blank'><center><img border='0'
src=images/hjemmeside.gif></center></A>";}
echo "</TD>";
echo "</TR>\n";

}
fclose($fil);
?>



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


Dato : 09-01-03 15:44

Følgende er ikke så pænt, men det skulle virke!

<?
$adr ="http://";
$fil = fopen("tekstfil", "r");
$index = 0;
while (!feof($fil)){
$index = $index +1;
}
for($i = 0; $i > $index; $i++){
$streng = fgets($fil, 4096);
$brugere = explode("|", $streng);

echo "<TR>";
echo "<TD>" . ($brugere[0]) . "</TD>\n";
echo "<TD>";
echo "<A HREF='mailto:$brugere[2]'>$brugere[1]</A> ";
echo "</TD>";
echo "<TD><center>" . ($brugere[3]) . "</center></TD>\n";
echo "<TD>";
if ($brugere[4] == $adr){echo "<center><img
src=images/mellemrum.gif></center>";}else{echo "<A HREF='$brugere[4]'
target='_blank'><center><img border='0'
src=images/hjemmeside.gif></center></A>";}
echo "</TD>";
echo "</TR>\n";

}
fclose($fil);
?>


"Mads Madsen" <mazmazen@hotmail.com> wrote in message
news:3e1d8534$0$231$edfadb0f@dread16.news.tele.dk...
> Hej gruppe
> Er det muligt at rette et sted i nedenstående kode således at den ikke
tager
> den sidste linie med fra tekstfilen?
>
> Hilsen Mads
>
> <?
> $adr ="http://";
> $fil = fopen("tekstfil", "r");
> while (!feof($fil)){
> $streng = fgets($fil, 4096);
> $brugere = explode("|", $streng);
>
> echo "<TR>";
> echo "<TD>" . ($brugere[0]) . "</TD>\n";
> echo "<TD>";
> echo "<A HREF='mailto:$brugere[2]'>$brugere[1]</A> ";
> echo "</TD>";
> echo "<TD><center>" . ($brugere[3]) . "</center></TD>\n";
> echo "<TD>";
> if ($brugere[4] == $adr){echo "<center><img
> src=images/mellemrum.gif></center>";}else{echo "<A HREF='$brugere[4]'
> target='_blank'><center><img border='0'
> src=images/hjemmeside.gif></center></A>";}
> echo "</TD>";
> echo "</TR>\n";
>
> }
> fclose($fil);
> ?>
>
>



Mads Madsen (09-01-2003)
Kommentar
Fra : Mads Madsen


Dato : 09-01-03 16:13

"Trux" <trux@nork.auc.dk> skrev i en meddelelse
news:avk1rd$btn$1@sunsite.dk...
> Følgende er ikke så pænt, men det skulle virke!
>
> <?
> $adr ="http://";
> $fil = fopen("tekstfil", "r");
> $index = 0;
> while (!feof($fil)){
> $index = $index +1;
> }
> for($i = 0; $i > $index; $i++){
> $streng = fgets($fil, 4096);
> $brugere = explode("|", $streng);
>
> echo "<TR>";
> echo "<TD>" . ($brugere[0]) . "</TD>\n";
> echo "<TD>";
> echo "<A HREF='mailto:$brugere[2]'>$brugere[1]</A> ";
> echo "</TD>";
> echo "<TD><center>" . ($brugere[3]) . "</center></TD>\n";
> echo "<TD>";
> if ($brugere[4] == $adr){echo "<center><img
> src=images/mellemrum.gif></center>";}else{echo "<A HREF='$brugere[4]'
> target='_blank'><center><img border='0'
> src=images/hjemmeside.gif></center></A>";}
> echo "</TD>";
> echo "</TR>\n";
>
> }
> fclose($fil);
> ?>

Hej igen
Jeg får følgende fejlmelding:
Fatal error: Maximum execution time of 30 seconds exceeded in
C:\apache\htdocs\test.php on line 21
Linie 21 svarer til linie 6 i dit forslag altså: $index = $index +1;

Hilsen Mads



Mads Madsen (09-01-2003)
Kommentar
Fra : Mads Madsen


Dato : 09-01-03 16:18

"Trux" <trux@nork.auc.dk> skrev i en meddelelse
news:avk1rd$btn$1@sunsite.dk...
> Følgende er ikke så pænt, men det skulle virke!
>
> <?
> $adr ="http://";
> $fil = fopen("tekstfil", "r");
> $index = 0;
> while (!feof($fil)){
> $index = $index +1;
> }
> for($i = 0; $i > $index; $i++){
> $streng = fgets($fil, 4096);
> $brugere = explode("|", $streng);
>
> echo "<TR>";
> echo "<TD>" . ($brugere[0]) . "</TD>\n";
> echo "<TD>";
> echo "<A HREF='mailto:$brugere[2]'>$brugere[1]</A> ";
> echo "</TD>";
> echo "<TD><center>" . ($brugere[3]) . "</center></TD>\n";
> echo "<TD>";
> if ($brugere[4] == $adr){echo "<center><img
> src=images/mellemrum.gif></center>";}else{echo "<A HREF='$brugere[4]'
> target='_blank'><center><img border='0'
> src=images/hjemmeside.gif></center></A>";}
> echo "</TD>";
> echo "</TR>\n";
>
> }
> fclose($fil);
> ?>

Hej igen
Lille rettelse ikke linie 21 men 20
Jeg får følgende fejlmelding:
Fatal error: Maximum execution time of 30 seconds exceeded in
C:\apache\htdocs\test.php on line 20
Linie 20 svarer til linie 6 i dit forslag altså: while (!feof($fil)){

Hilsen Mads




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


Dato : 09-01-03 20:24

Trux wrote in <avk1rd$btn$1@sunsite.dk>:
>> Er det muligt at rette et sted i nedenstående kode således at den ikke
>> tager den sidste linie med fra tekstfilen?

Sker der noget specielt i den linje? Hvis det fx. er en blank linje, så er
det nemmere blot at ignorere blanke linjer. I filer med en blank linje til
sidst ser jeg af og til at der pludselig dukker flere blanke linjer op...

> while (!feof($fil)){
> $index = $index +1;
> }

Denne løkke kører indtil enden af filen er nået. Men da der ikke sker noget,
som skaber bevægelse i filen, bliver lykken ikke stoppet før time_limit er
nået.

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

Mads Madsen (09-01-2003)
Kommentar
Fra : Mads Madsen


Dato : 09-01-03 22:37

> Sker der noget specielt i den linje? Hvis det fx. er en blank linje, så er
> det nemmere blot at ignorere blanke linjer. I filer med en blank linje til
> sidst ser jeg af og til at der pludselig dukker flere blanke linjer op...

Hej igen
Nu prøver jeg at udpensle mit problem.
Jeg har lavet et script der gør at brugere kan tilmelde sig på en hjemmeside
med forskellige data og en admin-del hvor man kan slette dem igen.
På tilmelde-delen er det lavet sådan at brugernes data bliver exploderet ind
i en tabel hvor brugerne automatisk bliver sorteret i
værelsesnummerorden(javascript).
Alt fungere som det skal på nær---
Nu kommer problemet:
Nå man sletter den allersidste bruger går der ged i tabelsystemet fordi nå
man sletter den sidste bruger sletter man den sidste linie i datafilen på
nær linieskiftet og derfor går der ged i tabelsystemet - altså på
bruger-delen
Det vil jeg gerne have fundet en løsning på håber du/i
forstår ellers skriv.
Alt dette kan ses i funktion her:

Bruger-delen:
http://basen.frip.dk/brugere.php

Admin/slette-delen
http://basen.frip.dk/slet.php

Hele scriptet kan hentes her og ellers frit afbenyttes
http://basen.frip.dk/script.rar

Hilsen Mads




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


Dato : 10-01-03 12:08

Mads Madsen wrote in <3e1deb49$0$218$edfadb0f@dread16.news.tele.dk>:
> Nå man sletter den allersidste bruger går der ged i tabelsystemet fordi nå
> man sletter den sidste bruger sletter man den sidste linie i datafilen på
> nær linieskiftet og derfor går der ged i tabelsystemet

Min tankegang er så: Hvor er den sidste linje anderledes end de andre?
Hvad står der helt præcist i filen? Hvorfor går der ged i tabelsystemet?

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

Mads Madsen (10-01-2003)
Kommentar
Fra : Mads Madsen


Dato : 10-01-03 12:25


"Niels Andersen" <niels-usenet@myplace.dk> skrev i en meddelelse
news:7QxT9.32965$Hl6.3452517@news010.worldonline.dk...
> Mads Madsen wrote in <3e1deb49$0$218$edfadb0f@dread16.news.tele.dk>:
> > Nå man sletter den allersidste bruger går der ged i tabelsystemet fordi

> > man sletter den sidste bruger sletter man den sidste linie i datafilen

> > nær linieskiftet og derfor går der ged i tabelsystemet
>
> Min tankegang er så: Hvor er den sidste linje anderledes end de andre?
> Hvad står der helt præcist i filen? Hvorfor går der ged i tabelsystemet?
Hej
Nå man sletter den sidste/nederste bruger http://basen.frip.dk/slet.php
sletter den ikke det sidste linieskifte og dermed ser der ud som om der er
en linie mere og derfor bliver der genereret en linie extra i tabellen men
der kommer jo ingen oplysninger i den.
Bare prøv at slette den nederste bruger http://basen.frip.dk/slet.php og se
derefter http://basen.frip.dk/brugere.php så ser der ikke godt ud

Hilsen Mads



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


Dato : 10-01-03 12:38

Mads Madsen wrote in <3e1ead5f$0$134$edfadb0f@dread16.news.tele.dk>:
>> Min tankegang er så: Hvor er den sidste linje anderledes end de andre?
> Nå man sletter den sidste/nederste bruger http://basen.frip.dk/slet.php
> sletter den ikke det sidste linieskifte

Det kunne man vælge at gøre noget ved.

>> Hvad står der helt præcist i filen?

>> Hvorfor går der ged i tabelsystemet?
> og dermed ser der ud som om der er en linie mere

Nemt: Ignorer tomme linjer.
Ca. i starten af et loop har du sikkert en variabel, som indeholder den
komplette linje. Du kan du fx. indsætte dette:
if (empty($linje)) continue;
"continue" springer over resten af loopen, og starter derefter forfra. Så
bliver tomme linjer ignoreret.

Jeg vil dog ikke love at empty() er den rigtige metode, jeg kan ikke lige
huske hvad den siger til strengen "\n" og "\r\n", men ellers kan man fx.
gøre sådan her:
if (strlen(trim($linje))==0) continue;
Den fjerne alle whitespace tegn i starten og slutningen af variablen (dermed
også linjeskift), og så tæller den hvor mange tegn der er tilbage. Hvis der
ikke er nogen, må det være en tom linje.

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

Mads Madsen (10-01-2003)
Kommentar
Fra : Mads Madsen


Dato : 10-01-03 14:10

> Jeg vil dog ikke love at empty() er den rigtige metode, jeg kan ikke lige
> huske hvad den siger til strengen "\n" og "\r\n", men ellers kan man fx.
> gøre sådan her:
> if (strlen(trim($linje))==0) continue;

1000 tak det virker

Hilsen Mads




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


Dato : 10-01-03 15:47

On Fri, 10 Jan 2003 14:10:03 +0100, "Mads Madsen"
<mazmazen@hotmail.com> wrote:

>> Jeg vil dog ikke love at empty() er den rigtige metode, jeg kan ikke lige
>> huske hvad den siger til strengen "\n" og "\r\n", men ellers kan man fx.
>> gøre sådan her:
>> if (strlen(trim($linje))==0) continue;
>
>1000 tak det virker
>
>Hilsen Mads
>
>


Hej Mads
Har dwl dine scripts - ser nyttigt ud
Men......
I hvilke script og hvor har du så indsat linen:
if (strlen(trim($linje))==0) continue;

så det hele spiller?

Venligst
Tommy


Mads Madsen (10-01-2003)
Kommentar
Fra : Mads Madsen


Dato : 10-01-03 19:11

> Hej Mads
> Har dwl dine scripts - ser nyttigt ud
> Men......
> I hvilke script og hvor har du så indsat linen:
> if (strlen(trim($linje))==0) continue;
>
> så det hele spiller?
>
> Venligst
> Tommy

Hej Tommy
Du skal indsætte linien efter:
$streng = fgets($fil, 4096);
og rette i if (strlen(trim($linje))==0) continue;
$linie=$streng
i brugere.php

Hilsen Mads
PS. Må man se din udgave af scriptet når det bliver lagt ud?
Det kunne jo være du havde nogle ekstra idéer eller udvidelser.




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


Dato : 10-01-03 19:44

On Fri, 10 Jan 2003 19:10:45 +0100, "Mads Madsen"
<mazmazen@hotmail.com> wrote:

>> Hej Mads
>> Har dwl dine scripts - ser nyttigt ud
>> Men......
>> I hvilke script og hvor har du så indsat linen:
>> if (strlen(trim($linje))==0) continue;
>>
>> så det hele spiller?
>>
>> Venligst
>> Tommy
>
>Hej Tommy
>Du skal indsætte linien efter:
>$streng = fgets($fil, 4096);
>og rette i if (strlen(trim($linje))==0) continue;
>$linie=$streng
>i brugere.php
>
>Hilsen Mads
>PS. Må man se din udgave af scriptet når det bliver lagt ud?
> Det kunne jo være du havde nogle ekstra idéer eller udvidelser.
>
>

Tak - ja nu spiller den.
Gir dig et praj når den er klar til beskuelse
Hilsen
Tommy


Thomas Lindgaard (11-01-2003)
Kommentar
Fra : Thomas Lindgaard


Dato : 11-01-03 18:17

Hejsa

"Mads Madsen" <mazmazen@hotmail.com> wrote in news:3e1d8534$0$231
$edfadb0f@dread16.news.tele.dk:

> while (!feof($fil)){
   [snip noget kode]
> }
> fclose($fil);

Bare lige en lille kommentar - personligt synes jeg at det er lettere at
rende en fil igennem med file():

foreach (file('fil.txt') as $line)
{
if ( strlen(trim($line)) )
{
// Gør noget
}
}

Mvh.
/Thomas

Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408538
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste