|
| 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
| |
|
|