Avatar billede triple-x Nybegynder
05. august 2005 - 00:59 Der er 15 kommentarer og
1 løsning

slet/rediger er det muligt?

Hej perl eksperter

Jeg sidder og leger med noget script værk, og synes lidt jeg sidder fast.

jeg har www.tygsen.dk/link.txt og som i kan se så tilføjer den bare nogle links samt beskrivelse til en liste.

Så langt så godt, det virker somend også fint nok, men jeg vil gerne ha lavet det sådan at jeg kan redigere og slette disse forskellige links/beskrivelser.

Har siddet og stirret på det lang tid, og jeg har mine bange anelser for at det slet ikke kan lade sig gøre sådan som mit script er bygget op?

Nogen der kan give mig nogle fif og hjælpe mig lidt videre.

Koderne er noget jeg delvis har skrevet lånt og proppet sammen fra en masse scripts :) da jeg stadig er nybegynder bliver jeg nød til at lure i forskellige andre scripts.
Avatar billede nielle Nybegynder
05. august 2005 - 08:49 #1
Lige et par indledende kommentarer som dog ikke har noget med selve spørgsmålet at gøre.

1) Før at du for alvor går i gang med VGI programmering, bør du lige tage et lig på CGI-modulet. Det har mange goe4 features. Du tager det i brug i dine scripts med noget i stil med:

use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use strict;

(hvor jeg også har inkluderet strict som altid er en god ide at have).

2) Du bør undgå sådan noget som at referere til localhost. Det vil sikkert virke når du sidder og udvikler scriptene på din egen maskine, men når du uploader til dit webhotel, vil det fejle.

3) Før du basere alt for meget af dit script på at du kan skrive til filer som ligger på serveren, så bør du lige få undersøgt om dette er tilladt på det webhotel du vil lægge tingene op på. Dette er ikke givet.

Men ellers er det ganske nydelig kode, om end en smule flere kommentarere ikke ville skalde.

Jeg faldt i øvrigt lige over dette link som jeg synes ser ekstremt godt ud:

http://www.cgi101.com/book/
Avatar billede nielle Nybegynder
05. august 2005 - 08:55 #2
… og så dit problem.

Du baserer din løsning på at du appender til en almindelig tekst-fil (din adlink.htm).

Dette giver dig ganske rigtigt nogle problemer hvis du ønsker at redigere eller slette. Det kan lade sig gøre, men involvere normalt at man er nødt til at indlæse hele filen, redigere i den og så skrive det hele ud til fil en gang til. Dette er ikke særligt praktisk, og det involvere en masse kode som kun har til formål at holde styr på tingene (frem for at lave noget konkret).

En bedre løsning ville derfor være at gå i gang med noget database til formålet.
Avatar billede triple-x Nybegynder
05. august 2005 - 09:34 #3
hey Nielle,

Jeg er meget grøn bag ørene endnu, og det er faktisk noget af det første jeg har lavet udover de velkendte hello world scripts.

Jeg vil helst undgå database?( går ud fra du snakker om en SQL database )
Er der så andre måder evt at lægge hver enkelt link+beskrivelse ind i en variabel og så hvis man vil redigere så henter den denne varibal frem. ( dette er et rent gæt, ved ikke om det vil virke praktisk)
Avatar billede triple-x Nybegynder
05. august 2005 - 09:36 #4
1000 tak for linket til bogen, jeg vil prøve at læse lidt på den idag, jeg har også bestilt et par bøger fra england et par dage siden, som jeg så går og venter på.
Avatar billede nielle Nybegynder
05. august 2005 - 13:01 #5
Ja, jeg mener en SQL database - det du bruger kaldes normalt for en fladfil. De har primært deres force når der kun skal læses, men når der skal redigeres så begynder de at blive besværlige at arbejde med.
Avatar billede triple-x Nybegynder
05. august 2005 - 13:04 #6
puha jeg har ingen anelse om hvordan man bruger sådan en sql database med cgi, nå jeg må bare læse lidt mere, Nielle smid et svar for din super hjælp, jeg har foresten fået kigget på CGI.pm som du snakkede om, og du har ret den er rigtig effektiv. Så mange tak for de gode råd
Avatar billede nielle Nybegynder
05. august 2005 - 17:48 #7
Hvis du ikke har mod på også at g i gang med SQL lige nu og her, så har perl en slags alternativ.

Det er nemlig muligt at gemme en hash-variabel direkte på harddisken. Dette kunne f.eks. se sådan ud:

my %Vars;

dbmopen(%Vars, "c:\VarsDbmDumpFil", 0666);
$Vars{"url"} = "http://www.eksperten.dk/spm/637553";
dbmclose(%Vars);

