# Mit php dynamisch Namen von Bildnamen sowie Pfad in mysql Datenbank speichern



## mallmis (19. November 2007)

Hallo liebe Forum Gemeinde!

Ich möchte gerne, wie schon in der Überschrift angegeben, dynamisch erstellte Bildnamen, samt Pfad in einer mysql Datenbank speichern. Ich habe das Problem, daß ein mehrfach Bildupload mit einer foreach Schleife besteht und die Dateien umgewandelt werden in drei verschiedene Größen. Dieses Script funktioniert auch ganz prima, wenngleich noch einige Sicherheitsabfragen usw. fehlen. Das Script wird aber nie online betrieben werden, sondern dient nur zur Erfassung von Daten zu verschiedenen Ferienobjekten auf den Balearen.

Da habe ich ja bereits die Namen der Dateien als Variable, aber wie kann ich es dann realisieren, diese in die Datenbank mit den Feldern bild_1, bild_2, bild_3 usw. sortiert nach Größe zu schreiben. Es gibt auch noch Felder mit bild_thumb_1, bild_thumb_2 usw. sowie für die dritte Größe bild_150_1, usw.. 

Bin nicht so ganz fit in PHP, bemühe mich aber sehr immer neues zu lernen.

Überlegt habe ich mir schon, da die Pfade ja im Array mit z.b. pfad[0], pfad[1] pfad[2] übergeben werden, ob man hier ansetzen kann. 

Die Dateien bekommen auch immer je nach Größe eine Endung verpasst z.B. file_150.jpg, file_400.jpg, file_thumb.jpg. Ob man anhand der Endungen sagen kann in welches Feld und unter welcher Bildnummer der Pfad abzulegen ist?

Auch habe ich schon darüber nachgedacht, bei jedem Schleifendurchlauf die drei Pfade plus Bildnamen in der Datenbank zu speichern, aber wie kriege ich das nur hin, daß diese pfade in die richtigen Felder gelangen? 

Warscheinlich habe ich wohl dafür auch die Datenbank falsch konzipiert. Also wie gesagt, es sind drin:id, Ordnername in dem die Bilder abgelegt werden, und die drei verschiedenen grössen, 25 mal jeweils.

Über Hilfe und Anregungen bei dieser Anfängerfrage würde ich mich sehr freuen und verbleibe 

mit freundlichen und sonnigen Grüßen aus Mallorca,

mallmis


----------



## nero_85 (20. November 2007)

Also wie das aussieht speicherst du die Pfade in dem Array zwischen. Vielleicht wäre es dann eine Lösung das Array multidimensional zu gestalten. z.b.:

Das Hauptarray nenne ich einmal $bilder_dump.
Weiters würde ich das so unterteilen:
Da du jedes Bild verschieden groß speicherst, legst du für jedes Bild ein Unterarray an:

Also in $bilder_dump erstellst du ein weiteres Array (z.B.: $bild)
Darin kannst du nun den Pfad und die Dateinamen mit den Größen speichern (z.B.: mit dem Array $groesse) und in die Vars für die Größenunterteilung kannst du dann die eigentlichen Bildernamen übernehmen.

Würde mann das Array jetzt in einem Baum darstellen könnte das dann so aussehen:


```
+ $bilder_dump
|
+-+$bild[1]
| |
| +-+$groesse['klein']
|   |
|   +$groesse['groß']
|   |
|   +$groesse['thumb']
|
+-+$bild[2]
| |
| +-+$groesse['klein']
|   |
|   +$groesse['groß']
|   |
|   +$groesse['thumb']
|
```

Damit kannst du das ganze mit einer Schleife in die DB schreiben.


----------



## mallmis (20. November 2007)

Vielen lieben Dank für die kompetente Antwort!

Die Werte, welche ich dann in diesem Multidimensionalen Array übergebe bleiben dann in der Schleife die meine verschiedenen Bildgrößen erstellt erhalten und ich kann bei Beendigung dieser alle Bildnamen und Pfade auf einmal speichern? Oder muß ich die dann pro Schleifendurchgang in der Tabelle speichern?

Danke im Voraus,

mallmis


----------



## mallmis (20. November 2007)

Ich habe dann mal einen Code erstellt, welcher funktionieren sollte:


```
<?php
$bilder_dump = array ( $bild[1] => array ( $groesse['thumb'], $groesse['_400'], $groesse['_150'] ),
					 ( $bild[2] => array ( $groesse['thumb'], $groesse['_400'], $groesse['_150'] ),
					 ( $bild[3] => array ( $groesse['thumb'], $groesse['_400'], $groesse['_150'] ),
					 ( $bild[4] => array ( $groesse['thumb'], $groesse['_400'], $groesse['_150'] ),
					 usw.......
?>
```

Also, hier kann ich dann in $groesse den Pfad- und Dateinamen speichern und in den vars den Bildernamen, theoretisch. Nun muß ich nur noch herausfinden, wie ich dies in meinem Script zur Anwendung bringe.

Hier mal das Script:


