Avatar billede noob2003 Nybegynder
10. november 2007 - 12:38 Der er 17 kommentarer

importere data fra fil og insert til mysql

jeg ville lige høre om der er nogen der har et forslag / løsning til hvordan man kan importere alá nedenstående data.

jeg skal ha den til og finde ud af hvor mange linier der er og importere alle data efter linie 10, da de første 10 linier ikke skal bruges i databasen.

datafil der skal importeres fra
;$; Updated with Simple DNS Plus Record Editor module v. 5.0.17.0 at 23 Oct 2007 12:14:06 +0200
$TTL 10800
@        IN SOA    ( ns1.test.dk. ; Primary DNS server
              hostmaster.test.dk. ; Responsible person
              2007102302  ; Serial number
              10800        ; Refresh
              3600        ; Retry
              777600      ; Expire
              3600      ) ; Minimum TTL
        A    80.161.153.192
        NS    ns2.test.dk.
        NS    ns1.test.dk.
        MX    10 mail.test.dk.
ftp        A    80.161.153.192
mail        A    80.161.153.192
ns-backup        A    192.168.123.167
ns1        A    80.161.153.192
ns2        A    194.239.172.183
www        CNAME     test.dk.

record DB
`name` varchar(255) default NULL,
  `type` varchar(6) default NULL,
  `content` varchar(255) default NULL,

håber på nogen kan hjælpe mig med mit problem
Avatar billede noob2003 Nybegynder
10. november 2007 - 12:40 #1
skal importere alt efter 3600      ) ; Minimum TTL selvføldig ;)
Avatar billede jakobdo Ekspert
11. november 2007 - 19:04 #2
Nu ved jeg ikke helt hvordan du importere dine data, men måske en regexp ala:

if (preg_match('/([a-z0-9-]*)\s+(A|NS|MX|CNAME|PTR)\s+(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}|.+)/', $data,$match)) {
echo '<pre>';
print_r($match);
echo '</pre>';
}
Avatar billede noob2003 Nybegynder
11. november 2007 - 23:12 #3
jeg har blot fået forspørgelsen om muligheden for at importere fra dns filen.

jeg har slet ikke lavet noget endnu, da jeg er lidt blank hvad angår import af tekst fra fil.

men et eller andet med man indtaster domænenavn "test.dk" og den henter alle records fra test.dk.dns og gemmer dem i tabel record
Avatar billede jakobdo Ekspert
12. november 2007 - 08:02 #4
Man kan godt.
Avatar billede noob2003 Nybegynder
12. november 2007 - 11:17 #5
ikke med det du har skrevet, tror der mangler noget, eller du skjule noget kode for mig ;)
Avatar billede jakobdo Ekspert
12. november 2007 - 11:32 #6
Jeg skjuler meget.
Men du skal jo også tænke lidt selv. :o)
Avatar billede noob2003 Nybegynder
12. november 2007 - 11:43 #7
damn for jeg er på herrens mark, når det er noget med filbehandling, har bruget det meste af weekenden for og prøver på at finde/ lære om det men ak nej, fatter stadigvæk nada af det,
Avatar billede jakobdo Ekspert
12. november 2007 - 11:46 #8
Du kan indlæse filens indhold med: file(), file_get_contents(), fread() og garanteret mange andre muligheder.
Avatar billede noob2003 Nybegynder
12. november 2007 - 11:52 #9
denne her er blank

<?php
file('test.dk.dns');
if (preg_match('/([a-z0-9-]*)\s+(A|NS|MX|CNAME|PTR)\s+(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}|.+)/', $data,$match)) {
echo '<pre>';
print_r($match);
echo '</pre>';
}
?>

og der er data i filen

            MX    10 mail
ftp        A    80.161.153.192
www        CNAME    @
mail        A    80.161.153.192
Avatar billede noob2003 Nybegynder
12. november 2007 - 11:59 #10
wee fik output nu med readfile.

hvordan får man den til KUN at læse fra linie 10 og derefter ?
Avatar billede jakobdo Ekspert
12. november 2007 - 19:31 #11
Hvilken funktion bruger du?
Avatar billede noob2003 Nybegynder
12. november 2007 - 20:50 #12
pt. har jeg prøvet at split data / linie op, men uden held ved A CNAME og MX der står data i samme felt.

<?php
$file = "test.dk.dns";

$data = file($file);

    echo '<table border="1"><tr>';
    echo "<th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th></tr>";

    foreach    ($data as $line)
    {
        $val = explode(' ', $line);
        echo "<tr>
        <td>$val[0]</td>
        <td>$val[1]</td>
        <td>$val[2]</td>
        <td>$val[3]</td>
        <td>$val[4]</td>
        <td>$val[5]</td>
        <td>$val[6]</td>
        </tr>";
    }
    echo "</table>";
    ?>
test.dk.dns filen

$TTL 10800
@        SOA    ns1.frb-internet.dk. support.frb-internet.dk. 2007110610 10800 3600 777600 3600
            NS    ns1.frb-internet.dk.
            NS    ns2.frb-internet.dk.
            MX    10 mail
ftp        A    80.161.153.192
www        CNAME    @
mail        A    80.161.153.192
Avatar billede jakobdo Ekspert
12. november 2007 - 21:05 #13
Hvis du bruger file(), så indlæses filens indhold i et array.
For at få fra linje 10 og frem, kunne du så lave:

for($i = 10; $i < count($data); $i++)
{
//Gør noget ved data[$i];
}
Avatar billede noob2003 Nybegynder
12. november 2007 - 23:11 #14
er total forvirret, fatter nada, er det noget sted hvor der er noget noob læsning om det her problem ?
Avatar billede jakobdo Ekspert
13. november 2007 - 07:54 #15
Det er sgu ikke meget folk i dag prøver selv...

<?php
$file = "test.dk.dns";

$data = file($file);
$start_linje = 10;

if(count($data) > $start_linje)
{
    echo '<table border="1">';
    for($i = $start_linje; $i < count($data); $i++)
    {
        echo '<tr><td>' . $data[$i] . '</td></tr>';
    }
    echo '</table>';
}

?>
Avatar billede noob2003 Nybegynder
13. november 2007 - 11:34 #16
jo da prøver da at rode med det du skriver, men kan jo ikke være en haj til det hele som visse andre ;)
Avatar billede jakobdo Ekspert
13. november 2007 - 11:48 #17
Man bliver kun haj ved at prøve sig frem.
Vi andre lærte det jo heller ikke på en dag! :o)
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