Seite 1 von 1

Dateiname aus Datenbank auslesen

Verfasst: Mi 9. Jul 2008, 22:20
von stefkey
Hallo,

wie kann ich den folgende Funktion so umschreiben das der Dateinname und nicht die Description aus der Datenbank ausgelesen wird?

Ich meine das löst mein Problem, aber ich komme einfach nicht weiter.

Vielleicht hat ja jemand einen Tip.


Grüße und Danke,
stefkey



function ig_getMedienName($idupl) {

global $cfg, $cfgClient, $db, $client, $lang;

$cApiClient = new cApiClient($client);
$language_separator = $cApiClient->getProperty('language','separator');
if( is_numeric($idupl) ) {
//ID is a number
$query = "SELECT description FROM ".$cfg["tab"]["upl"]." WHERE idupl = ".$idupl;


} else {
//ID is a string
$path_parts = pathinfo($idupl);
$upload = $cfgClient[$client]['upl']['frontendpath'];
$len = strlen($upload);
$pos = strpos($idupl,$upload);
$dirname = substr($path_parts['dirname'],$pos+$len).'/';
$danis = $dirname.$path_parts['basename'];
$query = "SELECT
value
FROM
".$cfg["tab"]["properties"]."
WHERE
itemid = '".$dirname.$path_parts['basename']."' AND
name = 'medianame'
";
}
$db->query($query);
if( $db->next_record() ) {
return htmlspecialchars(urldecode($db->f("value")));
} else {
return '';
}
}

Verfasst: Do 10. Jul 2008, 06:15
von dominik.ziegler
Für die Datenbankabfrage ist folgender Code verantwortlich:

Code: Alles auswählen

//ID is a number
$query = "SELECT description FROM ".$cfg["tab"]["upl"]." WHERE idupl = ".$idupl;
Wenn du SELECT description in SELECT filename umwandelst (natürlich in einer neuen Funktion), dürftest du eigentlich den Dateinamen aus der Datenbank erhalten.

Verfasst: Do 10. Jul 2008, 14:25
von stefkey
Hallo Dominik,

leider funktioniert das nicht. Irgendwie liest die Funktion ja jetzt den "value" Wert aus der properties Tabelle. Da gibts aber kein Filename.

Warum eigentlich aus der properties Tabelle?


Hat jemand einen Hinweis?


Danke und Grüße,
stefkey

Verfasst: Do 10. Jul 2008, 14:34
von frederic.schneider_4fb
Nein. Mit der genannten Abfrage von Dominik wird der Eintrag "filename" aus der Tabelle "con_upload" ausgelesen. Von "properties" steht da null :?:.

Verfasst: Do 10. Jul 2008, 14:43
von stefkey
ok, in der if Anweisung läuft aber der else -Fall und dort gehts zur probaties:



if( is_numeric($idupl) ) {
//ID is a number
$query = "SELECT description FROM ".$cfg["tab"]["upl"]." WHERE idupl = ".$idupl;


} else {
//ID is a string
$path_parts = pathinfo($idupl);
$upload = $cfgClient[$client]['upl']['frontendpath'];
$len = strlen($upload);
$pos = strpos($idupl,$upload);
$dirname = substr($path_parts['dirname'],$pos+$len).'/';
$danis = $dirname.$path_parts['basename'];
$query = "SELECT
value
FROM
".$cfg["tab"]["properties"]."
WHERE
itemid = '".$dirname.$path_parts['basename']."' AND
name = 'medianame'
";
}
$db->query($query);
if( $db->next_record() ) {
return htmlspecialchars(urldecode($db->f("value")));
} else {
return '';
}

Verfasst: Fr 11. Jul 2008, 10:05
von tono
In dieser Funktion läuf der else-Fall aber nur, wenn du die Funktion mit einem String aufrufst. Und das macht nur Sinn, wenn dieser String der Dateiname ist (so ist die Funktion gedacht). Wenn Du die Funktion mit dem Dateinamen aufrufst brauchst Du den Dateinamen aber nicht zurück, oder?

Schreib bitte welche Informationen der Datei Du hast, und welche Du brauchst. Zur Not mit Beispiel.

Verfasst: Fr 11. Jul 2008, 10:57
von stefkey
ok, der String ist aber:

/home/www/webxxx/html/markus/upload/bildergalerie/kl/backstage.jpg

ich möchte am liebsten nur

"backstage"

Geht das irgendwie mit [basename]

1000 Dank und Grüße,
stefkey

Verfasst: Fr 11. Jul 2008, 11:05
von tono

Verfasst: Fr 11. Jul 2008, 11:51
von stefkey
super, hat geklappt.

Vielen Dank!

Grüße,
stefkey

PS Dateinamen mit einem + Zeichen werden in der Dateiverwaltung nicht angezeigt? Ist das ein kleiner Bug?

Verfasst: Sa 12. Jul 2008, 16:23
von tono
Da würde ich mal blind auf urlencode / urldecode tippen. Ich guck mal rein.