Input deel van tekstregel laten uitlezen.
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.
Gewijzigd op 23/01/2016 14:34:18 door Andreas Krale
Alvast bedankt!
Code (php)
Uiteraard moet je nog wel even rekening houden met escaping, zie htmlspecialchars().
Het "config.txt" staat op CHMOD 777 dus dat kan niet het probleem zijn, maar wat is het dan wel.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form action="" method="post">
<?php
$regels = file('config.txt');
?>
<div>
<label>naam</label>
<input type="text" size="5" value="<?php echo substr($regels[0], 13, 2);?>">
</div>
<div>
<label>naam</label>
<input type="text" size="5" value="<?php echo substr($regels[1], 13, 2);?>">
</div>
<input type="submit" value="Opslaan" > <br>
</form>
<?php
$regels = file('config.txt');
?>
<div>
<label>naam</label>
<input type="text" size="5" value="<?php echo substr($regels[0], 13, 2);?>">
</div>
<div>
<label>naam</label>
<input type="text" size="5" value="<?php echo substr($regels[1], 13, 2);?>">
</div>
<input type="submit" value="Opslaan" > <br>
</form>
Graag een tip.
Edit:
Graag in het vervolg [code] en [/code]-tags gebruiken, om de codeblokken.
Dit maakt het geheel beter leesbaarder.
Alvast bedankt.
Dit maakt het geheel beter leesbaarder.
Alvast bedankt.
Gewijzigd op 23/01/2016 16:25:17 door - Ariën -
Je leest alleen nu je waarde uit, en schrijft nog niks weg. Kijk eens naar file_put_contents().
En om de gegevens na het posten uit een inputveld te kunnen halen moet ie wel een name hebben.
- Ariën - op 23/01/2016 15:45:56:
Je leest alleen nu je waarde uit, en schrijft nog niks weg. Kijk eens naar file_put_contents().
Inderdaad met file_input_comtents() ben ik alweer een heel stuk verder.
Alleen maakt het script nu mijn config.txt leeg
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form action="" method="post">
<?php
$text = $regels;
$bestand = 'config.txt';
file_put_contents($bestand, $text);
?>
<div>
<label>naam</label>
<input type="text" size="5" value="<?php echo substr($regels[0], 13, 2);?>">
</div>
<div>
<label>naam</label>
<input type="text" size="5" value="<?php echo substr($regels[1], 13, 2);?>">
</div>
<input type="submit" value="Opslaan" > <br>
</form>
<?php
$text = $regels;
$bestand = 'config.txt';
file_put_contents($bestand, $text);
?>
<div>
<label>naam</label>
<input type="text" size="5" value="<?php echo substr($regels[0], 13, 2);?>">
</div>
<div>
<label>naam</label>
<input type="text" size="5" value="<?php echo substr($regels[1], 13, 2);?>">
</div>
<input type="submit" value="Opslaan" > <br>
</form>
Waarom maakt dit script het bestand leeg??????????
Je moet namelijk wel eerst netjes controleren of je formulier is verstuurd:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if($_SERVER['REQUEST_METHOD']=="POST")
{
$text = $regels;
$bestand = 'config.txt';
file_put_contents($bestand, $text);
}
else
{
?>
<form action="" method="post">
<div>
<label>1e naam</label>
<input type="text" size="5" value="<?php echo substr($regels[0], 13, 2);?>">
</div>
<div>
<label>2e naam</label>
<input type="text" size="5" value="<?php echo substr($regels[1], 13, 2);?>">
</div>
<input type="submit" value="Opslaan" > <br>
</form>
<?php
}
?>
if($_SERVER['REQUEST_METHOD']=="POST")
{
$text = $regels;
$bestand = 'config.txt';
file_put_contents($bestand, $text);
}
else
{
?>
<form action="" method="post">
<div>
<label>1e naam</label>
<input type="text" size="5" value="<?php echo substr($regels[0], 13, 2);?>">
</div>
<div>
<label>2e naam</label>
<input type="text" size="5" value="<?php echo substr($regels[1], 13, 2);?>">
</div>
<input type="submit" value="Opslaan" > <br>
</form>
<?php
}
?>
Of heb ik het nu niet goed begrepen????
Dan kan je ze oproepen met: $_POST['naam1'] en $_POST['naam2']
Gewijzigd op 23/01/2016 17:47:10 door - Ariën -
Nu heb ik er dit van gemaakt, helaas geen input in config.txt gewoon weer leeg.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$regels = file('config.txt');
if($_SERVER['REQUEST_METHOD']=="POST")
{
file_put_contents($_POST['input1'],$_POST['input2']);
}
else
{
?>
<form action="" method="post">
<div>
<label>1e naam</label>
<input type="text" name="input1" size="5" value="<?php echo substr($regels[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($regels[1], 13, 2);?>">
<label>de standaard waarde is 65</label>
</div>
<input type="submit" value="Opslaan" > <br>
</form>
<?php
}
?>
$regels = file('config.txt');
if($_SERVER['REQUEST_METHOD']=="POST")
{
file_put_contents($_POST['input1'],$_POST['input2']);
}
else
{
?>
<form action="" method="post">
<div>
<label>1e naam</label>
<input type="text" name="input1" size="5" value="<?php echo substr($regels[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($regels[1], 13, 2);?>">
<label>de standaard waarde is 65</label>
</div>
<input type="submit" value="Opslaan" > <br>
</form>
<?php
}
?>
Ik waardeer het heel erg dat je mij op het goede pad brengt, alvast mijn grote dank.
Gewijzigd op 23/01/2016 18:13:49 door Andreas Krale
Zie ook Example #1: http://php.net/manual/en/function.file-put-contents.php
In Notepadqq wat ik gebruik word niet direct een fout aangegeven.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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
}
?>
$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
}
?>
De wegen naar rome kunnen meerdere zijn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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>
$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...
Gewijzigd op 24/01/2016 09:56:46 door Bart V B
Ik geloof gelijk dat jou oplossing werkt maar de
is voor mij van groot belang, ik zie in jou voorbeeld niet hoe deze waarde word opgehaald.
Gewijzigd op 24/01/2016 12:27:05 door Andreas Krale
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...
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.
Code (php)
1
2
3
4
5
2
3
4
5
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
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.
Gewijzigd op 24/01/2016 12:27:40 door Andreas Krale
Dan kan je ook nog eens een regel tussen voegen (want anders pak je een andere regel...)...
Dus zoiets
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.
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.
Gewijzigd op 24/01/2016 16:51:38 door Thomas van den Heuvel
Quote:
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.
Quote:
En wat nu als je een timer wilt verhogen boven de 100
Dat komt het niet, 65 zal het hoogste worden.
Gewijzigd op 24/01/2016 17:31:01 door Andreas Krale