```
<?php 
	

// Wurde das Formular abgeschickt? 
header("Content-type: image/jpeg");

if (isset( $_POST['submitbutton'] )) 

{
	$neuer_ordner=$_POST['name_ordner'];
	$neuer_ordner_bereinigen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' );
	$neuer_ordner_neu = strtr( strtolower( $neuer_ordner ), $neuer_ordner_bereinigen );	
	
	
	// Ordner anlegen mit PHP
	mkdir ("/xampp/htdocs/buchung/images/$neuer_ordner_neu/", 0777);
	{
		//Dateiendungen und Ersetzungen 
		$Erlaubte_Dateiendungen = array( "jpg", "JPG", "gif", "GIF", "png","bmp" ); 
		$Dateiname_bereinigen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' ); 
		 
		
		// Scleife erzeugen für jedes Bild
		foreach ($_FILES['datei']['error'] as $key => $error) 
		{if ($error == UPLOAD_ERR_OK)
		
		// Pruefen ob die hochgeladenen Datei mehr als 0 Byte hat
		if ($_FILES['datei']['size'][$key] > 0) 
		{ 
			
			
			
			// Dateiendung der hochgeladenen Datei abtrennen 
			$UploadDateiEndung = array_pop( explode( ".", strtolower( $_FILES['datei']['name'][$key] ) ) ); 
			
			// Prüfung ob die Endung der hochgeladenen Datei in dem array steht 
			if (!in_array( $UploadDateiEndung, $Erlaubte_Dateiendungen )) 
				{ 
					die( "Die angeh&auml;ngte Datei hat eine nicht erlaubte Dateiendung!" ); 
				} 
			
			
				// Neuen Dateinamne erzeugen indem Umlaute und Leerzeichen umgewandelt werden 
				$DateiNameNeu = strtr( strtolower( $_FILES['datei']['name'][$key] ), $Dateiname_bereinigen ); 
				// UMASK resetten um Dateirechte zu ändern (wird nur fuer Linux benoetigt, Windows ignoriert das) 
				$umask_alt = umask( 0 );
				
				// Hochgeladenen Datei verschieben 
				if (@move_uploaded_file( $_FILES['datei']['tmp_name'][$key], "/xampp/htdocs/buchung/images/$neuer_ordner_neu/" .$DateiNameNeu )) 
				 
					{
	                
					include("function_400.php");
					
					include("function_150.php");
					
					// Dateirechte setzen, damit man später die Datei wieder vom FTP bekommt und die UMASK auf den alten Wert setzen 
					@chmod( $neues_bild, 0777 ); 
					umask( $umask_alt );
					
					include("function_thumbs.php");
					
					// Pfade und Verzeichnisnamen in Datenbank einlesen
					
					
					 
				} 
			else 
			{ 
				// UMASK resetten 
				umask( $umask_alt ); 
				// Hier steht Code der ausgefuehrt wird, wenn der Upload fehl schlug 
				
					
			}
		} 
	}
} 	
}
					
if (isset( $_POST['submitbutton1'] ))

{
	$neuer_ordner=$_POST['name_ordner'];
	$neuer_ordner_bereinigen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' );
	$neuer_ordner_neu = strtr( strtolower( $neuer_ordner ), $neuer_ordner_bereinigen );
	
	   {
		// Whiteliste Dateiendungen und Ersetzungen 
		$Erlaubte_Dateiendungen = array( "jpg", "gif", "png", "bmp" ); 
		$Dateiname_bereinigen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' ); 
		// Pruefen ob die hochgeladenen Datei mehr als 0 Byte hat 
		// Hat sie das nicht, wurde auch nichts hochgeladen, logisch, was?! ;) 
		
		// Scleife erzeugen für jedes Bild
		foreach ($_FILES['datei']['error'] as $key => $error) 
		{if ($error == UPLOAD_ERR_OK)
		
		if ($_FILES['datei']['size'][$key] > 0) 
		{ 
			// Dateiendung der hochgeladenen Datei abtrennen 
			$UploadDateiEndung = array_pop( explode( ".", strtolower( $_FILES['datei']['name'][$key] ) ) ); 
			// Schauen ob die Endung der hochgeladenen Datei in der Whitelist steht 
			if (!in_array( $UploadDateiEndung, $Erlaubte_Dateiendungen )) 
			{ 
				die( "Die angeh&auml;ngte Datei hat eine nicht erlaubte Dateiendung!" ); 
			}
			// Datei in eine andere Größe umwandeln (2 mal) Thumb 100 * 75 und 400 * 300
			
			
			
			// Neuen Dateinamen erzeugen indem Umlaute und Leerzeichen umgewandelt werden 
			$DateiNameNeu = strtr( strtolower( $_FILES['datei']['name'][$key] ), $Dateiname_bereinigen );  
			// UMASK resetten um Dateirechte zu ändern (wird nur fuer Linux benoetigt, Windows ignoriert das) 
			$umask_alt = umask( 0 ); 
			// Hochgeladenen Datei verschieben 
			if (@move_uploaded_file( $_FILES['datei']['tmp_name'][$key], "/xampp/htdocs/buchung/images/$neuer_ordner_neu/" .$DateiNameNeu )) 
				 
					{
					include("function_400.php");
						
					// Temporären Speicher auf Server wieder frei geben 
				
					include("function_150.php");
					
					include("function_thumbs.php");
					
					
				// Dateirechte setzen, damit man später die Datei wieder vom FTP bekommt und die UMASK auf den alten Wert setzen 
				@chmod( $neues_bild, 0755 ); 
				umask( $umask_alt ); 
			} 
			else 
			{ 
				// UMASK resetten 
				umask( $umask_alt ); 
				// Hier steht Code der ausgefuehrt wird, wenn der Upload fehl schlug */
			} 
		} 
	}
}
}	


?> 
<html> 
<head> 
<title>Datei Upload</title> 
</head> 

<body> 
<form name="DateiUpload" id="DateiUpload" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
	<p>
	  <h1>Bilder der Objekte</h1>
	  <input type="text" name="name_ordner">
  &lt;= Neuen Ordner oder vorhandenes Verzeichnis angeben<br>
  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <input type="file" name="datei[]" id="datei">
	  <br>
	  <br>
	  <input type="submit" name="submitbutton" id="submitbutton" value="Dateien in neuen Ordner laden">
	  <input type="submit" name="submitbutton1" id="submitbutton1" value="Dateien in vorhandenen Ordner laden"> 
  </p>
</form> 
</body> 
</html>
```

