PDA

View Full Version : Jag skulle vilja kunna......


BwA
2000-06-21, 16:45
Från en html webform låta användare fylla i ett antal urls sen spara det till en data.txt dom skrivs över när det är en ny användare-hur gör man det???

Hur vet man at det är en i taget :-)???

Vore väldigt tacksam för hjälp!!!

BwA

Jojoxx
2000-06-21, 18:48
Ok, jag vet inte vilken av delarna du vill ha hjälp med men;



use CGI;
$urls = CGI::param('fält1') . "\t" . CGI::param('fält2') . "\t" . CGI::param('fält3'); # Osv så många fält du vill ha.
$urls =~ s/\t\t+/\t/g; # rensa bort angränsare mellan icke ifyllda fält
# Skriv till fil.
open(OUTDATA,">datafil.tab") | | die('Kan inte skriva till datafil.tab');
print OUTDATA $urls;
close(OUTDATA);


Det som nu står i filen är tab-separerade url'er (får man hoppas), och filen skrivs över varje gång.

------------------

/ J

[Redigerat av Jojoxx den 21 jun 2000]

[Redigerat av Jojoxx den 21 jun 2000]

BwA
2000-06-22, 08:12
Jag är ingen programerare...:)
open(OUTDATA,">datafil.tab")
ska jag byta datafil.tab till mindatafil.txt???

Sen vill jag bara ha en användare i taget :)

Måste nog fan plugga lite perl .-)

BwA

Coercri
2000-06-22, 08:25
Det är ju inte så svårt att komma igång med cgi.

Eftersom Cgi kan skrivas i 10 olika program språk så bör man nog koncentrera sig på 1 dock.

Finns massvis med bra literatur om Cgi.

------------------
MVH / Coercri

Qaz
2000-06-22, 09:39
Japp, datafil.tab skulle kunna heta vad_du_vill.ada om du så ville det :e

För att låsa filen så att bara en användare i taget kan skriva till den gör så här..


use CGI;

$urls = CGI::param('fält1') . "\t" . CGI::param('fält2') . "\t" . CGI::param('fält3'); # Osv så många fält du vill ha.
$urls =~ s/\t\t+/\t/g; # rensa bort angränsare mellan icke ifyllda fält
# Skriv till fil.
open(OUTDATA,">datafil.tab") | | die('Kan inte skriva till datafil.tab');
flock (OUTDATA,2);
print OUTDATA $urls;
close(OUTDATA);



[Redigerat av Qaz den 22 jun 2000]

BwA
2000-06-22, 12:41
Tack Alla Och Glad Midsommar!!!!

:)Återkommer efter ........

BwA

Robban
2000-06-22, 14:42
För att låsa filen så att bara en användare i taget kan skriva till den gör så här ...

Mja, skall vi titta lite på den koden. :)

open(OUTDATA,">datafil.tab") | | die('Kan inte skriva till datafil.tab');

Här öppnar du filen för skrivning, och raderar samtidigt innehållet i den.

flock (OUTDATA,2);

Här kör du flock. Problemet är bara att innehållet i filen raderas redan vid öppningen, innan du kör flock. Du riskerar alltså att radera innehållet i en fil som någon annan redan håller på med, och det kanske inte är så lyckat alla gånger.

Det här problemet tas upp i dokumentationen (http://www.perl.com/newdocs/pod/perlopentut.html#File_Locking), och där finns också förslag på lösningar.

Dessutom bör du även kolla så att fillåsningen lyckades:

flock (OUTDATA,2) | | die ('Kunde inte låsa datafil.tab');


------------------
Robban < robban@lipogram.com >