2Danke
ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
241
241
EMPFEHLEN
-
Wer kann mir ein bischen helfen?
Ich erzeuge mit php ein Verzeichnis mit Ordnern, in die user fotos uploaden können.
Jeder user hat seinen Foto Ordner. Dabei möchte ich, dass immer nur maximal 999
Ordner in einem Ordner liegen (soll wohl sonst zu Problemen führen).
Realisiert habe ich das mit Zurhilfenahme der user-id.
Das funktioniert, obwohl ich als greenhorn sicher Fehler gemacht habe.PHP-Code://id auffüllen nach links mit nullen 6 stellig
$zahl = str_pad($user_id, 6 ,'0', STR_PAD_LEFT);
//zahl in dreistellige zahlen zerlegen von rechts beginnend
$v1 = substr ($zahl,-3,3);
$v2 = substr ($zahl,-6,3);
$path = "$v2/$v1";
if ( mkdir ( '../foto/'.$path.'/files', 0700, true ) )
{echo 'Verzeichnis erstellt!';}
Nun möchte ich aber kontrollieren, ob es diesen Pfad, also das Verzeichnis, bereits gibt.
Eigentlich dürfte das ja nicht vorkommen, da ja jede user-id einzigartig ist. Konnte ich mich halbwegs verständlich machen?Geändert von phpameise (12.01.12 um 18:28 Uhr)
-
12.01.12 18:36 #2
So könntest du zum Beispiel die Anzahl der Ordner in einem Ordner zählen:
PHP-Code:define('SD_NAMES', 1);
define('SD_COUNT', 2);
function getSubDirs($dir, $mode=SD_NAMES)
{
if ( !dir_exists($dir) ) return array();
$contents = scandir($dir);
if ( $dir === FALSE ) return array();
if ( $mode & SD_NAMES )
$subdirs = 0;
else
$subdirs = array();
foreach ( $contents as $entry )
{
if ( is_dir($dir.DIRECTORY_SEPARATOR.$entry) )
{
if ( $mode & SD_NAMES )
$subdirs[] = $dir.DIRECTORY_SEPARATOR.$entry;
else
$subdirs++;
}
}
return $subdirs;
}
if ( getSubDirs($v1, SD_COUNT) > 999 )
{
// Fehlerbehandlung!
// ...
exit();
}
if ( getSubDirs($v2, SD_COUNT) > 999 )
{
// Fehlerbehandlung!
// ...
exit();
}
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
Ich glaub ich habs:
PHP-Code:if (!is_dir('../foto/'.$path.'/files')) {
if ( mkdir ( '../foto/'.$path.'/files', 0700, true ) )
{echo 'Verzeichnis erstellt!';}
}
else
{
echo 'Verzeichnis gibts schon!';
}
Geändert von phpameise (12.01.12 um 18:52 Uhr)
-
Das sieht natürlich viel spektakulärer aus. Schau ich mir morgen mal genauer an. Danke
-
Ein Tipp am Rande. Formatiere dein Code mit Tabulatoren und man erkennt sofort welcher if wo endet ohne das man Klammern zählen muss
Nachtrag:PHP-Code:if (!is_dir('../foto/'.$path.'/files')) {
if ( mkdir ( '../foto/'.$path.'/files', 0700, true ) ){
echo 'Verzeichnis erstellt!';
}
}else{
echo 'Verzeichnis gibts schon!';
}
Ich finde ComFreaks Funktion ein wenig kompliziert (geschweige davon, dass is_dir($entry) mMn immer auf false läuft, da $entry nur ein Ordnername ist, jedoch kein Ordnerpfad).
Ist natürlich geschmacksache - ich bevorzuge Arrays und Array-Funktionen *g*
PHP-Code://id auffüllen nach links mit nullen 6 stellig
$zahl = str_pad($user_id, 6 ,'0', STR_PAD_LEFT);
$path = substr_replace($zahl, DIRECTORY_SEPARATOR, 3, 0);
//Pfad generieren
$myDir = buildPath('..', 'foto', $path, 'files');
//TODO: Ermitteln ob der Pfad exisitert....
//Alle Items auslesen
$items = scandir($myDir);
//Alles was kein Ordner ist rausfiltern
$dirs= array_filter($items, 'filterIsDir');
//Die Anzahl Dateien ermitteln
$countDirs = count($dirs);
/**
* generiert aus allen übergebenen Values einen Pfad mit dem passenden Separator
*/
function buildPath(){
$items = func_get_args();
return implode(DIRECTORY_SEPARATOR, $items);
}
/**
* Ermittelt ob es sich um eine Folder im angegeben verzeichnis handelt
*/
function filterIsDir($item){
return is_dir(buildPath($GLOBALS['myDir'], $item));
}
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Ich danke Euch!
-
13.01.12 15:57 #7mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
Ähnliche Themen
-
Verzeichnis erstellen!
Von soa im Forum JavaAntworten: 7Letzter Beitrag: 21.05.11, 19:57 -
Bilder aus Verzeichnis auslesen, thumb erstellen und in anderem Verzeichnis speichern
Von saraaa im Forum PHPAntworten: 2Letzter Beitrag: 17.02.09, 10:15 -
Verzeichnis erstellen
Von mtk-flo im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 26.06.07, 17:59 -
verzeichnis erstellen mit php
Von creativeheadz im Forum PHPAntworten: 1Letzter Beitrag: 30.05.05, 22:37 -
Verzeichnis erstellen
Von Slater im Forum PHPAntworten: 1Letzter Beitrag: 02.09.02, 12:54





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren