echo a specific line of a txt file

Status
Niet open voor verdere reacties.

Stefanos1990

Gebruiker
Lid geworden
26 jul 2007
Berichten
61
hoi,

ik ben pas begonnen met werken in php, en ik snap iets niet.

op een site (http://www.w3schools.com/php/php_file.asp) staat deze code:
Code:
<?php
$file = fopen("welcome.txt", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached
while(!feof($file))
  {
  echo fgets($file). "<br />";
  }
fclose($file);
?>

als ik dan bv een tekstfile heb, met daarin 3 regels:
regel 1
regel 2
regel 3

hoe kan ik er dan voor zorgen dat ik alleen "regel 2"
op de pagina te zien krijg. ipv alledrie?

dit zal wel een hele simpele vraag zijn, maar ik kon nergens echt antwoord erop vinden.
 
Waarschijnlijk helpt dit
PHP:
// Welke bestand moeten we doorzoeken?
$bestand = "welcome.txt";
// Welke regel wil je?
$regel = 3;

$lines = file($bestand);
echo $lines[$regel-1];
Hoewel ik niet zeker ben van de laatste regel of dat wel gaat werken...
 
Laatst bewerkt:
zodra ik php weer aan de praat heb ga ik het testen :P
php doet het niet meer sinds ik asp heb geinstalleerd :P
 
Meteen weer verwijderen :p

Je zou ook gebruik kunnen maken van USB-webserver, die kun je gewoon opstarten en gebruiken. Niks geen installatie ;)
 
ik had eerst gewoon php geinstalleerd en daar had ik helemaal geen problemen mee.
maar aangezien asp officieel niet werkt op xp home heeft het nogal wat problemen veroorzaakt. als die usb webserver ook met asp zou werken zou ik dat gebruiken.
maarjah, nu php niet meer werkt toch maar eens naar kijken dan.
 
als die usb webserver ook met asp zou werken zou ik dat gebruiken.

Helaas, hij ondersteunt het volgende:
Code:
# Apache 2.2.0 (Win32)
# MySQL 5.0
# PHP 5.1.6
# PHPMyAdmin 2.9.0-rc1
# Status screen

    * Status Apache
    * Status MySQL
    * Apache stop/start
    * MySQL stop/start

# Quick menu

    * Open localhost
    * Open rootmap
    * Go to PHPMyAdmin
    * View PHP info

# Easy configuration screen

    * Smtp settings
    * Apache port settings
    * MySQL port settings
    * Language settings
 
jah, dat had ik al gezien op de site ;)
maar ik ben het toch eens aan het installeren, het klinkt wel interessant.
en leuke software gadgets zijn altijd leuk :P

edit: unzippen bedoel ik :P ;)
 
Laatst bewerkt:
die usb webserver werkt geweldig :D
waarom wist ik dit niet voordat ik php handmatig had geinstalleerd :D
 
ik moet helaas een deel van mijn enthausiasme inleveren.
is het goed als we het hier over usb server hebben of moet ik dan een nieuw topic beginnen?
kheb namelijk nog wat problemen/vragen.
 
Ligt aan de vraag, heeft die met PHP te maken of niet? Zo niet dan is het handiger om een nieuwe topic aan te maken.

Heb je het stukje code al geprobeerd?
 
ik denk dat ik een nieuwe topic dan maak.
ik heb de code nog niet uitgeprobeerd.
de enige php code die ik usb webserver tot nu heb kunnen laten uitvoeren is de phpinfo code.
bij de rest loopt apache vast.
ik start ff een nieuw topic hierover.
 
ik heb weer iets van php aan de praat (ik weet niet hoe het komt, als ik naar localhost ga kom ik gewoon in de root, terwijl ik voor zover ik weet zowel de gewone apache monitor als de usb webserver uit heb staan :p maarjah)

en de code werkt perfect, heel erg bedankt :)
 
er is nog iets dat ik niet snap, ik heb dus het script een beetje aangepast, en het is nu:

Code:
<?php
$bestandx = "mappen.txt";
$regelx = 2;
$linesx = file($bestandx);
$map = $linesx[$regelx-1];

$bestand = "C:/apache/php/" . $map . "/tekst.txt";
$regel = 1;

$lines = file($bestand);
echo $lines[$regel-1]; 
?>

in mappen.txt staat het volgende:
Code:
map1
map2

geen probleem.

maar dan...

als ik in mijn php bestand de volgende waarde verander:
$regelx = 2;
in $regelx = 1;
dan werkt het niet meer.
maar als ik in mappen.txt de tweede regel weghaal werkt het wel.
conclusie: het werkt alleen als ik de laatste regel oproep uit mappen.txt

hoe zorg ik ervoor dat het ook werkt als er regels onder staan?
 
PHP:
<?php
// Welke bestand moeten we doorzoeken?
$bestandx = "mappen.txt";
// Welke regel wil je?
$regelx = 3;

$linesx = file($bestandx);
$map = $linesx[$regelx-1]; 
//Controle op juiste map:
echo 'De volgende map is geselecteerd: '. $map .'<br />';
$bestand = "$map/tekst.txt";

$regel = 1;
$lines = file($bestand);
echo 'De '. $regel .'e regel is: '. $lines[$regel-1];
?>
Niet veel aan veranderd maar het kan wat duidelijkheid geven. Controleer even of je de juiste regels krijgt. Deze worden nu weergegeven wanneer je de pagina opvraagt.
 
met de variabele $regelx = 3;
is dit de output:
De volgende map is geselecteerd: map3
De 1e regel is: tekst 3

bij $regelx = 2;
is het dit:
De volgende map is geselecteerd: map2

Warning: file(map2 /tekst.txt) [function.file]: failed to open stream: Invalid argument in C:\Documents and Settings\Stefanos1990\Mijn documenten\mijn websites\apache\test.php on line 14
De 1e regel is:
 
Laatst bewerkt:
Weet je zeker dat er een map2 bestaat? en heeft die ook wel een bestandje genaamd tekst.txt?
 
ik weet het zeker, en map 2 en 3 zijn exacte kopieen van map1, met alleen een gewijzigde inhoud van het bestand tekst.txt
 
Laatst bewerkt:
Probeer het anders eens met een array in plaats van het bestandje mappen.txt

PHP:
$mappen_array("map1", "map2", "map3");

// Welke map wil je? (Een array begint bij 0)
$map = $mappen_array[0]; //Geeft map1

//Controle
echo 'De volgende map is geselecteerd: '. $map .'<br />';
// Welke bestand moeten we doorzoeken?
$bestand = $map ."/tekst.txt";
// Welke regel wil je?
$regel = 3;

$lines = file($bestand);
echo $lines[$regel-1];
 
Oke oke, maar het het principe is eigenlijk hetzelfde... de functie file(); geeft namelijk een array terug...

PHP:
// Welke bestand moeten we doorzoeken? 
$bestandx = "mappen.txt"; 
// Welke regel wil je? 
$regelx = 3; 

$linesx = file($bestandx); 
$map = $linesx[$regelx-1]; 

//Controle van mappen.txt
foreach($linesx AS $val) {
  echo $val .'<br />';
}

//Controle
echo 'De volgende map is geselecteerd: '. $map .'<br />';
// Welke bestand moeten we doorzoeken?
$bestand = $map ."/tekst.txt";
// Welke regel wil je?
$regel = 3;

$lines = file($bestand);
echo $lines[$regel-1];

Als het goed is krijg je nu ook een lijstje van mappen.txt klopt die met wat er in staat?
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan