|
| UPDATE men i text-fil Fra : Magnus |
Dato : 07-10-02 11:27 |
|
Hej,
Jeg sidder og laver en lille database-styring for et band (gæstebog,
mailliste og koncertkalender).
Jeg vil gerne lave det uden MySQL (altså i flade filer), mest som en
udfordring, men også lidt for prisen på webhotellet
Er der en, der kan give et smart overblik over hvordan jeg retter i en post
i en textfil? Jeg kan hive den frem i en form, og skal til at sende den ind
i filen igen (som UPDATE i SQL), men ved ikke helt hvordan jeg skal gøre
det.
Jeg har fundet ud at at tilføje poster i filen (altså lægge den til i
slutningen filen)
Er det noget med at explode og rette i en enkelt linje?
| |
Niels Andersen (07-10-2002)
| Kommentar Fra : Niels Andersen |
Dato : 07-10-02 12:55 |
|
Magnus wrote in <Xns92A07E922FF55spammaildk@212.54.64.135>:
> Er der en, der kan give et smart overblik over hvordan jeg retter i en
> post i en textfil?
1) Træk al data ud af filen, gem det fx. som et array.
2) Lav dine ændringer i arrayet
3) Gem arrayet som en ny version af filen.
Du kan fx. lade hver linje i filen starte med en id. Dette id kan du så
bruge som "nøgle" i dit array.
--
Mvh.
Niels Andersen
(la nels. anersyn.)
| |
Magnus (07-10-2002)
| Kommentar Fra : Magnus |
Dato : 07-10-02 13:04 |
|
Niels Andersen <niels-usenet@myplace.dk> wrote in news:XDeo9.81760
$Qk5.3555910@news010.worldonline.dk:
> Magnus wrote in <Xns92A07E922FF55spammaildk@212.54.64.135>:
>> Er der en, der kan give et smart overblik over hvordan jeg retter i en
>> post i en textfil?
>
> 1) Træk al data ud af filen, gem det fx. som et array.
> 2) Lav dine ændringer i arrayet
> 3) Gem arrayet som en ny version af filen.
>
Tak for det - lige til at forstå.
> Du kan fx. lade hver linje i filen starte med en id. Dette id kan du så
> bruge som "nøgle" i dit array.
>
Jeg har lige nu ikke noget ID-felt (andet end dato feltet), men det vil jeg
lægge ind.
Hvordan bestemmer man, hvad der skal være nøglen når man laver et array?
Skal det være et associativt array, eller hvordan... ?
| |
Niels Andersen (07-10-2002)
| Kommentar Fra : Niels Andersen |
Dato : 07-10-02 14:58 |
|
Magnus wrote in <Xns92A08F1591EAFspammaildk@212.54.64.135>:
>> Du kan fx. lade hver linje i filen starte med en id. Dette id kan du så
>> bruge som "nøgle" i dit array.
>>
> Jeg har lige nu ikke noget ID-felt (andet end dato feltet), men det vil
> jeg lægge ind.
>
> Hvordan bestemmer man, hvad der skal være nøglen når man laver et array?
> Skal det være et associativt array, eller hvordan... ?
Hvis du henter en fil med "file" bliver nøglen bare linjenummret (startende
med nummer nul). Det kan du ikke bruge til meget.
Hvis formatet fx. er sådan her:
Fornavn, Efternavn, tlf
Så kan du tilføje id på denne måde:
#, Fornavn, Efternavn, tlf
Så kan du læse filen linje for linje, og putte det i et array:
while ($linje = ...) {
$id = (int)$linje;
$array[$tal] = $linje:
}
Tricket ligger i (int), som vil tage tallene i starten af linje, og fjerner
resten.
--
Mvh.
Niels Andersen
(la nels. anersyn.)
| |
Magnus (09-10-2002)
| Kommentar Fra : Magnus |
Dato : 09-10-02 01:35 |
|
Niels Andersen <niels-usenet@myplace.dk> wrote in
news:grgo9.81976$Qk5.3571908@news010.worldonline.dk:
Mange tak for det, jeg bruger nemlig $array=file(fil), men kendte ikke
dette lille guldkorn.
Hvis man nu har måske 200-300 poster i en textfil, er denne her metode så
stadig anvendelig? Altså, vil man kunne mærke proces-tiden når den skal
trevle en hel fil igennem, for at finde den ønskede linje?
>
> Hvis formatet fx. er sådan her:
> Fornavn, Efternavn, tlf
> Så kan du tilføje id på denne måde:
> #, Fornavn, Efternavn, tlf
>
> Så kan du læse filen linje for linje, og putte det i et array:
>
> while ($linje = ...) {
> $id = (int)$linje;
> $array[$tal] = $linje:
> }
>
> Tricket ligger i (int), som vil tage tallene i starten af linje, og
> fjerner resten.
>
| |
Niels Andersen (09-10-2002)
| Kommentar Fra : Niels Andersen |
Dato : 09-10-02 15:44 |
|
Magnus wrote in <Xns92A21A333F29Dspammaildk@212.54.64.135>:
>> while ($linje = ...) {
>> $id = (int)$linje;
>> $array[$tal] = $linje:
>> }
> Hvis man nu har måske 200-300 poster i en textfil, er denne her metode så
> stadig anvendelig? Altså, vil man kunne mærke proces-tiden når den skal
> trevle en hel fil igennem, for at finde den ønskede linje?
Det er i hvert fald ikke den bedste måde at gøre det på, det er bare den
nemmeste. :)
Hvor lang tid det tager ved jeg ikke lige. Men umiddelbart lyder 2-300
linjer jo ikke af meget.
Det bedste tip jeg kan give er, at du kan prøve at måle det. Du kan se et
eksempel på http://dk.php.net/microtime , hvis jeg husker rigtigt.
For at få den bedste tid, så kan du fx. lave en løkke, som klarer hele turen
fx. 1.000 gange.
Så prøver du at lave en målen mindst 3 gange, og helst i "prime time", altså
mens der er mest travlt på serveren.
Så tager du et gennemsnit, og dividerer selvfølgelig med 1.000, eller hvad
du nu valgte før. Så ved du sådan ca. hvor lang tid det tager.
Så er det bare at overveje hvor lang tid det må tage.
--
Mvh.
Niels Andersen
(la nels. anersyn.)
| |
[5000] Jesper Brunho~ (07-10-2002)
| Kommentar Fra : [5000] Jesper Brunho~ |
Dato : 07-10-02 15:42 |
|
i forlængelse af tidligere råd vil jeg foreslå at du ser på
parse_ini_file og overvejer om der er muligheder i denne funktion som
kan ganske meget...
< http://us.php.net/manual/en/function.parse-ini-file.php>
Magnus wrote:
> Jeg har lige nu ikke noget ID-felt (andet end dato feltet), men det vil jeg
> lægge ind.
god idé!
> Hvordan bestemmer man, hvad der skal være nøglen når man laver et array?
> Skal det være et associativt array, eller hvordan... ?
Jeg er ikke helt sikker på hvad spørgsmålet er, så jeg fyrer lige en
smule af - læs uden om det irrellevante
# array med nøgler:
$test=array(
1=> "første post",
2=> "anden post",
"tre" => "tredje post"
);
# smid en post bagest:
$test[]="femte post";
# smid en post ind på specifik position
$test[4]="fjerde post";
# Følgende er jeg ikke 100 % sikker på, men dog rimeligt sikker - ret
# mig hvis jeg tager fejl...
# MEN - det gik kun godt fordi der ikke var noget på 4 i forvejen -
# $test[] smed ind på 3. Skil det at smide ind på specifikke og
# uspecifikke id/keys/nøgler ret grundigt ad, og lad være med at
# specificere hvor noget skal lægge i et array hvis ikke du har en god
# grund til det
jeg håber at du kunne bruge det
Venligst
Jesper Brunholm
| |
Jens Nielsen (08-10-2002)
| Kommentar Fra : Jens Nielsen |
Dato : 08-10-02 13:15 |
|
Uden at jeg selv har arbejdet med det -prøv at se på
http://dk.php.net/manual/en/ref.dbm.php
Venlig hilsen
Jens
On 07/10/02 12:26, Magnus wrote in Xns92A07E922FF55spammaildk@212.54.64.135:
> Hej,
>
> Jeg sidder og laver en lille database-styring for et band (gæstebog,
> mailliste og koncertkalender).
>
> Jeg vil gerne lave det uden MySQL (altså i flade filer), mest som en
> udfordring, men også lidt for prisen på webhotellet
>
> Er der en, der kan give et smart overblik over hvordan jeg retter i en post
> i en textfil? Jeg kan hive den frem i en form, og skal til at sende den ind
> i filen igen (som UPDATE i SQL), men ved ikke helt hvordan jeg skal gøre
> det.
>
> Jeg har fundet ud at at tilføje poster i filen (altså lægge den til i
> slutningen filen)
>
> Er det noget med at explode og rette i en enkelt linje?
| |
|
|