/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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?


Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste