Avatar billede mike2002 Nybegynder
21. marts 2008 - 17:10 Der er 5 kommentarer og
1 løsning

Mærkelig fejl ved import af data - semikolon separerede værdier

Jeg importerer noget data fra en fil med semikolonseparerede data sådan her (filen bliver først uploaded til serveren - mappen /userfiles/ - og siden vælger man fra en liste hvilken fil man vil indlæse fra - koden starter selvf med if(isset($_POST osv...).

        $contents = file("./userfiles/" . $_POST["file"]);

        $count = count($contents);

        $n = (($count-1)); // Fjern øverste linje
        $m = 0;
        for($i = 0; $i < $count; $i++)
            {
                $collectors[$m] = explode(";", $contents[$i]);
                $m++;
            }

        for($i = 1; $i <= $n; $i++)
        {
                $db->query("INSERT INTO kb_collectors (name, address, postcode, city, phone, cellphone, workphone, email, heardabout, agegroup, ledsager, comments, rutenr, collectedamount, added)
                VALUES (
                '" . trim($collectors[$i][0]) . "',
                '" . $collectors[$i][1] . "',
                '" . $collectors[$i][2] . "',
                '" . $collectors[$i][3] . "',
                '" . $collectors[$i][4] . "',
                '" . $collectors[$i][5] . "',
                '" . $collectors[$i][6] . "',
                '" . $collectors[$i][7] . "',
                '" . $collectors[$i][8] . "',
                '" . $collectors[$i][9] . "',
                '" . $collectors[$i][10] . "',
                '" . $collectors[$i][11] . "',
                '" . $collectors[$i][12] . "',
                '" . $collectors[$i][13] . "',
                '" . $collectors[$i][14] . "')
                ");
               
        }
... og det virker som sådan fint nok...

Dog har jeg et problem, når jeg skal finde ud af, om hver indsamler har en valid email-adresse... For hver persons data ser fin nok ud på siden, men ved 'Vis kilde...' ser det f.eks. sådan her ud:

<td>M i t  n a v n</td>
<td>M i n  a d r e s s e</td>
<td>m i n @ m a i l a d r e s s e . d k</td>

trim fjerner første white space, men det er lissom ikke nok. Jeg har prøvet at lave forskellige hjemmebryggede funktioner, der kan fjerne alle white spaces, men de virker ikke optimalt og egentlig vil jeg helst helt undgå at skulle gære noget, hvis det altså er muligt?

Jeg har mulighed for at gå ind og opdatere hver enkelts info, og uden at ændre noget og bare opdatere, bliver data normale... Men det vil jeg jo helst undgå at skulle med flere hundrede personer... Er der nogen der ved, hvorfor denne fejl opstår?
Avatar billede mike2002 Nybegynder
21. marts 2008 - 17:15 #1
Skal måske lige sige, at både 'name', 'address' og 'email' er sat til text i (mysql)databasen...
Avatar billede olebole Juniormester
21. marts 2008 - 17:23 #2
<ole>

Nu kan jeg ikke se, hvordan din csv-fil ser ud, men prøv at bruge funktionen, der netop er beregnet til den slags:
    http://dk2.php.net/manual/en/function.fgetcsv.php

/mvh
</bole>
Avatar billede mike2002 Nybegynder
21. marts 2008 - 17:34 #3
Ja, det prøver jeg så lige... Det bli'r nok først i aften...

Filen er en .txt-fil hvor hvert enkelt felt er adskilt af et semikolon og hver post har sin egen linje. Linjen slutter uden nogen form for afslutning...
Avatar billede erikjacobsen Ekspert
21. marts 2008 - 17:41 #4
Er den fil lavet som utf-16 ?
Avatar billede mike2002 Nybegynder
21. marts 2008 - 18:11 #5
Det ved jeg ikke... Det er et andet system, der genererer den... Kan jeg selv finde ud af, hvilket format den er?
Avatar billede mike2002 Nybegynder
28. september 2008 - 17:59 #6
Lukker her
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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