hallo
hoe kan ik het beste een text bestand uitlezen dat ongeveer zo uitziet

1-9-2007|test1|1:0|Hier wat meer info
5-1-2007|test2|1:0|Hier wat meer info
1-3-2007|test3|1:0|Hier wat meer info
6-8-2007|test4|1:0|Hier wat meer info

de gegevens volgorde is
ik wil dus de variable op deze manier hebben
datum|titel|tijd|extra info

en hoe kan ik zorgen dat de tij (de 3de rij word weergegeven als 01:01 in plaats van 1:1
en hoe kan ik ze op volgorde van datum laten uitlezen en laten weergeven

en hoe kan ik de volgende 5 gebeurte nissen uitlezen uit het bestan
alvast bedankt
robert
1. Uitlezen met [php]file[/php]() en vervolgens [php]explode[/php] gebruiken om de verschillende gegevens te scheiden.

2. exploden op de :, vervolgens met [php]sprintf[/php]() de 0 toevoegen en vervolgens weer aan elkaar plakken.

3. Met [php]strtotime[/php]() de datum omzetten naar een timestamp, vervolgens met een array sorteer functie de gegevens sorteren ([php]array_multisort[/php]) en weergeven.

4. Gebruik maken van een loop waarin je de gegevens controleert en weergeeft.

Als met al is het vrij lastig omdat je txt bestanden gebruikt. Het zou veel verstandiger zijn om hier een database voor te gebruiken, al was het maar vanwege de krachtige datum- en tijdfuncties die de database je te bieden heeft. Sorteren en weergeven wordt op die manier veel eenvoudiger...
ok bedankt ik denk dat ik er nu uit kom nu ik de benodigde functies weet
nog 1 vraagje
zou ik nu niet iets van output moeten hebben
in agenda.txt staan die regels die ik hierboven heb gepost maar ik krijg nu alleen een -
<?php

$file = "agenda.txt";
$bestand = file($file);
$stukken = explode("|", $bestand);
echo $stukken['1'];
echo "-";
echo $stukken[1];
?>
Nee, zoals je in de handleiding bij [php]file[/php]() kan lezen geeft deze een array terug, dus moet je die ook als een array behandelen (hint: foreach).

[edit]Overigens is $stukken['1'] niet erg netjes, een iteger hoeft binnen php niet tussen quotes dus gewoon zoals je daar na doet: $stukken[1].[/edit]
explode begint btw bij 0.. dus $stukken[0]
Dat klopt niet Arjan ;-) Een array exploden ([color=#0000bb]$bestand[/color]) levert zover ik weet altijd zo'n array op:
Array
(
    [0] => Array
)
Ik denk dat Robert zoiets wilt:
<?php
	/*
	 * Voorbeeld inhoud van agenda.txt:
1-9-2007|test1|1:0|Hier wat meer info
5-1-2007|test2|1:0|Hier wat meer info
1-3-2007|test3|1:0|Hier wat meer info
6-8-2007|test4|1:0|Hier wat meer info
	 */
	
	$sFile = 'agenda.txt';
	$aRegels = file ( $sFile );
	
	foreach ( $aRegels as $iRegelNummer => $sRegel )
	{
		$aDelen = explode ( '|' , $sRegel );
		/*
		 * print_r ( $aDelen );
		 */
		
		$aTijdDelen = explode ( ':' , $aDelen [ 2 ] );
		
		$iUur = intval ( $aTijdDelen [ 0 ] );
		$iMinuut = intval ( $aTijdDelen [ 1 ] );
		
		$aDatumDelen = explode ( '-' , $aDelen [ 0 ] );
		
		$iDag = intval ( $aDatumDelen [ 0 ] );
		$iMaand = intval ( $aDatumDelen [ 1 ] );
		$iJaar = intval ( $aDatumDelen [ 2 ] );
		
		$iDatumTijd = mktime ( $iUur , $iMinuut , 0 , $iMaand , $iDag , $iJaar );
		
		$aMaanden = array
		(
			'januari' ,
			'februari' ,
			'maart' ,
			'april' ,
			'mei' ,
			'juni' ,
			'juli' ,
			'augustus' ,
			'september' ,
			'oktober' ,
			'november' ,
			'december'
		);
		
		if ( $iMaand >= 1 AND $iMaand <= 12 )
			$sMaand = $aMaanden [ $iMaand - 1 ];
		else
			$sMaand = 'onbekend';
		
		$sDagVdWeek = date ( 'w' , $iDatumTijd );
		$iDagVdWeek = intval ( $sDagVdWeek );
		
		$aDagenVdWeek = array
		(
			'zondag' ,
			'maandag' ,
			'dinsdag' ,
			'woensdag' ,
			'donderdag' ,
			'vrijdag' ,
			'zaterdag'
		);
		
		if ( $iDagVdWeek >= 0 AND $iDagVdWeek <= 6 )
			$sDagVdWeek = $aDagenVdWeek [ $iDagVdWeek ];
		else
			$sDagVdWeek = 'onbekend';
		
		$sDatum = $sDagVdWeek . ' ' . date ( 'd' , $iDatumTijd ) . '  ' . $sMaand . ' ' . date ( 'Y' , $iDatumTijd ) . ' om ' . date ( 'H:s' , $iDatumTijd );
		
		$sTitel = $aDelen [ 1 ];
		
		unset ( $aDelen [ 0 ] );
		unset ( $aDelen [ 1 ] );
		unset ( $aDelen [ 2 ] );
		$sExtraInfo = implode ( '|' , $aDelen );
		
		echo '
			<p>
				<strong>Datum en tijd:</strong> ' . $sDatum . ' <br />
				<strong>Titel:</strong> ' . $sTitel . ' <br />
				<strong>Extra info:</strong> ' . $sExtraInfo . '
			</p>
		';
	}
?>
bedankt allemaal voor jullie reacties en voral henk voor het schrijven van het script zelf was ik nog niet zo ver gekomen
alleen nog een vraagje
aangezien dat script van henk dat niet doet is het meschien makkelijker als het bij het invoegen al gedaan word
hoe kan ik ongeveer zorgen dat de gegevens gelijk op de goede plaats worden ingevoegt zodat de volgorde niet meer bij het uitlezen hoeft te worden bepaalt
hier is het invoegscript zover ik het nu heb
<?php
$filename = 'agenda.txt';

function cijfer($getal){
if ($getal < 10){
if ($getal == 0){return '00';}
if ($getal == 1){return '01';}
if ($getal == 2){return '02';}
if ($getal == 3){return '03';}
if ($getal == 4){return '04';}
if ($getal == 5){return '05';}
if ($getal == 6){return '06';}
if ($getal == 7){return '07';}
if ($getal == 8){return '08';}
if ($getal == 9){return '09';}
}else{
return $getal;
}
}

$datum = cijfer($_POST['dag']).'-'.cijfer($_POST['maand']).'-'.$_POST['jaar'];
$plaats = $_POST['plaats'];
$uur = cijfer($_POST['uur']);
$minuten = cijfer($_POST['minuten']);
$tijd = $uur.':'.$minuten;

$opmerkingen = $_POST['opmerkingen'];
$somecontent = "$datum|$plaats|$tijd|$opmerkingen\n";

// controleren of het bestand schrijfbaar is.
if (is_writable($filename)) {

if (!$handle = fopen($filename, 'a')) {
print "Kan het bestand niet openen ($filename)";
exit;
}

// Schrijf $somecontent naar ons bestand dat we geopend hebben.
if (!fwrite($handle, $somecontent)) {
print "Kan niet schrijven naar bestand ($filename)";
exit;
}

print "Succes, geschreven ($somecontent) naar bestand ($filename)";

fclose($handle);

} else {
print "Het bestand $filename is niet schrijfbaar";

}

?>
ik hoef dus niet persee een heel script
als ik maar al eens funcities heb kan ik weer even voruit
aangezien ik niet vaak met arrays en txt bestanden werk
ik heb hier ook maar al gezorgt dat de gegevens gelijk goed weg worden geschreven dat had ik al verandert voor henk zijn post maar pas na mijn eerdere post

Moderator edit:

Bumpen:
Twee of meer keer achter elkaar in een topic posten heet bumpen.

Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.
Ik snap echt niet wat je bedoelt. Ik snap ook niet waarvoor je script is. Je moet denk ik toch echt wat meer informatie geven en met een concreet probleem komen.
zo als het script nu van henk is en wat ik zelf al heb gemaakt om het bestand uit te lezen leest hij gewoon de gegevens op de volgorde uit zoals ze in het bestand staan
nu zal het wel moglijk zijn om dat via een hele omweg op te vangen en ze op volgorde van de datum te laten zien maar hij lijkt mij makkelijker als ze gelijk op datum worden ingevoegt in het bestand
dus als het bestand er momenteel zo uit ziet

1-1-2007|test1|1:0|Hier wat meer info
2-1-2007|test2|1:0|Hier wat meer info
1-3-2007|test3|1:0|Hier wat meer info
6-8-2007|test4|1:0|Hier wat meer info

en je dan de regel
1-6-2007|test3|1:0|Hier wat meer info
wilt invoegen dat die dan tussen
1-3-2007|test3|1:0|Hier wat meer info
6-8-2007|test4|1:0|Hier wat meer info
word gezet
maar hoe moet ik dat presies aanpakken
hier is mijn script om de gegevens aan het txt bestand toe te voegen
<?php
$filename = 'agenda.txt';

function cijfer($getal){
if ($getal < 10){
if ($getal == 0){return '00';}
if ($getal == 1){return '01';}
if ($getal == 2){return '02';}
if ($getal == 3){return '03';}
if ($getal == 4){return '04';}
if ($getal == 5){return '05';}
if ($getal == 6){return '06';}
if ($getal == 7){return '07';}
if ($getal == 8){return '08';}
if ($getal == 9){return '09';}
}else{
return $getal;
}
}

$datum = cijfer($_POST['dag']).'-'.cijfer($_POST['maand']).'-'.$_POST['jaar'];
$plaats = $_POST['plaats'];
$uur = cijfer($_POST['uur']);
$minuten = cijfer($_POST['minuten']);
$tijd = $uur.':'.$minuten;

$opmerkingen = $_POST['opmerkingen'];
$somecontent = "$datum|$plaats|$tijd|$opmerkingen\n";

// controleren of het bestand schrijfbaar is.
if (is_writable($filename)) {

if (!$handle = fopen($filename, 'a')) {
print "Kan het bestand niet openen ($filename)";
exit;
}

// Schrijf $somecontent naar ons bestand dat we geopend hebben.
if (!fwrite($handle, $somecontent)) {
print "Kan niet schrijven naar bestand ($filename)";
exit;
}

print "Succes, geschreven ($somecontent) naar bestand ($filename)";

fclose($handle);

} else {
print "Het bestand $filename is niet schrijfbaar";

}

?>
ik hoop dat het nu duidelijker is

Reageren