Ik ben met een "input" bezig om de waarde uit een regel te lezen en dan te wijzigen.
Krijg wel netjes het label te zien en het textvak maar niet de waarde.
Zie momenteel de fout niet.

<div>
<label>naam</label>
<input type="text" $regels = file('config.txt'); substr($regels[0], 13, 2);></input>
</div>

Als ik het van elkaar los haal.

$regels = file('config.txt');
echo substr($regels[0], 13, 2);

Dan krijg ik wel de waarde te zien.

Graag jullie hulp.
Heb het gemaakt naar voorbeeld die je aangaf, krijg nu een witte lege site.

In Notepadqq wat ik gebruik word niet direct een fout aangegeven.


<?php
$file('config.txt');
$current = file_get_contents($file);
//if($_SERVER['REQUEST_METHOD']=="POST")
{
file_put_contents($file,$current['input1'],$current['input2']);
}
else 
{
?>
<form action="" method="post">
<div>
<label>1e naam</label>
<input type="text" name="input1" size="5" value="<?php echo substr($current[0], 13, 2);?>">
	<label>de standaard waarde is 40</label>
</div> 
<div>
<label>2e naam</label>
<input type="text" name="input2" size="5" value="<?php echo substr($current[1], 13, 2);?>">
	<label>de standaard waarde is 65</label>
</div> 
<input type="submit" value="Opslaan" > <br> 
</form>
<?php
}
?>
Dat komt omdat er een aantal dingen niet kloppen.
De wegen naar rome kunnen meerdere zijn:

<?php
$bestand = 'config.txt';

$lines  = @file($bestand);
	$i=1;
	foreach($lines  as $line ){

	$var["line" . $i] = $line;
	$i++;
	}

	extract($var);

if($_SERVER['REQUEST_METHOD']=="POST")
{

	$regel = $_POST['input1'].PHP_EOL;
	$regel .= $_POST['input2'].PHP_EOL;
	
	file_put_contents($bestand, $regel);
}
?>
<form action="" method="post">
<div>
<label>1e naam</label>

<input type="text" name="input1" size="5" value="<?php echo $line1;?>">
    <label>de standaard waarde is 40</label>
</div> 
<div>
<label>2e naam</label>
<input type="text" name="input2" size="5" value="<?php echo $line2; ?>">
    <label>de standaard waarde is 65</label>
</div> 
<input type="submit" value="Opslaan" > <br> 
</form>


Geen idee waarom je een if en else constructie om een formulier heen zou maken.
Maar dat is naar mijn idee grote onzin. Dat is leuk als nog meer gedaan moet worden, maar met 1 formulier posten niet. Immers als het gepost is, dan laat het script het formulier al zien. Het enige wat het doet die eerste if is vrij vertaald:
Als( de server een aanvraag krijgt, en de methode IS POSTEN)
Anders is het altijd ophalen ($_GET) dus dan is er geen else meer nodig want dat gebeurd al...
Hallo Bart,

Ik geloof gelijk dat jou oplossing werkt maar de

<?php echo substr($current[0], 13, 2);?>
?>

is voor mij van groot belang, ik zie in jou voorbeeld niet hoe deze waarde word opgehaald.
In jou voorbeeld haal ik niet uit waarom je substr() wil gebruiken.
Wat ik doe, is gewoon de waarde terug halen uit de regel die is geschreven.
Anders moet je je probleem helemaal uitleggen want dan moet er dus iets heel anders gedaan worden...
Bart,

Ik gebruik voor mijn microcontroller een "config.txt" om bepaalde instellingen via een website te wijzigen, de website en de config files staan op een sd-kaart ik kan alleen gebruik maken van txt of xml files.

Het config.txt file ziet er als volgt uit.

int timer1 = 10; // deze tijd is voor timer 1
int timer2 = 20; // deze tijd is voor timer 2
int timer3 = 30; // deze tijd is voor timer 3
int timer4 = 40; // deze tijd is voor timer 4
int timer5 = 50; // deze tijd is voor timer 5

Nu wil ik dus alleen maar de waarde achter de = zien en deze kunnen wijzigen, vandaar de regel.

<?php echo substr($current[0], 13, 2);?>
Kan je dan niet beter een XML-bestand maken?
Dan kan je ook nog eens een regel tussen voegen (want anders pak je een andere regel...)...

Dus zoiets


<?xml version="1.0" encoding="ISO-8859-1"?>
<config>
 <timer1>10</timer1>
 <timer2>22</timer2>
 <timer7>77</timer7>
 <timer3>33.33</timer3>
 <pass>wachtwoord</pass>
 <file_with_hash>map/dir/hashes.txt</file_with_hash>

</config>
Hallo Eddy,

Aan een xml bestand heb ik wel eens gedacht, heb met mijn microcontroller alleen maar ervaring met het lezen en schrijven naar een .txt file wat weer geschreven word in C++.
Ik zou aan de microcontroller kant ook weer moeten ombouwen naar het .xml gebeuren, dus dat is mijn laatste plan mocht het niet goed gaan met met php en mijn config file.
En wat nu als je een timer wilt verhogen boven de 100? Dan gaat het mis met je substr() omdat deze slechts twee karakters pakt. Wat als je ergens een spatie teveel of te weinig zet? Dit is echt zo foutgevoelig als maar kan zijn...

Ik zou serieus overwegen om meer structuur te geven aan je data, nu is dit een plak tekst zonder betekenis; je zou dit bijvoorbeeld kunnen doen door middel van:
- JSON, XML, CSV of een querystring ofzo (key1=value1&key2=value2 et cetera), of
- alles in een database op te slaan

Of je stopt het in een .ini file, PHP heeft een handige functie om deze weer uit te lezen. Voor al de andere varianten (JSON, XML, CSV, querystring) zijn ook functies beschikbaar om dit proces te vergemakkelijken...

Mogelijkheden te over voor een gestructureerdere aanpak.
Mogelijkheden te over voor een gestructureerdere aanpak.

Helaas niet met een database kan ik niets beginnen, daar kan de microcontroller niet mee overweg ook niet met json.
Dus moet het met txt of xml moeten doen.

En wat nu als je een timer wilt verhogen boven de 100

Dat komt het niet, 65 zal het hoogste worden.

Reageren