Her har du en hash, %Vars, som indeholder nogle data du har lyste til at kunne gemme til disk.

Med kommandoen dbmopen åbner du en fil som, i dette tilfælde, ligger i roden af dit C-drev og har navnet ”VarsDbmDumpFil”.

Derefter har du værdierne tilgængelig i %Vars og kan her arbejde lige så tosset du vil med nøgler og værdier.

Med kommandoen dbmclose gemmes ændringerne til disk. Hvis filen ikke eksisterede på forhånd bliver den skabt på dette tidspunkt.
Avatar billede nielle Nybegynder
05. august 2005 - 17:48 #8
... og et svar :^)
Avatar billede triple-x Nybegynder
05. august 2005 - 17:51 #9
uha du bliver guld værd :) jeg har givet mig i kast med at læse de første 6 kapitler i den bog du nævner ( de var gratis) når jeg er kommet igennem dem, og tilhørende opgaver så er mine 2 bøger jeg har bestilt sikkert kommet ind af døren, hvor jeg så kan arbejde videre derfra, og så lærer jeg sikkert både der med hashes og SQL'en med tiden.
Avatar billede breum Nybegynder
08. august 2005 - 10:21 #10
Hmmm jeg er desværre selv aldrig kommet forbi fladfils stadiet, jeg lærte gerne at bruge SQL men tiden kniber.
Hvis du forventer at have "få" poster i din database kan du sagtens benytte fladfil, især hvis du forventer at filen skal rettes langt sjældnere end den læses som det f.eks vil være tilfældet i et bogmærkescript.
Jeg løser selv problemet med at redigere og slette ved
1) Bruger indtaster url i <form> til script
2) Script henter databasefilen, læser hver linie og finder linien med url
3) Script udfylder ny <form> for brugeren med url og beskrivelse
4) Bruger retter beskrivelsen og klikker på submit knappen
5) Script henter databasefilen, læser hver linie og finder linien med url, retter denne linie til den nye info og gemmer den ny databasefil i stedet for den gamle.

Som du kan se har nielle ret, det er noget omstændeligt. At lære SQL er nok ingen skade til.
Avatar billede triple-x Nybegynder
08. august 2005 - 12:59 #11
Hejsa Birger,

Ja det kan jeg godt se er forholdsvis omstændigt, jeg er også sikker på at en SQL database vil give flere muligheder ( også senere hen) så jeg knokler løs med at læse og prøve mig frem.
Avatar billede breum Nybegynder
08. august 2005 - 13:40 #12
Jeg ved ikke om der er problemer i forbindelse med hvis din testserver bruger en type SQL og din endelige server bruger en anden (Jeg har f.eks postgressSQL på den gentoo-linux server jeg lægger endelige scripts på, det ved jeg ikke om det er direkte kompatibelt med et evt SQL jeg kunne installere på min windows-testserver. Det må en anden kunne hjælpe dig med at svare på, hvis du har behov for at vide dette.
Hvis du finder nogle gode sider der omhandler SQL og Perl for begyndere så sig endelig til, idet vi andre (læs jeg) også vil kunne have glæde af dette!
Avatar billede breum Nybegynder
08. august 2005 - 13:49 #13
Der kan man bare se, det er MySQL jeg har på gentoo og ikke postgress - ikke at jeg ved om det gør nogen forskel
Avatar billede triple-x Nybegynder
08. august 2005 - 13:50 #14
Så vidt jeg har læst mig frem til er der ikke den store forskel på de 2 typer databaser, Mysql skulle efter sigende være den mest benyttede, og hvis det er den der kører på din server, så tager vi bare den.

Jeg skal nok sende dig nogle links til SQL/perl hvis jeg finder nogle gode.

Fortsat god dag til jer alle.
Avatar billede nielle Nybegynder
08. august 2005 - 18:32 #15
Der er mindre forskelle mellem de forskellige typer SQL databaser, men intet man behøver at hidse sig op over. En af de vigtigste ting er at huske på at databaser, som køre på en Linux-boks, som regel er case sensitive, mens deres Windows-modparter som regel er mere large mht. case. Dette kan specielt give problemer, hvis man f.eks. skal portere en MS SQL database til MySQL; Hvis programmøren har sjoflet med case i sine SQL-sætninger, så kan man godt stå foran et større arbejde med at nedjage f.eks. alle SELECT-sætninger og rette tabel- og feltnavne til sådan at de stemmer over ens med den casing man har anvendt i databasen.
Avatar billede triple-x Nybegynder
08. august 2005 - 18:45 #16
Tak for tippet nielle, altid rart at få sådan nogle ting at vide INDEN man står med problemet :)
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