Problem: höchste Nummer finden

smoxx

Grünschnabel
Hi Leute,

Mein Code soll bei nem Upload das File-Verzeichnis durchsuchen (Unterordner zählen) und einen neuen Unterordner anlegen. Ordnernamen sind Nummern & fehlende Nummern (gelöschte Ordner) sollen ignoriert werden...

Bsp: vorhanden sind zB: \1 , \2, \4, \11 ---> \12 wird angelegt

OK zugegeben, alles in ein array und dann natsort, das würde gehen - aber was ist wenns mal >5000 ordner sind? Dauert doch ewig, oder täusch ich mich da?

Ich komme einfach nie bis zur höchsten Nr. mit den Methoden die mir geläufig sind.
Sorry, kein Code weil kein Bakup weil Frust
 
Wieso stützt du das ganze nicht mit einer Datenbank? Das würde diese Sache und einiges andere vereinfachen.
Denk drüber nach ;)

Ansonsten die unsaubere Methode ohne Datenbank:

1. Das Verzeichnis auslesen lassen
2. alle Ordner in einen Array speichern
3. diesen sortieren
4. den letzten Eintrag nehmen
... und schon hast du die höchste Nummer.

Wenn das jedoch häufiger gemacht wird(und sich dabei natürlicherweise die Datenmenge vergrößert) -> Horror für den Server!

Deswegen rate ich zur Datenbankmethode.
Dort musst du diese Variante ein einziges Mal ausführen um die ganzen bestehenden Verzeichnisse in die DB zu bekommen
 
Stimmt, an diese Möglichkeit hab ich gar nicht gedacht.
Das ist auch in wenigen Minuten realisiert, aber jedoch sehr unsauber, wie ich finde. Aber jeder hat seinen eigenen Stil, mh ;)
 
Super Idee! Unsauber oder nicht, da ist wohl ein Cronjob angesagt
Da spar ich mir sicher einigen Stress wenn ich alle Verzeichnisse mit zB 6 Zeichen benenne damit ich nicht unterschiedliche bytelängen auslesen muss
Ich google mal nach führenden Nullen
THX Leute
 
Hast Recht, Cronjob is Quatsch... höchste Nr steht also im Infofile, mein makedir code nimmt sich die nötigen bytes aus dem Infofile, legt den Ordner an, Wert++ & schreibt ihn wieder in den File ... genial simpel
Das kann was ;) ich mach mich ran und poste den Code wenn er fertig ist - demnächst - aber heut nicht mehr

fettes Danke Matthias R & Ramon
 
Hallo,


Hm, was soll daran denn unsauber sein? Ist doch im Prinzip auch nichts anderes als das ganze in einer Datenbank zu speichern…

Grüße,
Matthias


Es ist nicht direkt unsauber, aber ich mag persönlich keine plain-text-dbs... wenn du davon mehrere Files hast, wird es auch irgedenwann unübersichtlich... ganz zu schweigen vom Auslesen komplexeren pt-dbs.... aua aua ;)
 
für alle die programmierfaul sind hier meine beta:
PHP:
<?php
$PICTURE_FOLDER	= "pics"; //muss raus nach include
$nfo = "info.txt";
//Dateien zählen
if (! chdir("$PICTURE_FOLDER")) die ("<b>! chdir</b>");
if (!file_exists($nfo)){echo "$nfo gibts nicht!";}
elseif (!is_writable($nfo)){echo "kein schreibzugriff für $nfo!";}
else
{	
	if (! $handle = fopen($nfo,"r")) die ("<b>kein fopen!</b>");
	if (! $nextdir = ((string)fread($handle, 8))) die ("<b>kein fread!</b>");
	fclose($handle);
	
	if( mkdir("$nextdir", 0755) )
		{
			echo("Verzeichnis Nummer $nextdir erstellt...<br>");
			$nextdir = (integer)$nextdir;
			$nextdir++;
			$nextdir = str_pad($nextdir, 8, "0", STR_PAD_LEFT);
			echo"$nextdir";
			
		if (! $handle = fopen($nfo,"w")) die ("<b>konnte nichts in $nfo schreiben!</b>");
			fputs($handle, $nextdir, 8);
		fclose($handle);
			
		}
	else echo("<b>!!geht garnix!!</b><br>");
}
chdir("..");
?>
Jemand was besseres? Dann gib mir!
 
Zurück