Input deel van tekstregel laten uitlezen.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Andreas Krale

Andreas Krale

23/01/2016 14:16:25
Quote Anchor link
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.
Gewijzigd op 23/01/2016 14:34:18 door Andreas Krale
 
PHP hulp

PHP hulp

24/12/2024 17:24:18
 
- Ariën  -
Beheerder

- Ariën -

23/01/2016 14:21:56
Quote Anchor link
Zou je de titel van het topic graag willen verduidelijken?

Alvast bedankt!
 
Ben van Velzen

Ben van Velzen

23/01/2016 14:22:48
Quote Anchor link
Serieus? Zie je de fout echt niet? Zucht.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$regels
= file('config.txt');
?>

<div>
<label>naam</label>
<input type="text" value="<?php echo substr($regels[0], 13, 2);?>">
</div>


Uiteraard moet je nog wel even rekening houden met escaping, zie htmlspecialchars().
 
Andreas Krale

Andreas Krale

23/01/2016 15:34:16
Quote Anchor link
Oke ik heb het werkend leest nu netjes de waarde uit kan de waarde wijzigen maar bij het opslaan krijg ik de oude waarde weer en in de "config.txt" staat ook de oude waarde.
Het "config.txt" staat op CHMOD 777 dus dat kan niet het probleem zijn, maar wat is het dan wel.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


Graag een tip.
Edit:
Graag in het vervolg [code] en [/code]-tags gebruiken, om de codeblokken.
Dit maakt het geheel beter leesbaarder.
Alvast bedankt.
Gewijzigd op 23/01/2016 16:25:17 door - Ariën -
 
- Ariën  -
Beheerder

- Ariën -

23/01/2016 15:45:56
Quote Anchor link
Je leest alleen nu je waarde uit, en schrijft nog niks weg. Kijk eens naar file_put_contents().
 
- SanThe -

- SanThe -

23/01/2016 16:27:42
Quote Anchor link
En om de gegevens na het posten uit een inputveld te kunnen halen moet ie wel een name hebben.
 
Andreas Krale

Andreas Krale

23/01/2016 16:47:36
Quote Anchor link
- 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)
PHP script in nieuw venster Selecteer het PHP script
1
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>


Waarom maakt dit script het bestand leeg??????????
 
- Ariën  -
Beheerder

- Ariën -

23/01/2016 16:51:21
Quote Anchor link
Omdat $regels leeg is, en hij dan direct met het uitvoeren begint bij het schrijven naar het bestand.
Je moet namelijk wel eerst netjes controleren of je formulier is verstuurd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
    // voer hier alles uit zodra het formulier verstuurd is...
} else {
?>

<!-- Plaats hier je formulier -->
<?php
}
?>
 
Andreas Krale

Andreas Krale

23/01/2016 17:30:02
Quote Anchor link
Naar mijn mening heb ik het goed staan maar het gaat nog steeds mis.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}
?>


Of heb ik het nu niet goed begrepen????
 
- Ariën  -
Beheerder

- Ariën -

23/01/2016 17:46:41
Quote Anchor link
Dit is al een stuk beter, echter gebruik je nergens de waarde uit je formulier. Geef je input-elementen eerst beiden een unieke naam met name="naam1"

Dan kan je ze oproepen met: $_POST['naam1'] en $_POST['naam2']
Gewijzigd op 23/01/2016 17:47:10 door - Ariën -
 
Andreas Krale

Andreas Krale

23/01/2016 18:12:00
Quote Anchor link
Dat met naam begrijp ik had ik ook al ergens gelezen maar helemaal vergeten.

Nu heb ik er dit van gemaakt, helaas geen input in config.txt gewoon weer leeg.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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
 
- Ariën  -
Beheerder

- Ariën -

23/01/2016 20:08:06
Quote Anchor link
Je geeft het bestand niet op.
Zie ook Example #1: http://php.net/manual/en/function.file-put-contents.php
 
Andreas Krale

Andreas Krale

24/01/2016 09:03:31
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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
}
?>
 
Bart V B

Bart V B

24/01/2016 09:50:48
Quote Anchor link
Dat komt omdat er een aantal dingen niet kloppen.
De wegen naar rome kunnen meerdere zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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...
Gewijzigd op 24/01/2016 09:56:46 door Bart V B
 
Andreas Krale

Andreas Krale

24/01/2016 11:02:59
Quote Anchor link
Hallo Bart,

Ik geloof gelijk dat jou oplossing werkt maar de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php echo substr($current[0], 13, 2);?>
?>


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
 
Bart V B

Bart V B

24/01/2016 11:44:27
Quote Anchor link
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...
 
Andreas Krale

Andreas Krale

24/01/2016 12:22:57
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

Nu wil ik dus alleen maar de waarde achter de = zien en deze kunnen wijzigen, vandaar de regel.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo substr($current[0], 13, 2);?>
Gewijzigd op 24/01/2016 12:27:40 door Andreas Krale
 
Eddy E

Eddy E

24/01/2016 14:16:37
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?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>
 
Andreas Krale

Andreas Krale

24/01/2016 15:04:17
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

24/01/2016 16:50:03
Quote Anchor link
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.
Gewijzigd op 24/01/2016 16:51:38 door Thomas van den Heuvel
 
Andreas Krale

Andreas Krale

24/01/2016 17:28:01
Quote Anchor link
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
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.