een lijst van informatie ophalen en plaatsen in een database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Phoenix flyalot

Phoenix flyalot

25/10/2014 17:30:15
Quote Anchor link
Graag had ik iemand gevonden die mij in de juiste richting kan wijzen voor het volgende:

1. php die de inhoud van een directory leest en in een 'lijst' plaatst
2. de lijst wordt daarna geplaatst in een mysql server

resultaat = een tabel die overreenstemt met informatie van de directory.
Kollom voorbeelden:
- filename
- fileextension
- filesize

ik heb reeds:
$aDirs=glob('data/music/*');
foreach ($aDirs as $item) {
echo $item . '<br />';
}

wat mij een lijst van bestanden geeft maar verder weet ik niet hoe ik de data moet behandelen en hoe ik het erna kan opsturen naar de mysql tabel?

*in het mogelijke had ik graag een voorbeeld gezien waarbij ik wijs raak van wat ik allemaal moet bij leren?
 
PHP hulp

PHP hulp

20/04/2024 00:56:17
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/10/2014 18:29:55
Quote Anchor link
Heb je hier al eens gekeken? http://phptuts.nl/view/41/
 
G P

G P

25/10/2014 18:32:28
Quote Anchor link
Hier een voorbeeld scriptje
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php

// Folder naar de bestanden
$folder = 'path/naar/folder';

// Controleer dat de folder bestaat
trim($folder, '/');
if (!is_dir($folder)){
    print 'Het pad naar &quot;'.$folder.'&quot; kan niet worden gevonden';
}
else {
    // Start het maken van de query
    $values = '';
    // Uitlezen van folder
    foreach (glob($folder.'/*.*') as $file) {
        // Ophalen van extentie doen we met explode
        $exp = explode('.', $file);
        $ext = end($exp);
        // Ophalen van grootte
        $filesize = filesize($file);
        // Ophalen van filename
        $filename = $file;
        $filename = str_replace('.'.$ext, '', $filename);
        $filename = str_replace($folder.'/', '', $filename);
        // Toon de gegevens
        print 'Filename: '.$filename.'<br>';
        print 'Extentie: '.$ext.'<br>';
        print 'Filesize: '.$filesize.' bytes<hr>';
        // Bouw de query
        if (!empty($values)){ $values .= ", "; }
        $values .= "(NULL, '".$filename."', '".$ext."', '".$filesize."')";
    }

    // Afwerken van de query
    $query = "INSERT INTO music (id, filename, extentie, filesize) VALUES ".$values;
    // Toon de query
    print 'Query: '.$query;
}


?>
 
Ivo P

Ivo P

25/10/2014 20:33:12
 
Phoenix flyalot

Phoenix flyalot

27/10/2014 08:28:04
Quote Anchor link
Geweldig! dankje, ik start er meteen aan :)
 
Phoenix flyalot

Phoenix flyalot

31/10/2014 11:57:51
Quote Anchor link
G P op 25/10/2014 18:32:28:
Hier een voorbeeld scriptje
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php

// Folder naar de bestanden
$folder = 'path/naar/folder';

// Controleer dat de folder bestaat
trim($folder, '/');
if (!is_dir($folder)){
    print 'Het pad naar &quot;'.$folder.'&quot; kan niet worden gevonden';
}
else {
    // Start het maken van de query
    $values = '';
    // Uitlezen van folder
    foreach (glob($folder.'/*.*') as $file) {
        // Ophalen van extentie doen we met explode
        $exp = explode('.', $file);
        $ext = end($exp);
        // Ophalen van grootte
        $filesize = filesize($file);
        // Ophalen van filename
        $filename = $file;
        $filename = str_replace('.'.$ext, '', $filename);
        $filename = str_replace($folder.'/', '', $filename);
        // Toon de gegevens
        print 'Filename: '.$filename.'<br>';
        print 'Extentie: '.$ext.'<br>';
        print 'Filesize: '.$filesize.' bytes<hr>';
        // Bouw de query
        if (!empty($values)){ $values .= ", "; }
        $values .= "(NULL, '".$filename."', '".$ext."', '".$filesize."')";
    }

    // Afwerken van de query
    $query = "INSERT INTO music (id, filename, extentie, filesize) VALUES ".$values;
    // Toon de query
    print 'Query: '.$query;
}


?>


Geweldig, de query werkt! duizend keer bedankt!
Ik heb wel nog een probleem...

