Alles für die Homepage... Scripte, Templates, Workshops und Support
Startseite | Forum | Webtemplates | PHP Scripte | CGI Scripte | CGI-Perl Workshop | Selfhtml & PHP | Linkdatenbank | Downloadbereich

Startseite Artikel / Artikel lesen

Kategorie: PHP 02.04.2008 17:33 / (Artikel mit 2 Seiten)

Daten einen selbstdefinierten Index zuweisen

Oft kann es nützlich sein Daten beim speichern einen eigens dafür optimierten Sortierindex zuzuweisen. Einsatzzwecke können sein: Zusammenfassung von Wortlisten (z.B. die Worte die mit A,a,Ä,ä beginnen unter Buchstabe A abzulegen, oder das verschieben von Dateien mit bestimmten Endungen in festgelegte Zielverzeichnisse.

2. Beispiel, zuordnen von Verzeichnissen nach Dateiendung

Bei Dateiuploads möchte man vielleicht gern das die Dateien, je nach Endung, in seperate Verzeichnisse verschoben werden. Auch hier kann man wieder ein Indexarray anlegen was im Key die Endungen speichert, im Value des assoziativen Arrays die Verzeichnisnamen.

1. Das komplette Script

CODE:
<?php

$eingabe = array('rechnung.txt', 'bild.gif', 'tabelle.xls', 'music.wav', 'datei.swf',  'programm.tar.gz');

foreach ($eingabe as $values) {

echo "Wert <b>$values</b> wird in Verzeichnis <b>" . indexer($values) . "</b> gespeichert<br>\n";
}

function indexer($wert) {

$indexarray = array(
'gif,jpg,png'             => 'bilder',
'txt,dat'                 => 'texte',
'zip,rar,tar,tar.gz'     => 'zip',
'wav,mid,avi'             => 'wav',
'swf'                     => 'flash',
'doc,xls,odt'             => 'dokumente'
);

$name_endung = explode('.', $wert);

if (preg_match("/(.*)\.tar\.gz$/i", $wert)) {
    
    $endung = 'tar.gz';

} else {
    
    $endung = array_pop($name_endung);
}


$gefunden = 0;
while(list($key, $val) = each ($indexarray)){
$keydata = explode(',', $key);
    if(in_array($endung, $keydata)) {
    $datei_index = $val;
    $gefunden = 1;
    break;
    }
}

$datei_index = $gefunden == 1 ? $datei_index : 'allgemein';

return $datei_index;

}

?>


HINWEIS Normalerweise testet man bei der Dateiendung auf das was nach dem letzten . Punkt steht. Es gibt aber auch Dateien, wie z.B. das hier dargestellte tar.gz als Dateiendung. Hier ermittelt man zunächst mittels preg_match ob es sich um eine solche Datei handelt, wenn ja wird als Value für $endung tar.gz zugewiesen. Das braucht natürlich nur getestet werden wenn für Uploads auch ein solcher Dateityp erlaubt wurde.

Dieses Script eignet sich z.B. auch dazu wenn man Dateien per FTP auf den Server in ein Verzeichnis lädt und die Dateien dann per Browserbasiertem Formular noch mit Texten versehen will, beim speichern wird dann die Endung getestet und die Datei an den Zielort verschoben.

Genausogut kann man damit Dateien für Mitglieder bereitstellen, hat man z.B. Rechnungen eines bestimmten Datums oder Namensformates, Daten hochladen, Script aufrufen und Daten in Mitgliederverzeichnisse verschieben lassen.

Die Daten des Indexarrays können natürlich auch als externe Datendatei abgelegt werden, auch ist eine Datenbankbasierte Speicherung ist möglich.

2. Die Scriptausgabe

Wert rechnung.txt wird in Verzeichnis texte gespeichert
Wert bild.gif wird in Verzeichnis bilder gespeichert
Wert tabelle.xls wird in Verzeichnis dokumente gespeichert
Wert music.wav wird in Verzeichnis wav gespeichert
Wert datei.swf wird in Verzeichnis flash gespeichert
Wert programm.Tar.Gz wird in Verzeichnis zip gespeichert

Drucken | Artikel wurde 2949 mal aufgerufen

 
Impressum - Kontakt - Datenschutzerklärung