09. juli 2005 - 00:59Der er
15 kommentarer og 2 løsninger
Indeksering af billeder fra mappe
Hej
Jeg søger en måde at indekser (indsætte url og filnavn i en DB) billeder, som ligger i en mappe. Det skal fungere sådan at man upload billederne til mappen, via ftp. Så kører man scriptet, efter man har skrevet mappe navnet og så går scriptet i gang med at indsætte url (den som man skrev) og filnavnet (på filerne i mappen) og det gør den så ved alle billederne.
Eks.
En mappe med 2 billeder. Billede.jpg og billede2.jpg og de ligger i mappen test. DB vil så se sådan ud efter scriptet er kørt:
Id: 1 url: test filnavn: billede.jpg
-----
id: 2 url: test filnavn: billede2.jpg
Håber der er nogen som forstår mig og kan hjælpe mig.
if (isset($_POST['path']) && !empty($_POST['path'])) { //connect her mysql_query("DELETE FROM tabel WHERE url='" . $_POST['path'] . "'") or die(mysql_error());
nielle > Ja det rigtig. Men det ville i mit tilfælde være mere smart, at den indsatte de nye billeder. Fordi billede id bliver brugt på nogle andre sider og så vil der gå lidt ged i det, hvis billederne ikke fik det samme id - hvis du forstår
if (isset($_POST['path']) && !empty($_POST['path'])) { //connect her
$handle = opendir('./' . $_POST['path']); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $result = mysql_query("SELECT * FROM tabel WHERE url='" . $_POST['path'] . "' AND filnavn='" . $file . "'") or die(mysql_error()); $num_rows = mysql_num_rows($result);
if ($num_rows == 0) mysql_query("INSERT INTO tabel (url, filnavn) VALUES('" . $_POST['path'] . "','" . $file . "')") or die(mysql_error()); } } closedir($handle); } ?>
Synes godt om
Slettet bruger
09. juli 2005 - 11:24#7
nielle > Jeg har lige prøvet at ændre lidt i din kode, så det kommer til at passe til mig. Det virker fint første gang man kører scriptet på en mappe. Hvis man så fx glemt at upload et billede, så gør man det bagefter og kører så igen scriptet, men så skulle det kun indsætte en ny række (det nye billede). Men det har jeg ikke haft held med. Jeg har følgende kode:
$result = mysql_query("SELECT * FROM billeder WHERE filnavn='" . $file . "' AND url='" . $_POST['path'] . "'") or die(mysql_error()); $num_rows = mysql_num_rows($result);
$result = mysql_query("SELECT * FROM billeder WHERE filnavn='" . $file . "' AND url='" . $_POST['path'] . "'") or die(mysql_error());
while($row = mysql_fetch_array($result) { if(!in_array($row['filnavn'], $file_array)) { mysql_query("DELETE FROM billeder WHERE filnavn = '".$row['filnavn']."' AND url='".$_POST['path']."'") or die(mysql_error()); } }
Det var også nogenlunde hvad jeg vil gøre (som om at der er så mange alternativer ;^). Men siden at vi nu har filerne i et array, skal resten også laves en smule om:
$result = mysql_query("SELECT filnavn FROM billeder WHERE filnavn='" . $file . "' AND url='" . $_POST['path'] . "'") or die(mysql_error()); while ($row = mysql_fetch_array($result) { if (!in_array($row['filnavn'], $file_array)) mysql_query("DELETE FROM billeder WHERE filnavn = '" . $row['filnavn'] . "' AND url='" . $_POST['path'] . "'") or die(mysql_error()); }
foreach ($file_array as $file) { $result = mysql_query("SELECT * FROM tabel WHERE url='" . $_POST['path'] . "' AND filnavn='" . $file . "'") or die(mysql_error()); $num_rows = mysql_num_rows($result);
if ($num_rows == 0) mysql_query("INSERT INTO tabel (url, filnavn) VALUES('" . $_POST['path'] . "','" . $file . "')") or die(mysql_error()); } } ?>
Synes godt om
Ny brugerNybegynder
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.