Hallo allemaal,

Nieuw op het forum, en ook nieuw met php.

Ik heb een scriptje dat een textbestand in een tabel zou moeten zetten, en dat is nu juist dat het niet doet.
Het ziet er als volgt uit:

<?
function txttable($bestand)
{
fopen($bestand,'r-');
$txt = fgets($bestand);
echo "<table border='1'> $txt </table>";
fclose($bestand);
}
?>
<?
echo"hier komt test1";
txttable("test1.txt");
?>
<br>
<br>
<?
echo"hier komt test2";
txttable("test2.txt");
?>
<br>
<br>
<?
echo"hier komt test3";
txttable("test3.txt");
?>

Op deze manier komt er alleen hier komt test1 ed,
Maar geen table met daarin de txt uit het opgevraagde textbestand.

Iemand een idee hoe ik het op kan lossen?
Alvast bedankt.

Greetz Jacco
Hallo Jacco,

met de functie fgets lees je maar één regel uit een (tekst)bestand. Als je alle regels wilt uitlezen, moet je een while-loop maken.

Zoiets dus:

<?php
// regels ophalen
$fp = fopen ($bestand, 'r');
$i = 0;

while ($regels[$i] = fgets ($fp, 4096)) {
$i++;
}
?>

Je moet eerst een filepointer maken met:
$fp = fopen enz.

Daarna moet je die filepointer meegeven aan fgets:
fgets ($fp, 4096);

Dat getal 4096 is omdat fgets een tweede argument verwacht waarin je de maximale lengte van een regel opgeeft.

Als je gewoon de hele inhoud van een bestand op het scherm wilt, kun je ook readfile ('text1.txt') gebruiken.
Jan Koehoorn schreef op 23.09.2005 13:31
met de functie fgets lees je maar één regel uit een (tekst)bestand. Als je alle regels wilt uitlezen, moet je een while-loop maken.


Is dit dan niet makkelijker? Dit gebruik ik zelf en het leest de hele file in.

<?php
$fp = fopen($bestand, 'r');
$fileinhoud = fread($fp, filesize($bestand));
fclose($fp);
?>
Hoi Jan,

Bedankt voor je reactie, en ook zo snel.

Ok dat readfile dat werkt inderdaad, maar ik denk dat ik meer aan die while loop heb omdat dan waarschijnlijk iedere nieuwe regel uit het textbestand dan ook in een nieuwe regel in de tabel komt. Bij readfile zet ie gewoon alles naast elkaar heb ik gemerkt.

Maar dan nog kom ik er niet helemaal uit.

<?
$txt = fopen($bestand,'r-');
$i = 0;
while ($regels[$i] = fgets ($txt, 4096))
{
$i++;
}
//dit snap ik allemaal, maar wat moet ie dan echoën?

De $regels ? met of zonder index param.
De $txt ?
En wanneer? in de while loop of erna?

function txttable($bestand)
{
fopen($bestand,'r-');
$txt = fgets($bestand);
echo "<table border='1'> $txt </table>";
fclose($bestand);
}

dat klopt tog nooit...
zover ik weet moet je altijd nog dit doen:

function txttable($bestand)
{
fopen($bestand,'r-');
$txt = fgets($bestand);
echo "<table border='1'><tr><td> $txt </td></tr></table>";
fclose($bestand);
}
@ SanThe:

Bedankt voor je reactie, maar ik zit nu met hetzlefde probleem als met readfile nl. dat de txt uit het bestand niet in regels verdeeld wordt, maardat alle text achter elkaar wordt gezet.

Ik wil het txt bestand dus op dezelfde manier in de tabel hebben als dat het in het txtbestand staat.

En dan kom je waarschijnlijk toch in Jan zijn while loop terrecht.
Want zover ik het begrijp uit de code wordt dan regel voor regel opgehaald, en ik wil het dan zo hebben dan ook regel voor regel in de tabel geplaatst wordt.
fopen($bestand,'r-'); ik weet niet waar de die - vandaan haalt mar dat kan nie hoor moet gewoon r zijn
In het tekstbestand staan waarschijnlijk \n en \r, die zou je dan moeten replacen met <br/> en je hebt een nette tekst.
Jacco schreef op 23.09.2005 13:57

Maar dan nog kom ik er niet helemaal uit.

<?
$txt = fopen($bestand, 'r');
$i = 0;
while ($regels[$i] = fgets ($txt, 4096))
{
$i++;
}
?>
//dit snap ik allemaal, maar wat moet ie dan echoën?


Bijvoorbeeld zo:

<?
$txt = fopen($bestand, 'r');
$i = 0;
echo '<table>';

while ($regels[$i] = fgets ($txt, 4096)) {
echo '<tr><td>';
echo $regels[$i];
echo '</tr></td>';
$i++;
}

echo '</table>';
?>
Kijk Jan die doet het thnxxx.

@Han: had ik ergens uit een discussiegroep, weet niet meer welke, maar die zou een bestand moeten openen met alleen gelegenheid tot lezen.
Maar is inderdaad dat het alleen 'r' moet zijn.

@SanThe: Nee staan er niet in, het zijn namelijk willekeurige txt bestanden met alleen text, geen textbestanden speciaal voor script geschreven zeg maar.

Maar allemaal bedankt voor het meedenken en voor de reacties het werkt nu zoals ik dat wil.

Greets Jacco

Reageren