/ 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
explode problem
Fra : Ukendt


Dato : 02-09-02 20:58

Hejsa

Jeg har en fil som kan indeholde flere tusinde linjer

Den står i et format ala

type ; genre ; lugt ; foo ; bar
1 ; 4 ; hård ; jo jo ; nej nej
2 ; 5 ; lille ; nej nej ; jo jo

Lige nu der skiller jeg linjerne fra hinanden med

$expl = explode(chr(10),$files);

som giver det ønsket resultat dvs at $expl[1] indeholder
1 ; 4 ; hård ; jo jo ; nej nej

men nu ska alle $expl[X] også explodes med ; men så kommer der
prroblemer jeg kan sagtens dele $expl[1] men hvordan får jeg alle
$expl[x] delt ...

Så jeg fx har $type som et array med alle tingene i

Eller skal jeg lave et multidimensionelt array med type, genre, lugt
osv i $array[0] ?

Det hele skal ende med at stå i databasen under de respektive
kolonner.. (der findes selvfølgelig også type, genre osv der i )

Hver linje skal have deres egen række i tabellen selvfølgelig

Hvordan ville i gøre det nemmest og gerne hurtigst altså
servermæssigt, det er nok >2000 linjer der skal læses fra en txt fil
og ind i databasen via PHP

 
 
Jens Tønnesen (02-09-2002)
Kommentar
Fra : Jens Tønnesen


Dato : 02-09-02 21:28

-Martin- <martin_aarhof(AT)hotmail.com> skrev den Mon, 02 Sep 2002
21:58:24 +0200 i dk.edb.internet.webdesign.serverside.php:

>Hvordan ville i gøre det nemmest og gerne hurtigst altså
>servermæssigt, det er nok >2000 linjer der skal læses fra en txt fil
>og ind i databasen via PHP

$linier = file(filnavn.txt);
for($i=0;$i<count($i),$i++) {

list($data['type'],$data['genre'],$data['lugt'],$data['foo'],$data['bar'])
= explode(";",$linier[$i]);
$linier[$i] = $data;
}

eller måske bare

$linier = file(filnavn.txt);
foreach($linier as $linie) {
$linie = str_replace(";","','",$linie);   # skifter ; ud med ','
mysql_query("INSERT INTO tablename
(type,genre,lugt,foo,bar) VALUES ('$linie')");
}

Ikke testet...

--
Jens Tønnesen - http://www.pressefoto.dk

Ukendt (02-09-2002)
Kommentar
Fra : Ukendt


Dato : 02-09-02 23:50

>$linier = file(filnavn.txt);
>foreach($linier as $linie) {
> $linie = str_replace(";","','",$linie);   # skifter ; ud med ','
> mysql_query("INSERT INTO tablename
> (type,genre,lugt,foo,bar) VALUES ('$linie')");
>}

Denne virker skam fint Tak for det ... meeen nu er det såen jeg
liiige skal have addslashes() med ind ... i ALLE felter ... Hmm kan
man få den skudt ind på en eller anden måde ?

Peter Brodersen (03-09-2002)
Kommentar
Fra : Peter Brodersen


Dato : 03-09-02 00:10

On Mon, 02 Sep 2002 22:28:13 +0200, Jens Tønnesen
<nospam2002-01@pressefoto.dk> wrote:

> $linie = str_replace(";","','",$linie);   # skifter ; ud med ','

Husk at hver linje fra file() slutter med return, så for at "bar",
"nej nej" og "jo jo" fra testdataen undgår at få et return med, bør
man fx kaste rtrim efter $linie i ovenstående, fx:
$linie = str_replace(";","','",rtrim($linie));

Da data stammer fra en fil, bør vi også fyre addslashes() af, dvs:
$linie = str_replace(";","','",addslashes(rtrim($linie)));

(derudover mener Dansk Sprognævn, at det hedder "linje" og ikke
"linie" :)

--
- Peter Brodersen

Jens Tønnesen (03-09-2002)
Kommentar
Fra : Jens Tønnesen


Dato : 03-09-02 06:50

Peter Brodersen <usenet@ter.dk> skrev den Tue, 03 Sep 2002 01:09:39
+0200 i dk.edb.internet.webdesign.serverside.php:

>Husk at hver linje fra file() slutter med return, så for at "bar",
>"nej nej" og "jo jo" fra testdataen undgår at få et return med, bør
>man fx kaste rtrim efter $linie i ovenstående, fx:
>$linie = str_replace(";","','",rtrim($linie));

Jeps, jeg havde trim() med i koden, men den røg ud ved en omskrivning.

>Da data stammer fra en fil, bør vi også fyre addslashes() af, dvs:
>$linie = str_replace(";","','",addslashes(rtrim($linie)));

Korrekt. Jeg udelod det i første omgang for overskuelighedens skyld.
Jeg kan se af et andet indlæg, at Martin selv er opmærksom på
addslashes, og dit forslag er en glimrende løsning på hans problem.

>(derudover mener Dansk Sprognævn, at det hedder "linje" og ikke
>"linie" :)

Min script fungerer ligegodt om ordet linie er skrevet på den ene
eller den anden måde, så i forhold til ovenstående må det siges at
være irrelevant - så snup du en linieakvavit på det

--
Jens Tønnesen - http://www.pressefoto.dk

Ukendt (03-09-2002)
Kommentar
Fra : Ukendt


Dato : 03-09-02 16:34

On Tue, 03 Sep 2002 01:09:39 +0200, Peter Brodersen <usenet@ter.dk>
wrote:

>On Mon, 02 Sep 2002 22:28:13 +0200, Jens Tønnesen
><nospam2002-01@pressefoto.dk> wrote:
>
>> $linie = str_replace(";","','",$linie);   # skifter ; ud med ','
>
>Husk at hver linje fra file() slutter med return, så for at "bar",
>"nej nej" og "jo jo" fra testdataen undgår at få et return med, bør
>man fx kaste rtrim efter $linie i ovenstående, fx:
>$linie = str_replace(";","','",rtrim($linie));

rtrim havde jeg selv smidt med i

>
>Da data stammer fra en fil, bør vi også fyre addslashes() af, dvs:
>$linie = str_replace(";","','",addslashes(rtrim($linie)));

og selvfølgelig havde jeg slet ikke tænkt på at smide addslashes ind
samme sted

>
>(derudover mener Dansk Sprognævn, at det hedder "linje" og ikke
>"linie" :)

Hmm ... måske og jeg tror heller ikk Dansk Sprognævn kan lide
addslashes hæhæ

Nå det var en indskudt bemærkning

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