Avatar billede jkampmann Nybegynder
29. april 2008 - 09:54 Der er 3 kommentarer og
1 løsning

Splitte semikolon går galt.

Hejsa.
Jeg har en streng som ser sådan her ud:

"49890;Marc Dalgaard;marcdalgaard@hotmail.com;Ja;1986;Mand;7430;Ja;Ja;Ja;Ja;Ja;1200062011;87.116.62.62;0;;de465e75;97153355;Haslevej 4;Ikast;0;0;
49891;kurt larsen;kkkk@kkk.com;Ja;1981;Mand;2620;Ja;Ja;Ja;Ja;Ja;1200062016;91.100.26.31;0;;12c4fcc7;35555555;tuborgvej 4;Albertslund;0;0;"

Der er 21 semikolonner indtil næste række.

Jeg har så prøvet at lave et script som kører det igennem, sådan jeg i alt for 2 mysql_queries, som gerne skulle være noget ala..

INSERT INTO tabel (brugerid, navn) VALUES (49890, 'Marc Dalgaard')
INSERT INTO tabel (brugerid, navn) VALUES (49891, 'kurt larsen')

Men hvordan får jeg mit script til det? Altså jeg vil splitte det op ved semikolonner, også ved hver 21. række skal den vide det er en ny person, og hente de informationer.

Se på dette script jeg har forsøgt mig frem til.. dog UDEN HELD..


<?php
/**
  @params
  @ID, Navn, Email, Aktiv, Fødselsår, Køn, Postnummer
  @Mandag, Tirsdag, Onsdag, Torsdag, Fredag
  @Dato tilmeldt, Ip, Dato slettet, ip slettet, password, telefon
  @adresse, by, fødselsdag, fødselsdag måned, mobil
**/


$String = '49890;Marc Dalgaard;marcdalgaard@hotmail.com;Ja;1986;Mand;7430;Ja;Ja;Ja;Ja;Ja;1200062011;87.116.62.62;0;;de465e75;97153355;Haslevej 4;Ikast;0;0;
49891;kurt larsen;kkkk@kkk.com;Ja;1981;Mand;2620;Ja;Ja;Ja;Ja;Ja;1200062016;91.100.26.31;0;;12c4fcc7;35555555;tuborgvej 4;Albertslund;0;0;
49892;Dan Raeder;dan.raeder@schenker.com;Nej;1977;Mand;6400;Ja;Ja;Ja;Ja;Ja;1200062022;217.150.175.1;1200467304;217.150.175.1;d36c97f3;41185753;Kongshøj 18;Sønderborg;0;0;
';
$SplitIt = split(";", (string) $String);

$i = 0;
$start = 0;
for ( $a = 0; $a < count($SplitIt); $a++)
{

    if ( $start % 21 == 0 && !empty ( $SQL ) ) {
        echo $SQL . "<br />";
        $start = 0;
    }

    $SQL = "INSERT INTO medlemmer (brugerid, navn, mail, aktiv, faar, koen, postnr, man, tir, ons, tor, fre, oprettet, ip, dato_slettet, ip_slettet, kodeord, tlf, adresse, by, fdag, fmdr, mobil)";
    $SQL.= "VALUES (" . $SplitIt[0] . ",)";

    $start = $start + 1;
}
?>

-- 100 points på spil!
Avatar billede jkampmann Nybegynder
29. april 2008 - 10:09 #1
Ved denne:

if ( $a % 21 == 0 && !empty ( $SQL ) ) {
        echo $SQL . "<br />";
    } else {

        $SQL = "INSERT INTO medlemmer (brugerid, navn, mail, aktiv, faar, koen, postnr, man, tir, ons, tor, fre, oprettet, ip, dato_slettet, ip_slettet, kodeord, tlf, adresse, by, fdag, fmdr, mobil)";
        $SQL.= "VALUES (" . $SplitIt[$a] . ",)";

    }

Får jeg følgende output:

INSERT INTO medlemmer (brugerid, navn, mail, aktiv, faar, koen, postnr, man, tir, ons, tor, fre, oprettet, ip, dato_slettet, ip_slettet, kodeord, tlf, adresse, by, fdag, fmdr, mobil)VALUES (0,)

INSERT INTO medlemmer (brugerid, navn, mail, aktiv, faar, koen, postnr, man, tir, ons, tor, fre, oprettet, ip, dato_slettet, ip_slettet, kodeord, tlf, adresse, by, fdag, fmdr, mobil)VALUES (Albertslund,)

INSERT INTO medlemmer (brugerid, navn, mail, aktiv, faar, koen, postnr, man, tir, ons, tor, fre, oprettet, ip, dato_slettet, ip_slettet, kodeord, tlf, adresse, by, fdag, fmdr, mobil)VALUES (Kongshøj 18,)
Avatar billede jakobdo Ekspert
29. april 2008 - 10:30 #2
Hvis du "kun" ønsker dette resultat:

INSERT INTO tabel (brugerid, navn) VALUES (49890, 'Marc Dalgaard')
INSERT INTO tabel (brugerid, navn) VALUES (49891, 'kurt larsen')

Kunne du så ikke lave:

$parts = explode(';',$string);

mysql_query("INSERT INTO tabel (brugerid, navn) VALUES ($parts[0], '$parts[1]')");
osv...
Avatar billede jkampmann Nybegynder
29. april 2008 - 10:45 #3
Jeg har 100.000 medlemmer, så det ikke nok med 2! :-)
Avatar billede jkampmann Nybegynder
29. april 2008 - 10:48 #4
$SplitIt = split("\n", (string) $String);

$i = 0;

for ( $a = 0; $a < count($SplitIt); $a++)
{

    $splitIt = split(";", $SplitIt[$a]);
    print_r($splitIt);

}
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