Om de sync te vervolledigen moet ik:
1. Controleren of de filename niet al bestaat want hij blijf ze dubbel toevoegen
2. De files die weg zijn uit de directory moet hij ook schrappen uit de database

Ik heb reeds vanalles geprobeerd maar ik geloof dat ik hier nog even vast zit:
Als ik een echo van $filename doe dan krijg ik iets raars:

bijvoorbeeld:
echo of filename:Resource id #12

door dat de filename een rare inhoud heeft kan ik mijn functies niet uitvoeren...

Kan je mij in de juiste richting wijzen aub?

nogmaals super bedankt voor de hulp!
 
Ivo P

Ivo P

31/10/2014 12:04:36
Quote Anchor link
dan open je kennelijk ergens een file, en geef je de resource terug? fopen() of zo?

Dat staat niet in dat voorbeeld, wel?
 
Phoenix flyalot

Phoenix flyalot

31/10/2014 12:29:57
Quote Anchor link
Phoenix flyalot op 31/10/2014 11:57:51:
G P op 25/10/2014 18:32:28:
Hier een voorbeeld scriptje
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php

// Folder naar de bestanden
$folder = 'path/naar/folder';

// Controleer dat de folder bestaat
trim($folder, '/');
if (!is_dir($folder)){
    print 'Het pad naar &quot;'.$folder.'&quot; kan niet worden gevonden';
}
else {
    // Start het maken van de query
    $values = '';
    // Uitlezen van folder
    foreach (glob($folder.'/*.*') as $file) {
        // Ophalen van extentie doen we met explode
        $exp = explode('.', $file);
        $ext = end($exp);
        // Ophalen van grootte
        $filesize = filesize($file);
        // Ophalen van filename
        $filename = $file;
        $filename = str_replace('.'.$ext, '', $filename);
        $filename = str_replace($folder.'/', '', $filename);
        // Toon de gegevens
        print 'Filename: '.$filename.'<br>';
        print 'Extentie: '.$ext.'<br>';
        print 'Filesize: '.$filesize.' bytes<hr>';
        // Bouw de query
        if (!empty($values)){ $values .= ", "; }
        $values .= "(NULL, '".$filename."', '".$ext."', '".$filesize."')";
    }

    // Afwerken van de query
    $query = "INSERT INTO music (id, filename, extentie, filesize) VALUES ".$values;
    // Toon de query
    print 'Query: '.$query;
}


?>


Geweldig, de query werkt! duizend keer bedankt!
Ik heb wel nog een probleem...

Om de sync te vervolledigen moet ik:
1. Controleren of de filename niet al bestaat want hij blijf ze dubbel toevoegen
2. De files die weg zijn uit de directory moet hij ook schrappen uit de database

Ik heb reeds vanalles geprobeerd maar ik geloof dat ik hier nog even vast zit:
Als ik een echo van $filename doe dan krijg ik iets raars:

bijvoorbeeld:
echo of filename:Resource id #12

door dat de filename een rare inhoud heeft kan ik mijn functies niet uitvoeren...

Kan je mij in de juiste richting wijzen aub?

nogmaals super bedankt voor de hulp!



Woops, ik vond het net nog op het laatste moment, ik deel het hier even zodat iemand anders dit ook kan gebruiken:

De query pas je aan van:
...INSERT INTO....

naar:
...INSERT IGNORE INTO...

zo slaat hij de records over die dubbel zijn.
Zorg er wel voor dat de sql row een UNIQUE heeft of hij zal gewoon verder dubbele records plaatsen!
 
Ivo P

Ivo P

31/10/2014 12:56:18
Quote Anchor link
$filename = $file;
$filename = str_replace('.'.$ext, '', $filename);
$filename = str_replace($folder.'/', '', $filename);

Wat nu als de file heet /eenfolder/een.classname.class

dan replace-t de 2e regel 2x ".class" uit de filename.....

Ga daarom liever voor functies van php die precies doen wat je wilt bereiken. Bijvoorbeel pathinfo() of basename() oid.
Lijkt vaak precies op wat je met de nodige str_replace aanroepen ook kunt bereiken, maar dan is er net wat langer over nagedacht en getest.
 
Phoenix flyalot

Phoenix flyalot

02/11/2014 19:58:22
Quote Anchor link
aahzo, thx kzal het even opzoeken, voor de moment werkt het nog :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.