Bilder verschieben!

ehm.. bei unlink muss das im gleichen ordner sein?
also zb: wenn ich im Ordner UPLOAD was löschen will muss das script dann im Ordner UPLOAD sein?
 
Dönerman hat gesagt.:
ehm.. bei unlink muss das im gleichen ordner sein?
also zb: wenn ich im Ordner UPLOAD was löschen will muss das script dann im Ordner UPLOAD sein?

Nein, das Script muss nicht im gleichen Ordner sein. Du musst die Datei aber mit dem absoluten Pfad angeben.

mfg
forsterm
 
Klar kann man auch einen Ordner total leeren , und bei Bedarf den Ordner noch hinterher schieben :)

PHP:
  if(isset($_POST["ordner"]) && is_dir("Bilder/".$_POST["ordner"]))
  {
    $filesgesammt = 0;
    loeschen($filesgesammt);
  }
  
  function loeschen($filesgesammt)
  /**
  /* Funktion zum löschen von Datein im Ordner und dann den Ordner
  */
  {
    chdir("Bilder"); //in Ordner Galerie\Bilder gehen
    $Directory = opendir($_POST["ordner"]);  // ausgewählten Ordner öffnen
  
    do
    {
    $files = array();  // array erstellen für die Datein innerhalb des Ordners
  
  	while ($loeverinh = readdir($Directory))  // Ordner auslesen lassen
  	{
  	  if($loeverinh != "." && $loeverinh != "..")
  		{
 		 $loeverinh = explode("." ,$loeverinh); // Alle Datein Ordner in ein Array zerlegen
  			 {
 			 if(count($loeverinh) > 1) // Wenn es eine Datei war test [.] txt
  					{
 					 $file = join("." ,$loeverinh); // dann füge die Datei wieder zusammen test.txt
 					 array_push($files , $file); // stopf es hinten an das Dateiarray file ran
 					 $filesgesammt++; //zähle filesgesammt hoch
  					}
  			}
  		}
  	}
     $x = 0;
     
    }while($x != 0);
    closedir($Directory);
  
  if($filesgesammt != 0 && is_dir($_POST["ordner"]))
  	{
  	   chdir($_POST["ordner"]); // \Galerie\Bilder\Ordner
  		for ($i = 0 ; $i < count($files) ; $i++)
  			{
  			 @unlink($files[$i]); // Lösche alle Datein im Ordner
  
  		}
  
  		$filesgesammt = 0;
  		chdir("../../");
  		// Zurück in den Ordner Galerie
  		loeschen("$filesgesammt");
  	  }
  	else
  	{
  	   rmdir($_POST["ordner"]);
  	   chdir("../"); // Ordner Bilder wieder schliessen
  	   echo "Alle Datein im Ordner und der Ordner wurden gelöscht!";
  	}
  }
  
  /**
  /* Ordner löschen Ende
  */

Damit kannst den gesammten Inhalt und danach den Ordner noch löschen.

Im Prinzip ruft die Funktion sich selber auf , beim ersten durchlauf wird der Inhalt gezählt. Sollte etwas drinnen sein zähle die elemente.

Danach geht er in eine If Anweisung , wenn noch Elemente im Ordner waren nur Datein muss ich da anmerken dann lösche sie alle raus und geh wieder zum Beginn der Funktion.
Danach wird er keine Elemente mehr im Ordner finden und ihn selber löschen.
Es sei denn es existieren noch Unterverzeichnisse.
 
ALso zur erklärung , das ist eine komplette Galerie , diese hat die Ordner Struktur

Galerie -> (Ordner) Bilder wo die ganzen Subordner erstellt werden oder sich befinden -> Ordner die angelegt wurden.

Angeonmmen ich wähle den Order Fips an , klicke löschen an und dann löscht er den weil eine Übergabe mittels $_GET stattfand. Die Übergabe findet aber auch dann noch statt wenn ich F5 drücke.

Also Schau ich nach ob im Ordner Bilder ein Ordner Fips enthalten ist , das ist alles zwecks aktualisieren, wenn ich nach dem er das gelöscht hat F5 drücken würde, dann würde der Ordner ja nicht mehr existieren und er würde dennoch versuchen ihn dann zu löschen was zu einer kleinen Fehlermeldung führen würde.

PHP:
   <?php
   $imagetype = array("1" => "gif" , "jpg" , "png");
   $bilder = array();
   $x = 1;
   
   /**
   /* Bilder einlesen und in Array speichern
   */
     $bpfad_oeffnen = opendir("Bilder");
   
   	while($bpfad_offen = @readdir($bpfad_oeffnen))
   	{
   	  if($bpfad_offen != "." && $bpfad_offen != "..")
   	  {
   		$bfile = explode("." , $bpfad_offen);
   		foreach ($imagetype as $key => $value)
   		{
   			if(count($bfile) == 2 && $bfile[1] == $value)
   				{
  				 $bfile = join("." , $bfile);
  				 array_push($bilder , $bfile);
   				} //IF Ende
   		  } //Foreach ende
   		} //IF Ende
   	} //While ende
   
   $seiten_zahl = count($bilder)/4;
   
   if(isset($_GET["seite"]) && isset($_GET["id"]) && $_GET["seite"] != 1){
      for($i =($_GET["id"]+1); $i < count($bilder);$i++)
   	{
   	  echo $bilder[$i]."<br>";
   	  
   		if($x%4 == 0)
   		{
 		 echo "<a href='".$_SERVER["PHP_SELF"]."?seite=".($_GET["seite"]-1)."&id=".($_GET["id"]-4)."'>seite.".($_GET["seite"]-1)."</a>";
   		  echo "<  >";
 		 echo "<a href='".$_SERVER["PHP_SELF"]."?seite=".($_GET["seite"]+1)."&id=".$i."'>seite.".($_GET["seite"]+1)."</a>";
   		  break;
   		}
   		else if($_GET["seite"] == $seiten_zahl)
   		{
   			for($i = $i+1 ; $i < count($bilder); $i++)
   			{
   				echo $bilder[$i]."<br>";
   			}
 		 echo "<a href='".$_SERVER["PHP_SELF"]."?seite=".($_GET["seite"]-1)."&id=".($_GET["id"]-4)."'>seite.".($_GET["seite"]-1)."</a>";
   		  break;
   	  }
   	  $x++;
   	}
   }
   else
   {
    for($i = 0 ; $i < count($bilder) ; $i++)
   	{
   		echo $bilder[$i]."<br>";
   		if($x%4 == 0)
   		{
 		 echo "<a href='".$_SERVER["PHP_SELF"]."?seite=2&id=".$i."'>seite 2</a>";
   		  break;
   		}
   		$x++;
    }
   }
   ?>

PHP:
$seiten_zahl=count($bilder)/4
die 4 ist wie viele Bilder angezeigt werden sollen pro Seite , das gleiche wie beim Modulo Operator und ebenfalls in $_GET[id]-4. Wenn du 6 Bilder anzeigen willst musst du das anpassen.

Und wo ich schon mal bei bin , hier ist noch die Blätter Funtion Ordner muss ebenfalls noch angepasst werden und die While Schleife is verschwunden weil die eh nix gemacht hat wie mir dann aufgefallen ist.
Sicher nicht das beste Beispiel funktioniert aber bei mir prima und hat mich ein paar Nerven gekostet *G*

So und viel Spass damit ;)
 
Zuletzt bearbeitet:
Zurück