AnaXyd Skrevet 17. desember 2007 Del Skrevet 17. desember 2007 (endret) Heisann! Driver å lager meg noen enkle nyhetsgreier på siden min, og jeg har ett arkiv(en php fil) med alle nyhetene i: <p>6 » <a href="nyheter.php?id=artikkel7">Les mer</a></p> <p>5 » <a href="nyheter.php?id=artikkel5">Les mer</a></p> <p>4 » <a href="nyheter.php?id=artikkel4">Les mer</a></p> <p>3 » <a href="nyheter.php?id=artikkel3">Les mer</a></p> <p>2 » <a href="nyheter.php?id=artikkel2">Les mer</a></p> <p>1 » <a href="nyheter.php?id=artikkel1">Les mer</a></p> Så skal jeg vise nyhetene på forsiden, men vil kun inkludere de 5 øverste. Hvordan gjør jeg dette? Setter pris på svar.. Endret 17. desember 2007 av AnaXyd Lenke til kommentar
grimjoey Skrevet 17. desember 2007 Del Skrevet 17. desember 2007 (endret) $filnavn = 'bane/fil.php'; $linjer = 5; $news = ''; $f = fopen($filnavn, 'r'); while ($linjer) { $news .= fgets($f); $linjer--; } fclose($f); echo $news; alternativt: $filnavn = 'bane/fil.php'; $start = 0; // 0 er første linje $slutt = 5; $linjer = $slutt - $start; $f = fopen($filnavn, 'r'); while ($start) { fgets($f); $start--; } while ($linjer) { echo fgets($f); $linjer--; } fclose($f); Endret 17. desember 2007 av grimjoey Lenke til kommentar
AnaXyd Skrevet 17. desember 2007 Forfatter Del Skrevet 17. desember 2007 (endret) Takk! Det funket med en gang.. EDIT: Bare en ting som jeg burde få fikset, og det er at det blir litt rotete i koden i ferdigformat: <p>Alpakkatrekkene er nå på lager! » <a href="news.php?id=artikkel8">Les mer</a></p> <p>Regionsmessa er like rundt hjørnet! » <a href="news.php?id=artikkel7">Les mer</a></p> <p>Putene ankommet, stand bygges og messe igang! » <a href="news.php?id=artikkel6">Les mer</a></p> <p>TendoUB skal på Hadelandsmessa! » <a href="news.php?id=artikkel5">Les mer</a></p> <p>TendoUB har vært på syretest » <a href="news.php?id=artikkel4">Les mer</a></p> <br /> Veldig mye opprom som skaper litt uryddighet... Endret 17. desember 2007 av AnaXyd Lenke til kommentar
grimjoey Skrevet 17. desember 2007 Del Skrevet 17. desember 2007 Jeg endret koden noen ganger. Slik den er nå skal den inkludere nøyaktig slik det står i filen. (Jeg hadde en linjeskift ekstra mellom hver linje i starten) Den første koden henter fra starten av fila. Den andre koden kan hoppe over en bit. fint hvis du vil hente linje 17 til linje 34 for eksempel. Lenke til kommentar
AnaXyd Skrevet 18. desember 2007 Forfatter Del Skrevet 18. desember 2007 Se her ja.. Den siste fungerte mye bedre.. Takk skal du ha! Du laget den selv? Lenke til kommentar
grimjoey Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 Ja. Kan godt skrive en forklaring på koden hvis du ønsker å lære. Lenke til kommentar
BigJackW Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 (endret) Grimjoey: Du vet at while()-løkker ikke skal brukes til dette? Det er dette vi har for() til! Oppdatert kode, med forklaringer: <?php /* * Filen som teksten skal hentes fra. */ $file = 'bane/til/filen/som/skal/lese.php'; /* * Antall linjer som skal hentes. */ $lines = 5; /* * Åpne filen som er angit i $file, med modusen "Åpne kun for lesing med pekeren på begynnelsen av filen". */ $f = fopen($file, 'r'); /* * Løkken skal kjøres så lenge $i er mindre eller lik $lines (5). * For hver "runde" leggse det til 1 på variabelen $i, samt en ny "linje" i * variabelen $news. Om du har punktum forran likhetstegnet vil ikke * det nåværende innholdet bli overskrevet av det nye. Det nye vil bare bli lagt til. * Grunn til at man gjør det slik i stede bare for echo/print inni løkker er at siden vil bli * betydelig treger etter hvert som innholdet blir større; echo/print inni løkker => fy fy. */ for ($i = 1; $i <= $lines; $i++) { $news .= fgets($f); } /* * Stenge filen for lesing. Denne er strengt tatt ikke nødvendig da * php stenger filen selv når den er ferdig med å kjøre scriptet. */ fclose($f); /* * Printe ut innholdet i $news; */ echo $news; ?> Endret 19. desember 2007 av BigJackW Lenke til kommentar
grimjoey Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 (endret) kan du forklare hvorfor? edit: $antall = 5; while($antall) { $antall--; } gjør det samme som: $antall = 5; for($i = 0, $i < $antall, $i++) { } men while gjør det trolig raskere og krever kun en variabel (bruker mindre minne). virker sikkert ubetydlig, men jeg liker å gjøre koden min så effektiv som overhode mulig. Endret 19. desember 2007 av grimjoey Lenke til kommentar
BigJackW Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 Godt mulig at while er raskere enn for-løkker, men dette vil være minimalt (umerkbart). Lenke til kommentar
grimjoey Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 (endret) <html><body><pre> <?php $t = microtime(true); $antall = (int)$_GET['antall']; while ($antall--) { } $t = microtime(true) - $t; $tt = microtime(true); $antall = (int)$_GET['antall']; for($i = 0; $i < $antall; $i++) { } $tt = microtime(true) - $tt; echo 'while: '.$t."\n".'for: '.$tt; ?> </pre></body></html> http://localhost/test/whilefor.php?antall=99999999 >> while: 5.1529901027679 for: 9.3671061992645 edit: endret: while ($antall) { $antall--; } til: while ($antall--) { } resultat: while: 3.8344738483429 for: 9.1322040557861 med andre ord mer en dobbelt så rask, selv om det er snakk om sekunder og ekstremt mange iterasjoner. du har et godt poeng angående echo i loop da. Endret 19. desember 2007 av grimjoey Lenke til kommentar
BigJackW Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 (endret) Glemt det. Dreit meg ut, glemte ?antall=xx Men denne forskjeller er så umerkbar at den ikke er vits å ta hensyn til. Si meg når kjører du en løkke 100 mill ganger? Om du hadde kjørt den opptill så mange ganger så skal jeg være enig med deg i at while ville vært bedre. Min mening er man bruker for() til slike ting som f.eks. problemet til trådstarter, og while til å hente all data fra f.eks. MySQL (mysql_fetch_object() osv.) Endret 19. desember 2007 av BigJackW Lenke til kommentar
grimjoey Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 (endret) interesant. får du det samme forholdet etter gjentatte kjøringer? Si meg når kjører du en løkke 100 mill ganger? hver gang jeg skal gjøre et poeng av hvorfor jeg skriver kode slik jeg gjør. Endret 19. desember 2007 av grimjoey Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå