een lijst van informatie ophalen en plaatsen in een database
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?
Code (php)
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
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 "'.$folder.'" 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;
}
?>
// Folder naar de bestanden
$folder = 'path/naar/folder';
// Controleer dat de folder bestaat
trim($folder, '/');
if (!is_dir($folder)){
print 'Het pad naar "'.$folder.'" 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! dankje, ik start er meteen aan :)
G P op 25/10/2014 18:32:28:
Hier een voorbeeld scriptje
Code (php)
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
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 "'.$folder.'" 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;
}
?>
// Folder naar de bestanden
$folder = 'path/naar/folder';
// Controleer dat de folder bestaat
trim($folder, '/');
if (!is_dir($folder)){
print 'Het pad naar "'.$folder.'" 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!
Dat staat niet in dat voorbeeld, wel?
Phoenix flyalot op 31/10/2014 11:57:51:
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!
G P op 25/10/2014 18:32:28:
Hier een voorbeeld scriptje
Code (php)
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
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 "'.$folder.'" 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;
}
?>
// Folder naar de bestanden
$folder = 'path/naar/folder';
// Controleer dat de folder bestaat
trim($folder, '/');
if (!is_dir($folder)){
print 'Het pad naar "'.$folder.'" 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!
$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.
aahzo, thx kzal het even opzoeken, voor de moment werkt het nog :)