Avatar billede thomasmyg Nybegynder
09. juli 2007 - 21:17 Der er 5 kommentarer og
2 løsninger

lav ny tekst fil hver gang

Jeg mangler et script som kan lave en tekst fil når en form er blevet udfyldt og submittet. Filerne skal have samme navn, dog skal der et tal efter som skal stige +1 hver gang der bliver lavet en ny fil.
Avatar billede keysersoze Guru
09. juli 2007 - 22:36 #1
selve tekstfilen kan du lave vha FSO (http://www.opfinderen.dk/sites/70) - nummereringen skal du optimalt set styre i fx en database eller ved fx at have en tekstfil hvor du gemmer og opdaterer tallet, men det er også muligt vha FSO at læse filnavnene på filerne og ud fra det finde det højeste id.
Avatar billede dkmornie Nybegynder
10. juli 2007 - 08:10 #2
Her er et kodet eksempel, som ikke gør brug af database, men kigger på nummeret sidst i filnavnet og finder det største nummer, som så bliver tilføjet med 1. Data fra formen bliver gemt i den nye fil.

<%@ Language=VBScript %>
<%
  response.Expires = 0
  If Request.Form("submit") = "Gem" Then
    SaveData
  Else
    EnterData
  End if
 
  Sub EnterData()
%>
<html>
  <head>
  </head> 
  <body>
    <form name="form" action="test.asp" method="post">
      <table>
        <tr>
          <td>Navn:</td>
          <td><input type="text" name="fullname"></td>
        </tr>
        <tr>
          <td>Alder: </td>
          <td><input type="text" name="age"></td>
        </tr>
        <tr>
          <td colspan="2"><input type="submit" name="submit" value="Gem"></td>
        </tr>
      </table>
    </form>
  </body>
</html>
<%
  End Sub
 
  Sub SaveData()
    Dim fs, f, f1, fc, s, foldername
    foldername = server.mappath("/image")
    defaultfilename = "filename_1.txt"

    Set fs = CreateObject("Scripting.FileSystemObject")
   
    If fs.folderexists (foldername) = false then
      fs.CreateFolder (foldername)
    end if
   
    maxFilenumber = 0
    Set f = fs.GetFolder(foldername)
    Set fc = f.Files
    For Each f1 in fc
      tmp = mid(f1.name, instr(f1.name, "_") + 1, len(f1.name))
      tmp = left(tmp, instr(tmp, ".") - 1)
      if cint(tmp) > maxfilenumber then maxfilenumber = cint(tmp)
    Next
    maxfilenumber = maxfilenumber + 1
    response.Write foldername & "\" & replace(defaultfilename, "x", maxfilenumber)
    Set f = fs.CreateTextFile (foldername & "\" & replace(defaultfilename, "1", maxfilenumber))
    f.writeline ("navn: " & request.Form("fullname"))
    f.writeline ("alder: " & request.Form("age"))
    f.close
    set f = nothing
    Set f1 = nothing
    set fc = nothing
    Set fs = nothing
  End Sub
%>
Avatar billede dkmornie Nybegynder
10. juli 2007 - 08:14 #3
Ups linien
    response.Write foldername & "\" & replace(defaultfilename, "x", maxfilenumber)
skal naturligvis bare slettes.

Og de sidste 3 linier ændres til,

    Set fs = nothing
    Response.redirect "test.asp"
  End Sub
%>

så kommer du tilbage til udgangspunktet.
Avatar billede keysersoze Guru
10. juli 2007 - 17:14 #4
i stedet for at gennemløbe filerne som foreslået ville det måske være nemmere bare at tælle antallet af filer - det må alt andet lige performe bedre.
Avatar billede thomasmyg Nybegynder
10. juli 2007 - 19:46 #5
Efter nærmere efter tanke så har jeg valgt og bruge min database alligevel.

Men jeg vil nu gerne belønne jer som har bidraget med en kommentar, så lig et svar og få jeres point.
Avatar billede keysersoze Guru
10. juli 2007 - 20:05 #6
svar :)
Avatar billede dkmornie Nybegynder
11. juli 2007 - 11:59 #7
Det kommer her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester