Bilderupload Frage

bad_man1

Grünschnabel
Hi zusammen,

ich hänge grad an einem Project, in dem ich einen Bilderupload haben muss welcher das Bild in ein jpg umwandelt und mit der id des dazu gehörigen beitrags speichert....

Also quasi so:
Datenbank ID (autoincrement) -> 123456
Bilderupload -> gif, png, jpg -> speichern als unterordner/xyz/123456a.jpg

Irgendwie hab ich noch keinen wirklichen Ansatz wie ich das umsetze, vielleicht habt ihr ja eine Idee wie ich das machen kann, bin noch ein relativer anfänger was PHP angeht.

Danke schonmal für die Hilfe.

bad_man1
 
Die upgeloadede Datei hast du ja nach dem Submit im "$_FILES"-Array.
Dort kannst du den Namen,Typ usw auslesen.
mit move_uploaded_file() kannst du die Datei an einen anderen Ort verschieben und umbenennen.
 
Um ein Bild zu konvertieren, kannst du die GD-Library verwenden.
Damit musst du zuerst eine Ressource aus dem Bild erstellen, das geht mit [phpf]imagecreatefrompng[/phpf] und [phpf]imagecreatefromgif[/phpf], je nach momentanen Dateityp.

Dann kannst du dein Bild einfach mit [phpf]imagejpeg[/phpf] in eine Datei speichern.

PHP:
$MyUploadedFile = "uploaded/uploaded.gif";
$ImgObj = NULL;

/* Dateiendung extrahieren (mit Punkt!) */
$FileType = substr($MyUploadedFile, strrpos($MyUploadedFile, "."));

if ($FileType == ".png")
{
  $ImgObj = imagecreatefrompng($MyUploadedFile);
}
if ($FileType == ".gif")
{
  $ImgObj = imagecreatefromgif($MyUploadedFile);
}

if ($ImgObj)
{
  if (! imagejpeg( $ImgObj, "unterordner/xyz/bla.jpg" , 100) )
  {
     /* Konnte JPEG nicht erzeugen! */
  }
}
else
{
  /* Konnte GD-Objekt nicht erzeugen! Vielleicht falscher Dateityp/-inhalt? */
}
 
Zuletzt bearbeitet:
Hey,

erstmal danke für die Hilfe, werde das mal testen.

Ein Frage hab ich da noch, ich würde ja gern das Bild mit der Datenbank ID zu dem dazugehörigen Thread speichern. Ich hab gelesen das soll sehr gut mit mysql_insert_id(); gehen, aber leider steige ich da noch nicht durch.

THX
bad_man1
 
mysql_insert_id() gibt dir nur die ID zurück, die erzeugt wurde, als du einen neuen Datensatz in eine Tabelle geschrieben hast (mittel INSERT INTO.... Statement).

Das funktioniert aber nur, wenn es dort eine Spalte gibt, die einen Primärschlüssel+Auto-Inkrement-Attribut hat.
 
Hi zusammen,

erstmal danke für die antworten, war eine weile nicht da weil meine Tochter ein wenig krank war....

Das mit dem Bild upload hab ich jetzt so gelöst das man nur .jpg mit Max.Filesize 100kb uploaden kann, klappt auch ganz gut.

Jetzt hab ich ein neues Problem, oder vielmehr kein problem aber ich seh die Lösung noch nicht.

Ich hab im Code eine Selectbox:
PHP:
if(empty($_POST['blub'])){
echo'
	<option value="">... bitte blub angeben</option>
	<option value="1">blah1</option>
	<option value="2">blah2</option>
	<option value="3">blah3</option>
	<option value="4">blah4</option>
	<option value="5">blah5</option>
	<option value="6">blah6</option>
	<option value="7">blah7</option>';
}else{
echo'
	<option value="'.$_POST['blub'].'">(hier dann die entspr. Beschreibung)</option>';
}

Was kann ich machen, das wenn $_POST['blub'] übergeben wird ich dann das $_POST in die selectbox bekomme..... ich find irgendwie keine Lösung oder sehe den wald vor lauter Bäumen nicht.

Oder muss ich hier zwingend mit einen array arbeiten um die entsprechenden Werte zu splitten/trennen ?

THX
bad_man1
 
über ein Array geht das schon einfacher

Hier ien Testbeispiel
PHP:
<form method="post">
    <select name="blub">
    <option value="">... bitte blub angeben</option>
<?php 

$options[1] = 'blah1';
$options[2] = 'blah2';
$options[3] = 'blah3';

foreach($options as $value => $text){
    $selected = ($_POST['blub'] == $value) ? 'selected' : '';
    echo "<option {$selected} value=\"{$value}\">{$text}</option>";
}

?>
    </select>
    <input type="submit" />
</form>
 
Hi Yaslaw,

danke für die Antwort, aber ich denke ich werde das alles über die Datenbank lösen, dann hab ich später auch die möglichkeit ohne im Script rumzufummel die werte zu ändern.

bad_man1
 
Zurück