und eine der functions(sind alle gleich bis auf groesse:


```
<?php
					
					$neues_bild = strtr( strtolower( $_FILES['datei']['name'][$key] ), $Dateiname_bereinigen );
					$pfad = "/xampp/htdocs/buchung/images/$neuer_ordner_neu/";
					$groesse = getimagesize( "$pfad$neues_bild" ); 
					$breite = $groesse[0]; 
					$hoehe = $groesse[1];
					$typ=$groesse[2];
					// Breite des Anzeigebildes festlegen (Höhe wird automatisch angepasst) 
					
					$breite_150 = 150;
					$hoehe_150_auto = intval($hoehe * $breite_150 / $breite);
					
					// Image wird in True Color generiert
				
					$bild_150 = imagecreatetruecolor( $breite_150, $hoehe_150_auto );

					
					switch ($typ)
						{
						case 1:
						$bild2 = imagecreatefromgif("$pfad$neues_bild");
						break;
						case 2:
						$bild2 = imagecreatefromjpeg("$pfad$neues_bild");
						break;
						case 3:
						$bild2 = imagecreatefrompng("$pfad$neues_bild");
						break;
						case 4:
						$bild2 = imagecreatefromwbmp("$pfad$neues_bild");
						break;
						default: $gestorben="ja";
						}
					
					imagecopyresampled( $bild_150, $bild2, 0, 0, 0, 0, $breite_150 ,$hoehe_150_auto ,$breite ,$hoehe );
					// Endung "_150" bei Dateiname hinzufügen, vor ".jgp" 
					
					$neues_bild = explode (".", $neues_bild); 
					$zusatz2 = "_150.";
					// Anzeigebild in $pfad mit angepasstem Dateinamen speichern, JPG Qualität: 90
					
					switch ($typ)
						{
						case 1:
						imagegif($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]");
						break;
						case 2:
						imagejpeg($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]", 90);
						break;
						case 3:
						imagepng($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]");
						break;
						case 4:
						imagewbmp($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]");
						break;
						default: $gestorben="ja";
						
						}
						imagedestroy($bild2); 
						imagedestroy($bild_150);
						
						
?>
```

Ich hoffe es kann mir geholfen werden...

Danke im Voraus,

mallmis


----------



## nero_85 (20. November 2007)

Nun gut! Ich würde das Array gar nicht so direkt vorbereiten.

Das Ganze ginge auch direkt während dem Scriptablauf.
Ich nehme hier an dass nur das Hauptarray ($bilder_dump) definiert wurde.
Also statt:

```
<?php 
$bilder_dump = array ( $bild[1] => array ( $groesse['thumb'], $groesse['_400'], $groesse['_150'] ), 
                     ( $bild[2] => array ( $groesse['thumb'], $groesse['_400'], $groesse['_150'] ), 
                     ( $bild[3] => array ( $groesse['thumb'], $groesse['_400'], $groesse['_150'] ), 
                     ( $bild[4] => array ( $groesse['thumb'], $groesse['_400'], $groesse['_150'] ), 
                     usw....... 
?>
```
nur:

```
$bilder_dump=array();
```

Weiters währe es sinnvoller deine Funktionen wie folgt zu gestalten:

Du erstellst nur eine Datei (inc_funtions.php) und in diese schreibst du dann nur eine Funktion und zwar so:


```
function picSize($pic,$size){

//$pic ist die datei und $size die gewünschte Größe
//Das sind Argumente und werden anschließend beim Aufruf der Funktion übergeben.
//in der Funktion steht jetzt überall noch die Endung _150;
//das ist aber nicht wichtig ;)

                    $neues_bild = strtr( strtolower( $pic ), $Dateiname_bereinigen ); //hier steht nun die Variable welche Argument 1 bildet ($pic)
                    $pfad = "/xampp/htdocs/buchung/images/$neuer_ordner_neu/"; 
                    $groesse = getimagesize( "$pfad$neues_bild" );  
                    $breite = $groesse[0];  
                    $hoehe = $groesse[1]; 
                    $typ=$groesse[2]; 
                    // Breite des Anzeigebildes festlegen (Höhe wird automatisch angepasst)  
                     
                    $breite_150 = $size; //hier steht nun die Variable welche Argument 2 bildet ($size).
                    $hoehe_150_auto = intval($hoehe * $breite_150 / $breite); 
                     
                    // Image wird in True Color generiert 
                 
                    $bild_150 = imagecreatetruecolor( $breite_150, $hoehe_150_auto ); 

                     
                    switch ($typ) 
                        { 
                        case 1: 
                        $bild2 = imagecreatefromgif("$pfad$neues_bild"); 
                        break; 
                        case 2: 
                        $bild2 = imagecreatefromjpeg("$pfad$neues_bild"); 
                        break; 
                        case 3: 
                        $bild2 = imagecreatefrompng("$pfad$neues_bild"); 
                        break; 
                        case 4: 
                        $bild2 = imagecreatefromwbmp("$pfad$neues_bild"); 
                        break; 
                        default: $gestorben="ja"; 
                        } 
                     
                    imagecopyresampled( $bild_150, $bild2, 0, 0, 0, 0, $breite_150 ,$hoehe_150_auto ,$breite ,$hoehe ); 
                    // Endung "_150" bei Dateiname hinzufügen, vor ".jgp"  
                     
                    $neues_bild = explode (".", $neues_bild);  
                    $zusatz2 = "_150."; 
                    // Anzeigebild in $pfad mit angepasstem Dateinamen speichern, JPG Qualität: 90 
                     
                    switch ($typ) 
                        { 
                        case 1: 
                        imagegif($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]"); 
                        break; 
                        case 2: 
                        imagejpeg($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]", 90); 
                        break; 
                        case 3: 
                        imagepng($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]"); 
                        break; 
                        case 4: 
                        imagewbmp($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]"); 
                        break; 
                        default: $gestorben="ja"; 
                         
                        } 
                        imagedestroy($bild2);  
                        imagedestroy($bild_150);

}
```

Diese Datei (inc_functions.php) includest du nun am Anfang deines Scriptes

In der Funktion picSize machst du folgendes. Du speicherst den Pfad und den Namen der Datei in einer Variable, welche du am Ende der Funktion zurückgibst.


```
// Anzeigebild in $pfad mit angepasstem Dateinamen speichern, JPG Qualität: 90; Übergabe des Pfades+Dateiname in die Variable $path_file

$path_file=$pfad.$neues_bild[0].$zusatz2.$neues_bild[1]; 
                     
 switch ($typ){ 
    case 1: 
    imagegif($bild_150,$path_file); 
    break;
    case 2: 
    imagejpeg($bild_150,$path_file, 90); 
    break; 
    case 3: 
    imagepng($bild_150,$path_file);
    break; 
    case 4: 
    imagewbmp($bild_150,$path_file);
    break;
    default: $gestorben="ja"; 
} 

imagedestroy($bild2);  
imagedestroy($bild_150);

//Rückgabe des Pfades+Name
return $path_file
```

Nun musst du das ganze in die Arrays packen. Dazu lassen wir mitzählen, im wievielten Schleifendurchlauf wir sind:


```
//Counter für die Schleife definieren

$i=0;

// Schleife erzeugen für jedes Bild 
foreach ($_FILES['datei']['error'] as $key => $error)  {

    if ($error == UPLOAD_ERR_OK){
        
        if ($_FILES['datei']['size'][$key] > 0){  
           ....
           ....
           ....
           
           //Am Ende dieser If-Anweisung den Counter erhöhen
           $i++
       }
```


Und nun kannst du bequem dein Array befüllen, und zwar so:

Du machst du statt dem hier in deinem Script:


```
include("function_400.php"); 
                     
                    include("function_150.php"); 
                     
                    // Dateirechte setzen, damit man später die Datei wieder vom FTP bekommt und die UMASK auf den alten Wert setzen  
                    @chmod( $neues_bild, 0777 );  
                    umask( $umask_alt ); 
                     
                    include("function_thumbs.php");
```

Das hier:


```
$groesse["_150"]=picSize($_FILES['datei']['size'][$key],150); //hier wird nun unsere Funktion aufgerufen; Argument 1 ist die Datei und als größe definieren wir 150
$groesse["_400"]=picSize($_FILES['datei']['size'][$key],400); //hier wird nun unsere Funktion aufgerufen; Argument 1 ist die Datei und als größe definieren wir 400

// Dateirechte setzen, damit man später die Datei wieder vom FTP bekommt und die UMASK auf den alten Wert setzen
@chmod( $neues_bild, 0777 );  
umask( $umask_alt );

$groesse["thumb"]=picSize($_FILES['datei']['size'][$key],60); //hier wird nun unsere Funktion aufgerufen; Argument 1 ist die Datei und als größe definieren wir 60
//Hab mal eine Thumbnailgröße von 60 angenommen

//Array befüllen
$bild[$i] = $groesse
```

Und nach der Schleife befüllst du noch $bilder_dump:


```
$bilder_dump=$bild
```

Kannst du die Datenbank alleine befüllen?

PS.: Ich habe nichts davon versucht und doch einiges herumgedoktort, daher weiß ich nicht obs funktioniert.


----------



## mallmis (21. November 2007)

Vielen Dank für diese ausführliche Beschreibung und die Tips.

Hier habe ich noch so meine Probleme:



nero_85 hat gesagt.:


> ```
> $groesse["_150"]=picSize($_FILES['datei']['size'][$key],150); //hier wird nun unsere Funktion aufgerufen; Argument 1 ist die Datei und als größe definieren wir 150
> $groesse["_400"]=picSize($_FILES['datei']['size'][$key],400); //hier wird nun unsere Funktion aufgerufen; Argument 1 ist die Datei und als größe definieren wir 400
> 
> ...



Also 'size' habe ich auf 'name' gesetzt, da sonst ja nur eine Zahlenkombination mit der Größe ausgegeben wird. Im inc_function.php kommt jedoch leider nicht der inhalt der Datei an und beschließt so mit der Fehlermeldung:

Warning: getimagesize(p1011055.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\xampp\htdocs\buchung\inc_functions.php on line 6 

und natürlich darauf beziehend noch 20 mehr, aber ich denke diese ist das Hauptproblem.

Ich habe die Vermutung, daß durch das Verschieben der Hauptdatei im Vorfeld die eigentliche Datei nicht mehr vorhanden ist sondern nur noch der Name.

Wie kann ich dies ändern? Die Hauptdatei bräuchte ich eigentlich garnicht auf dem Server, also könnte man das uploaden dieser ja weglassen. Hier komme ich aber noch nicht weiter, wie ich den Code weiter gestalten kann.

Ich hoffe auf weitere so kompetente Hilfe. Ach ja, ein kurzes Beispiel, wie ich die Pfade und Dateinamen dann in der Datenbank ablege, wäre auch noch sehr sehr hilfreich.

Vielen Dank aus dem warmen Mallorca,

mallmis


----------



## nero_85 (22. November 2007)

War ja klar, hab da einen ziemlich groben Fehler eingebaut! 
Ich hab nicht berücksichtigt das $_FILES auch ein Array ist! 

Also, die Funktion in der inc_functions.php änderst du nun wie Folgt:


```
function picSize($pic,$size,$key){ 

//$pic ist die datei und $size die gewünschte Größe 
//Das sind Argumente und werden anschließend beim Aufruf der Funktion übergeben. 
//in der Funktion steht jetzt überall noch die Endung _150; 
//das ist aber nicht wichtig ;) 
//Die $key-Var übergibt den Schlüssel der außerhalb der Funktion ebenfalls $key heist.

                    $Dateiname_bereinigen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' );

                    $neues_bild = strtr( strtolower( $pic['datei']['name'][$key] ), $Dateiname_bereinigen ); //hier steht nun die Variable welche Argument 1 bildet ($pic) 
                    $pfad = "/xampp/htdocs/buchung/images/$neuer_ordner_neu/";  
                    $groesse = getimagesize( "$pfad$neues_bild" );   
                    $breite = $groesse[0];   
                    $hoehe = $groesse[1];  
                    $typ=$groesse[2];  
                    // Breite des Anzeigebildes festlegen (Höhe wird automatisch angepasst)   
                      
                    $breite_150 = $size; //hier steht nun die Variable welche Argument 2 bildet ($size). 
                    $hoehe_150_auto = intval($hoehe * $breite_150 / $breite);  
                      
                    // Image wird in True Color generiert  
                  
                    $bild_150 = imagecreatetruecolor( $breite_150, $hoehe_150_auto );  

                      
                    switch ($typ)  
                        {  
                        case 1:  
                        $bild2 = imagecreatefromgif("$pfad$neues_bild");  
                        break;  
                        case 2:  
                        $bild2 = imagecreatefromjpeg("$pfad$neues_bild");  
                        break;  
                        case 3:  
                        $bild2 = imagecreatefrompng("$pfad$neues_bild");  
                        break;  
                        case 4:  
                        $bild2 = imagecreatefromwbmp("$pfad$neues_bild");  
                        break;  
                        default: $gestorben="ja";  
                        }  
                      
                    imagecopyresampled( $bild_150, $bild2, 0, 0, 0, 0, $breite_150 ,$hoehe_150_auto ,$breite ,$hoehe );  
                    // Endung "_150" bei Dateiname hinzufügen, vor ".jgp"   
                      
                    $neues_bild = explode (".", $neues_bild);   
                    $zusatz2 = "_150.";  
                    // Anzeigebild in $pfad mit angepasstem Dateinamen speichern, JPG Qualität: 90  
                      
                    switch ($typ)  
                        {  
                        case 1:  
                        imagegif($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]");  
                        break;  
                        case 2:  
                        imagejpeg($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]", 90);  
                        break;  
                        case 3:  
                        imagepng($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]");  
                        break;  
                        case 4:  
                        imagewbmp($bild_150,"$pfad$neues_bild[0]$zusatz2$neues_bild[1]");  
                        break;  
                        default: $gestorben="ja";  
                          
                        }  
                        imagedestroy($bild2);   
                        imagedestroy($bild_150); 

}
```

So und nun musst du noch die Bereiche, wo du die Funktion aufrufst ändern:


```
$groesse["_150"]=picSize($_FILES,150,$key); //hier wird nun unsere Funktion aufgerufen; Argument 1 ist die Datei und als größe definieren wir 150 
$groesse["_400"]=picSize($_FILES,400,$key); //hier wird nun unsere Funktion aufgerufen; Argument 1 ist die Datei und als größe definieren wir 400 

// Dateirechte setzen, damit man später die Datei wieder vom FTP bekommt und die UMASK auf den alten Wert setzen 
@chmod( $neues_bild, 0777 );   
umask( $umask_alt ); 

$groesse["thumb"]=picSize($_FILES,60,$key); //hier wird nun unsere Funktion aufgerufen; Argument 1 ist die Datei und als größe definieren wir 60 
//Hab mal eine Thumbnailgröße von 60 angenommen 

//Array befüllen 
$bild[$i] = $groesse
```

Das Problem, denke ich, war dass ich nur die Dateigröße in die Funktion einlaufen hab' lassen und du hast nur den Dateinamen mit einlaufen lassen. Dadurch hat unsere Funktion keine Kopie von einem Bild erstellen können, da keine Dateiinformationen vorhanden waren, auf welche die Funktion zurückgreifen hätte können.

Ich übernehme nun die gesamten Dateiinfos mit in die Funktion und arbeite dort damit weiter! Müsste eigentlich problemlos funktionieren! Hoffe ich zumindest!

So nun zum MySQL-Teil:

Also ich weiß jetzt nicht genau wie deine Datenbanktabelle aussieht, aber ich würde sie so gestalten:

1. Spalte:
pic_id ; integer ; Primärschlüssel ; Auto-Increment

2. Spalte:
pic_path ; varchar (xxx) (Wo hier die drei "x" stehen, wählst du irgendeine beliebige Zahl. ich würde 150 wählen. Diese drei "x" sind die Anzahl der Zeichen, welche in dieser Spalte gespeichert werden können)

3. Spalte:
pic_size ; smallint(1) ; Standard = 1

Zur Erklärung:
Die erste Spalte sollte eigentlich klar sein. Sie vergibt für jedes Bild eine einzigartige ID in form einer fortlaufenden Nummer
Die zweite Spalte speichert den Pfad mit dem Dateinamen als ganzes.
Die dritte Spalte dient nur einem Einzigen Zweck:
Sie soll es erleichtern, festzustellen welche Größe das Bild hat. Wie zeige ich dir im Anschluss.

So jetzt kommen wir zur Speicherung des Bildes. Die MySQL-Anweisung sollte wie folgt aussehen. 

mysql_query("INSERT INTO `deine_tabelle` (pic_path,pic_size) VALUES ('hier_der_pfad','hier_das_größenpseudonym')");

Um das ganze nun zu verbinden brauchen wir wieder unser Array. Dieses lassen wir durchlaufen und während dieser Schleife speichern wir das dann in der DB:


```
foreach($bilder_dump as $bilder){
    foreach($bilder as $bild){
        //Das kleine Bild speichern
        mysql_query("INSERT INTO `deine_tabelle` (pic_path,pic_size) VALUES ('".$bild["_150"]."','1')");
        //Das große Bild speichern
        mysql_query("INSERT INTO `deine_tabelle` (pic_path,pic_size) VALUES ('".$bild["_400"]."','2')");
        //Das Thumbnail speichern
        mysql_query("INSERT INTO `deine_tabelle` (pic_path,pic_size) VALUES ('".$bild["thumb"]."','3')");
    }
}
```

In der Spalte pic_size speicherst du hier entweder 1, 2 oder 3.
1 steht für die Größe 150
2 steht für die Größe 400
3 steht für die Thumbnailgröße

Um nun nur Thumbnails aufzurufen genügt dann folgende SQL-Anweisung:


```
SELECT * FROM `deine_tabelle` WHERE pic_size='3'
```

Soweit alles klar?


----------



## mallmis (22. November 2007)

Hallo Nero,

vielen Dank nochmal, habe mich aber schon anderweitig durchgekämpft, code folgt.

Zur Datenbank, in die müssen alle Pfade, id sowie Verzeichnis.

Sieht so aus Spalte 1: id , Spalte 2: Verzeichnis, Spalte 3, bild_150_1, Spalte 4:Bild_150_2usw. ......Spalte 27: bild_400_1usw.......

Habe dies auch schon gelöst, nur kommen in der Tabellenreihe immer nur leere Felder zum Vorschein. Wenn ich eine echo Abfrage mache wird aber der Pfad mit Dateinamen angezeigt. Weiß nicht woran es liegen kann, denn die Werte im Array passen, habe ich mit Var_dump geprüft. Hier mal die Var_dump von $bilder_dump:

Hier der Pfad: /xampp/htdocs/buchung/images/angelique/ wurde korrekt ausgegeben mit echo.

Hier das Array bei drei hochgeladenen Bildern: 
array(3) { [1]=> array(3) { ["_150"]=> string(57) "/xampp/htdocs/buchung/images/angelique/angeliquei_150.jpg" ["_400"]=> string(57) "/xampp/htdocs/buchung/images/angelique/angeliquei_400.jpg" ["thumb"]=> string(59) "/xampp/htdocs/buchung/images/angelique/angeliquei_thumb.jpg" } [2]=> array(3) { ["_150"]=> string(57) "/xampp/htdocs/buchung/images/angelique/ilda_ginai_150.jpg" ["_400"]=> string(57) "/xampp/htdocs/buchung/images/angelique/ilda_ginai_400.jpg" ["thumb"]=> string(59) "/xampp/htdocs/buchung/images/angelique/ilda_ginai_thumb.jpg" } [3]=> array(3) { ["_150"]=> string(54) "/xampp/htdocs/buchung/images/angelique/wegberg_150.jpg" ["_400"]=> string(54) "/xampp/htdocs/buchung/images/angelique/wegberg_400.jpg" ["thumb"]=> string(56) "/xampp/htdocs/buchung/images/angelique/wegberg_thumb.jpg" } } 

wird ganz korrekt mit Var dump ausgegeben. Nur wird nichts in die Datenbank geschrieben, ausser den id welcher aber eh automatisch erstellt wird.

Hier mal der Code:

```
<?php


// Wurde das Formular abgeschickt ?

if (isset($_POST['submitbutton']))
{
   
	$bilder_dump = array();
	$neuer_ordner = $_POST['name_ordner'];
    $neuer_ordner_bereinigen = array('ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_');
    $neuer_ordner_neu = strtr(strtolower($neuer_ordner), $neuer_ordner_bereinigen);
    $pfad = "/xampp/htdocs/buchung/images/$neuer_ordner_neu/";
	include ("inc_functions.php");
    // Ordner anlegen mit PHP
    mkdir( $pfad, 0777 );
    
	
	{
        // Whiteliste Dateiendungen und Ersetzungen
        $Erlaubte_Dateiendungen = array("jpg", "JPG", "gif", "GIF", "png", "BMP", "bmp");
        $Dateiname_bereinigen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' );
		
	

        $i = 0;


        // Schleife erzeugen für jedes Bild
        foreach ($_FILES['datei']['error'] as $key => $error)
        {
            if ($error == UPLOAD_ERR_OK)
                // Pruefen ob die hochgeladenen Datei mehr als 0 Byte hat
                // Hat sie das nicht, wurde auch nichts hochgeladen, logisch, was?! ;)
                if ($_FILES['datei']['size'][$key] > 0)
                
				{

              
					
                    // Dateiendung der hochgeladenen Datei abtrennen
                    $UploadDateiEndung = array_pop(explode(".", strtolower($_FILES['datei']['name'][$key])));
					
                    // Schauen ob die Endung der hochgeladenen Datei in der Whitelist steht
                    if (!in_array($UploadDateiEndung, $Erlaubte_Dateiendungen))
                    {
                        die("Die angeh&auml;ngte Datei hat eine nicht erlaubte Dateiendung!");
                    }

					
                    // Neuen Dateinamne erzeugen indem Umlaute und Leerzeichen umgewandelt werden
                    $DateiNameNeu = strtr(strtolower($_FILES['datei']['name'][$key]), $Dateiname_bereinigen);
                    // UMASK resetten um Dateirechte zu ändern (wird nur fuer Linux benoetigt, Windows ignoriert das)
                    $umask_alt = umask(0);

                    // Hochgeladenen Datei verschieben
                    if (@move_uploaded_file($_FILES['datei']['tmp_name'][$key], $pfad.$DateiNameNeu))
                    {

                        $groesse["_150"] = picSize($_FILES['datei']['name'][$key], 150);//hier wird nun unsere Funktion aufgerufen; Argument 1 ist die Datei und als größe definieren wir 150
                        $groesse["_400"] = picSize($_FILES['datei']['name'][$key], 400);//hier wird nun unsere Funktion aufgerufen; Argument 1 ist die Datei und als größe definieren wir 400
                        $groesse["thumb"] = picSize($_FILES['datei']['name'][$key], 100);//hier wird nun unsere Funktion aufgerufen; Argument 1 ist die Datei und als größe definieren wir 100

                        //Array befüllen
						
                        $i++;
                        $bild[$i] = $groesse;


                        // Dateirechte setzen, damit man später die Datei wieder vom FTP bekommt und die UMASK auf den alten Wert setzen
                        @chmod($neues_bild, 0777);
                        umask($umask_alt);

                        // Pfade und Verzeichnisnamen in Datenbank einlesen

                        // Multidimensionales Array für den Eintrag in die Datenbank
						

                    }
                    else
                    {
                        // UMASK resetten
                        umask($umask_alt);
                        // Hier steht Code der ausgefuehrt wird, wenn der Upload fehl schlug


                    }
                
				
			$bilder_dump = $bild;}
         
		 }
    
	}
//echo $pfad;
//die;
include("function.inc.php5");
					
		mysqlaufruf();
		
		$query = "INSERT INTO bilder (verzeichnis,bild_150_1,bild_150_2,bild_150_3,bild_150_4,bild_150_5,bild_150_6,bild_150_7,bild_150_8,bild_150_9,bild_150_10,bild_150_11,bild_150_12,bild_150_13,bild_150_14,bild_150_15,bild_150_16,bild_150_17,bild_150_18,bild_150_19,bild_150_20,bild_150_21,bild_150_22,bild_150_23,bild_150_24,bild_150_25,thumb_1,thumb_2,thumb_3,thumb_4,thumb_5,thumb_6,thumb_7,thumb_8,thumb_9,thumb_10,thumb_11,thumb_12,thumb_13,thumb_14,thumb_15,thumb_16,thumb_17,thumb_18,thumb_19,thumb_20,thumb_21,thumb_22,thumb_23,thumb_24,thumb_25,bild_1,bild_2,bild_3,bild_4,bild_5,bild_6,bild_7,bild_8,bild_9,bild_10,bild_11,bild_12,bild_13,bild_14,bild_15,bild_16,bild_17,bild_18,bild_19,bild_20,bild_21,bild_22,bild_23,bild_24,bild_25) VALUES ( ";
		$query	.=	"'" . $_REQUEST[$pfad] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[1]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[2]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[3]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[4]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[5]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[6]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[7]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[8]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[9]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[10]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[11]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[12]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[13]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[14]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[15]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[16]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[17]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[18]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[19]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[20]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[21]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[22]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[23]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[24]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[25]["_150"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[1]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[2]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[3]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[4]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[5]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[6]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[7]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[8]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[9]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[10]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[11]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[12]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[13]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[14]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[15]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[16]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[17]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[18]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[19]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[20]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[21]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[22]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[23]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[24]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[25]["thumb"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[1]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[2]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[3]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[4]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[5]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[6]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[7]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[8]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[9]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[10]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[11]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[12]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[13]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[14]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[15]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[16]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[17]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[18]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[19]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[20]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[21]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[22]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[23]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[24]["_400"]] ."', ";
		$query	.=	"'" . $_REQUEST[$bild[25]["_400"]] ."' ";
		$query	.=	" ) " ;
									
		$result	=	mysql_query( $query );
	     if ( ! $result )
	    {
		die("konnte den Datensatz nich eintragen: " . mysql_error());
		}							
//"Hier der Pfad: ".$pfad;
//"Hier das Array: "; var_dump($bilder_dump);
}
?>
```

Hier noch die inc_functions.php:


```
<?php

					function picSize($pic,$size){ 
					$Dateiname_bereinigen = array( 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_' );
					$neues_bild = strtr( strtolower( $pic ), $Dateiname_bereinigen ); //hier steht nun die Variable welche Argument 1 bildet ($pic)
					//var_dump($neues_bild);
					$neuer_ordner = $_POST['name_ordner'];
					$neuer_ordner_bereinigen = array('ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss', ' ' => '_');
					$neuer_ordner_neu = strtr(strtolower($neuer_ordner), $neuer_ordner_bereinigen);
					$pfad = "/xampp/htdocs/buchung/images/$neuer_ordner_neu/";
					$groesse = getimagesize( $pfad.$neues_bild ); 
					$breite = $groesse[0]; 
					$hoehe = $groesse[1];
					$typ=$groesse[2];
					
					
					
					// Breite des Anzeigebildes festlegen (Höhe wird automatisch angepasst) 
					
					$breite_400 = $size;
					$hoehe_auto = intval($hoehe * $breite_400 / $breite);
					
					// Bei GD < 2.0.1: ImageCreateTrueColor -> ImageCreate, ImageCopyResampled -> ImageCopyResized 
				
					$bild_400 = imagecreatetruecolor( $breite_400, $hoehe_auto );

					
					switch ($typ)
						{
						case 1:
						$bild = imagecreatefromgif("$pfad$neues_bild");
						break;
						case 2:
						$bild = imagecreatefromjpeg("$pfad$neues_bild");
						break;
						case 3:
						$bild = imagecreatefrompng("$pfad$neues_bild");
						break;
						case 4:
						$bild = imagecreatefromwbmp("$pfad$neues_bild");
						break;
						default: $gestorben="ja";
						}
					
					imagecopyresampled( $bild_400, $bild, 0, 0, 0, 0,$breite_400 ,$hoehe_auto ,$breite ,$hoehe ); 
					// Endung "_400" bei Dateiname hinzufügen, vor ".jgp" 
					
					$neues_bild = explode (".", $neues_bild);
					
					// Dateianhang definieren
					
					if ($size == "400")
						{
						$zusatz = "_400.";
						}
					elseif ($size == "150")
						{
						$zusatz = "_150.";
						}
					else 
						{
						$zusatz = "_thumb.";
						}
					
					// Anzeigebild in $pfad mit angepasstem Dateinamen speichern, JPG Qualität: 90
					
					
					$path_file= ("$pfad$neues_bild[0]$zusatz$neues_bild[1]");
					
					switch ($typ)
						{
						case 1:
						imagegif ( $bild_400, $path_file );
						break;
						case 2:
						imagejpeg ( $bild_400, $path_file, 90 );
						break;
						case 3:
						imagepng ( $bild_400, $path_file );
						break;
						case 4:
						imagewbmp ( $bild_400, $path_file );
						break;
						default: $gestorben="ja";
						
						}
				
					// Temporären Speicher auf Server wieder frei geben 
					
					imagedestroy($bild); 
					imagedestroy($bild_400);
					if ($zusatz == "_thumb.")
						{
						unlink("$pfad$neues_bild[0].$neues_bild[1]");
						}
					//Rückgabe des Pfades+Name 
					return $path_file; } 
					
?>
```

Bin ratlos, denn es sollte eigentlich hinhauen. Die Felder für die Pfade mit Dateinamen habe ich als Text deklariert.

Anbei habe ich noch als Bild einen Teil der Struktur der Tabelle beigefügt.

Ich hoffe es weiß jemand rat,

vielen Dank,

mallmis


----------



## SnEaKy (23. November 2007)

Mal ganz abgesehn von deinem Problem. Wie viele Spalten hast du den bitte in deiner Tabelle?


----------



## nero_85 (23. November 2007)

Ich muss da Sneaky zustimmen. Die Tabellenstruktur sieht...naja...ein bisschen unglücklich gewählt aus.

Ich nehme mal an du hattest vor, jede Upload-Session, die ein User vornimmt in eine Zeile zu schreiben. Damit verbaust du dir aber eine gewisse flexibilität.

Geschickter wäre, du nimmst ZWEI Tabellen, welche du anschließend Verknüpfen kannst.

Die erste Tabelle baust du so auf wie ich dir Vorgeschlagen habe (siehe oben) nur fügst du noch am Ende eine Spalte mit up_id (für Upload-ID) ein.

Die zweite Tabelle benutzt du dann für die Upload-Sequenz. Sie sollte dann so aussehen:


```
1. Spalte:
up_id

2. Spalte:
Verzeichnis
```

Mehr benötigst du gar nicht mehr. Nun lässt du das Script beim Upload zuerst die "Upload-Tabelle" befüllen. Dort holst du dir dann die zuletzt vergebene ID. Diese kannst du dann einfach zu jedem bild in die Spalte up_id einfügen.

Denn mit dem System das ich dir vorgeschlagen habe, kannst du später viel leichter die Größe herausfiltern. (siehe spalte 'pic_size' + Beschreibung ein paar Posts weiter oben).

Würd ich dir halt vorschlagen. Und vielleicht löst sich durch die DB-Umstrukturierung dein Problem von allein. 

mfg
Nero

*[edit]*
Nochwas:
Durch die Menge an Spalten, kann beim Befüllen der DB auch viel schief laufen.

Und mir wird nicht klar was du mit dem $_REQUEST[$bild[1]['_150']] etc. vorhast.

Wenn überhaupt müsste das $bilder_dump[1]['_150'] heißen und zwar OHNE dem $_REQUEST

Außerdem würde ich auf dieses Global Array verzichten, da es ziemlich unsicher ist! Es ist besser direkt das gewünschte Array ($_POST, $_GET, $_SESSION, $_COOKIE, etc.) zu verwenden.

*[/edit]*


----------



## mallmis (23. November 2007)

Hallo, vielen Dank für die Antworten,

mit dem $_REQUEST ist mir jetzt auch klar, gilt nur für übergebene Formulardaten, hatte ich aus einem meiner anderen Scripts kopiert, ohne nachzudenken.

Die Pfade zu den Bildern müssen alle in eine Datenbank. Es es geht hier darum, Bilder eines Ferienobjektes auf den Server zu speichern und nachher wieder abzurufen. Die Basisdaten sowie Ausstattungsdaten und Preise habe ich auch jeweils in seperatene Tabellen, welche verknüpft sind.

Ich denke, nachdem ich dieses &_REQUEST entfernt habe wird es gehen.

Vielen Dank,

mallmis aus dem sonnigen Mallorca.


----------

