velden van formulier opslaan en terug ophalen

Status
Niet open voor verdere reacties.

dreammachine

Gebruiker
Lid geworden
19 jul 2008
Berichten
11
Hoe kan ik velden in een formulier opslaan in een textfile en daarna terug ophalen?

Een simpel voorbeeldje van zo'n formulier en de bedoeling ervan heb ik hieronder meegegeven.

Bedankt voor jullie hulp!

Code:
<form>
  <p>1)</p>
  <p>Bestand laden : <input type="file" value="laden" name="B2"> (bladeren voor bestand en gegevens van velden &quot;input1&quot; en &quot;input2&quot; hieronder terugzetten)</p>
  <p>of</p>
  <p>2)</p>
  <p>Bestand opslaan als: <input type="text" name="opslaan" size="20">.txt</p>
  <p>input: <input type="text" name="input1" size="20"></p>
  <p>input2: <input type="text" name="input2" size="20"></p>
  <p><input type="submit" value="Opslaan" name="B1">  (bestand opslaan als naam opgegeven in veld &quot;bestand opslaan&quot; met daarin de gegevens van velden &quot;input1&quot; en &quot;input2&quot;)</p>
</form>
 
Hey, je kunt het niet in een tekst bestand zetten (behalve met een activeX object, maar dat wil je echt niet). Je kunt het veel beter in een cookie zetten.

Zie dit voor meer informatie over hoe je cookies gebruikt: http://w3schools.com/js/js_cookies.asp

Dan kom je er vast zelf wel uit ;)

als je het perse wél wilt in een tekst bestand, dan kun je hier lezen over een oplossing die alleen in IE werkt en zelfs dan niet soepel:
http://www.helpmij.nl/forum/showthread.php?t=366851
 
Laatst bewerkt:
Wederom bedankt Glest!

Het opslaan is dan zeker geen probleem, daar heb je mij al heel goed mee geholpen in het topic dat je vermeldt. Cookies kan ik niet gebruiken, want blijkbaar is de bestandsgrootte beperkt.

Maar hoe kan ik de gegevens gaan terughalen? Waarschijnlijk heb je daar ook wel de gepaste oplossing voor want dit is me helemaal niet duidelijk.

Alvast bedankt en doe zo voort, je bent een echte meerwaarde voor dit forum!
 
Laatst bewerkt:
oh dat was je zelf :P lol, dat zag ik niet

Nouja, als je het weer wilt openen zul je weer een activeX object moeten gebruiken.


in specifiek:
Verwijder één van de twee OpenAsTextfile()'s
Code:
var activexobj = new ActiveXObject("Scripting.FileSystemObject");
var handle = activexobj.OpenTextFile("C:\\test.txt", 1, false, 0) //voor ascii
var handle = activexobj.OpenTextFile("C:\\test.txt", 1, false, -1) // voor unicode
var content = handle.ReadAll();
handle.Close();



of beter:

Code:
var activexobj = new ActiveXObject("Scripting.FileSystemObject");
var handle = activexobj.OpenTextFile("C:\\test.txt", 1, false, 0) //voor ascii
var handle = activexobj.OpenTextFile("C:\\test.txt", 1, false, -1) // voor unicode
var line;
while (!handle.AtEndOfStream)
{
  line = handle.ReadLine();
  // verwerk de regel hier
}
handle.Close();
 
Laatst bewerkt:
Code:
  line = handle.ReadLine();
  // verwerk de regel hier

Bedankt Glest!

Sorry dat ik zo vervelend ben hoor, maar ben dan ook maar een beginner die zijn werk wat probeert te vereenvoudigen.

Het enige wat me niet duidelijk is, is wat ik moet neerzetten om die regels te verwerken (terug in te lezen). Zou je daar een voorbeeldje willen zetten.

:thumb:
 
Dat hangt af van hoe je alles opslaat.

Stel, je slaat alle informatie op op deze manier:
[VeldID]:Waarde
[VeldID]:Waarde
[VeldID]:Waarde
[VeldID]:Waarde

dan kun je het het beste zo verwerken. Dan moet je er wel rekening mee houden dat er géén regeleindes in je waardes kunnen staan. Als je dus een textarea gebruikt moet je alle newlines (\r\n, \n of \r) vervangen door bijvoorbeeld [n] bij het opslaan en weer terugvervangen naar een newline (\n werkt altijd wel) bij het verwerken van de waardes wanneer je het bestand opent.
Code:
var activexobj = new ActiveXObject("Scripting.FileSystemObject");
var handle = activexobj.OpenTextFile("C:\\test.txt", 1, false, 0) //voor ascii
var handle = activexobj.OpenTextFile("C:\\test.txt", 1, false, -1) // voor unicode
var line[b], ID, value, seperator[/b];
while (!handle.AtEndOfStream)
{
  line = handle.ReadLine();
  [b]seperator = line.indexOf(":");  // de dubbele punt is hier het scheidingsteken
  ID = line.substr(0, seperator);
  value = line.substr(seperator+1);
  document.getElementById(ID).value = value;[/b]
}
handle.Close();

/edit: De reden dat ik geen split gebruiken is dat je op deze manier gewoon dubbele punten in je waardes mag gebruiken
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan