Neben einem Thumbnail, weitere Bilder aus einer Datenbank anzeigen

Kerstin_B

Mitglied
Hallo, das ist mein erster Post, hallo zusammen!
Nun mal zu meinem Problem:
Ich habe erfolgreich Bildernamen per SQL in eine Datenbank geschrieben und sie werden auch erfolgreich auf den Server geladen. Die Verzeichnisse in dem die Bilder geladen werden heißen original, thumbnail und angepasst.
Die Bilder werden per Funktion in 3 größen in die jeweiligen Verzeichnisse geladen.


Meine Frage:
Wie kann ich es realisieren, dass ich Dummy-Bilder anzeigen kann, wenn kein Bild in die Datenbank geschrieben wurde, wobei das erste Dummy-Bild ein Thumbnail-Dummy-Bild sein soll. Ich möchte also das Thumbnail seperat für sich hochladen können (ein Upload-Button für die normalen Bilder und ein für das Thumbnail) (obwohl Thumbnails ja schon durch die Funktion beim ersten Upload-Button erzeugt wurden) und dafür ein eigenständiges Dummy-Bild angezeigt bekommen.

Alle Dummy-Bilder sollen nur angezeigt werden, wenn keine Bilder hochgeladen wurden oder besser gesagt, es sollen max 4 Bilder hochgeladen werden können + ein Thumbnail, welches ein eigenes Dummy-Bild haben soll, wenn es nicht hochgeladen wurde. Die Bildernamen speichere ich in das Tabellenfeld pic und das Thumbnail würde ich gern in ein Feld thumbnail abspeichern.

Dummybilder sollen also immer angezeigt werden, wenn Bilder nicht hochgeladen wurden. Wenn z.B. 3 Bilder hochgeladen wurden, dann sollen 2 Dummy-Bilder angezeigt werden, 1 normales Dummy-Bild und eins für das Thumbnail oder wenn z.B. 2 normale Bilder hochgeladen wurden und ein Thumbnail (per eigenen Upload-Button) dann sollten noch 2 normale Dummy-Bilder angezeigt werden.
Kein Bild hochgeladen dann sollen 4 normale Dummy-Bilder angezeigt werden und ein Dummy für das Thumbnail. Also immer ein Austausch sozusagen, wenn ich ein Bild hochlade, soll das Dummy-Bild verschwinden und an dieser Stelle das normale Bild erscheinen. Wenn ich ein Bild wieder lösche, dann soll ein Dummy-Bild erscheinen.

Ich hoffe ich konnte mich präzise genug ausdrücken und hoffe ihr könnt mir helfen.

Mit besten Grüßen
Kerstin
 
Zuletzt bearbeitet:
Ich bin jetzt ein bisschen verwirrt vor lauter Farbe und "wenn davon kein Bild...dann das Bild...aber wenn die Bilder dann jenes Bild".

Kannst du nicht einfach prüfen ob in der Tabelle das entsprechende Feld eine Eintrag (Name des Bildes) hat oder nicht. Je nachdem zeigst du dann einen Dummy an oder eben das eigentliche Bild.
 
Also du liest ja an irgendeiner Stelle die Daten aus der Datenbank aus. Hier prüfst du nun ob des entsprechende Feld "pic" und "thumbnail" noch den Wert NULL (nicht die Zahl) oder keinen Eintrag enthält.

PHP:
$sql = "SELECT pic, thumbnail FROM tabelle";
$rs = mysql_query($sql);
for ($zaehler = 0; $zaehler < mysql_num_rows($rs); $zaehler++) {

if (mysql_result($rs, $zaehler, "pic")) {
// hier der Code um das eigentliche Bild anzuzeigen
} else {
// hier der Code für das Dummybild
}

if (mysql_result($rs, $zaehler, "thumbnail")) {
// hier der Code um das eigentliche Bild anzuzeigen
} else {
// hier der Code für das Dummybild
}

}

Die Abfrage selber kann ich dir nicht zeigen, da ich den Aufbau der Datenbank ja nicht kenne.
Hoffe es hilft dir trotzdem.
 
Zuletzt bearbeitet:
Hi tombe, erstmal vielen herzlichen Dank für deine Mühe!
Ich zeig einfach mal den Code, vielleicht kannst du ja darauf eingehen.
Ich versuche irgendwie 4 Bilder anzuzeigen und zusätzlich ein Thumbnail.
Habe dafür 2 upload-Button 1x für das eine Thumbnail und 1x für die normalen Bilder. Beim hochladen vom Thumbnail folgt eine Fehlermeldung, dass ein Falsches Dateiformat vorliegt, obwohl ich in der uploaddatei die richtige Funktion anspreche, springt er beim Auslösen des Thumbnailuplod-Buttons in die Funktion (identische Kopie mit anderen Namen) der normalen Bilder und dort in die Fehlerabfrage.
PHP:
/*-----upload.php---*/

include("include/config.php");
include("include/funktionen.php");

define('UPLOADDIR', 'bilder/original/');
define('COPY1DIR' , 'bilder/thumbnail/');
define('COPY2DIR' , 'bilder/angepasst/');
define('COPY3DIR' , 'bilder/thumbnail/thumb/');

/*------------------------------------------THUMBNAIL----------------------------------------------------------------------*/

$query ="SELECT count(thumbnail) FROM `picture` WHERE picture.id = {$_SESSION['id']}";
$result = do_mysql($query);
$anzahl = mysql_fetch_row($result);
if($anzahl[0] < 1)
{ 
if (isset($_FILES['userfile2']['tmp_name']))
{ 
   $ausgabe = "";
   $filename2 = save_uploadT(UPLOADDIR,$_SESSION["id"]);
   
    
   if($filename2)
   { 

			  /*$sql3="INSERT INTO picture (id,thumbnail)
   	          VALUES ({$_SESSION["id"]},'$filename2')";
	           echo $sql3;*/

			   $sql3 = "UPDATE picture SET 
   	          id={$_SESSION["id"]},
   	          thumbnail='$filename2' WHERE id == {$_SESSION["id"]}"; 
		$result = do_mysql($sql3);

   	  // Rückmeldung für den Benutzer
   	  if($result == true)
   	  	{
   	  	  /*$ausgabe .=  "<p>Dateiupload erfolgreich abgeschlossen!</p>";*/
   	  	}
   	  	else
   	  	{
   	  	  $ausgabe .=  "<p>Dateiupload fehlgeschlagen!</p>";
   	  	}
	  
      
     /* if ($filename)
	  {*/
	  jpg_copy_resize2(UPLOADDIR.$filename2,COPY3DIR.$filename2, 130, 130,1,255,255,255);
   } 
	  /* }else
	  {
	  	$ausgabe .=  "<p>Dateiupload fehlgeschlagen!</p>";
	  }*/
   //}
}
}
else
{
   	/*$ausgabe .=  "<p>Es können maximal 4 Bilder hochgeladen werden!</p>";*/
} 

/*---------------------------------------ENDE THUMBNAIL--------------------------------------------------------------------*/


/*---------Hier versuche ich eine Ausgabe vom Thumbnail-Dummy oder dem Thumbnail, falls hochgeladen:--------------------*/

	$dsq="SELECT picture.thumbnail,picture.pic_id FROM user,picture WHERE user.id = picture.id AND picture.id = {$_SESSION["id"]}";
	/*echo $dsq; */
	
	$result = do_mysql($dsq);
    $ergebnis = mysql_num_rows($result);
	
		if($ergebnis['thumbnail'] == ' ' )
			{
					$anzeige .= "<td class='dummy'><img src=\"".COPY1DIR.'thumb.jpg'." \" ></td>";		
			}else
			{
				$anzeige .= "<td class='anzeige'><img src=\"".COPY1DIR.$ergebnis['thumbnail']." \" ><br><a class='delLinkUpl' href='picloeschen.php?picID={$ergebnis['pic_id']}'>Löschen</a></td>";
	   		}
/*----------ENDE upload.php-------*/

/*------- FUNKTIONEN (funktion.php)---------*/
/* BILDUPLOAD THUMBNAIL */

/** BILDUPLOAD (save-upload.inc.php)

* upload - und resize - Funktionen
*/

/**
* Entgegennahme einer Upload-Datei und Speicherung der Daten
* @param string $target muss den Pfad zum Zielverzeichnis beinhalten
* @return string gibt 0 im Fehlerfall bzw. bei Erfolg den Dateinamen zurueck
*/
function save_uploadT($target2,$id2)
{
  global $ausgabe;
  $error2=0;

  $filename2   = basename($_FILES['userfile2']['name']);
  $filename2   = time()."thumb".$filename2; 
  if($_FILES['userfile2'][type]!= 'image/jpeg' && $_FILES['userfile2'][type]!= 'image/pjpeg')/*Bildtyp pjpeg wird im explorer7 ...*/
  echo $_FILES['userfile2'][type];
  {
    /*Fehlermeldung ausgeben*/
	/*echo "Falsches Dateiformat"; oder "*/
	$ausgabe .= "<p>Falsches Dateiformat!</p>";  /*<-- Nicht hier springt er rein, sondern in einer Kopie dieser Funktion, die für das Formularfeld userfile zuständig ist, nicht für userfile2*/
	$error2 = 1;
  }
  if($_FILES['userfile2'][size] > 512000) /**/
  {
    /*Fehlermeldung ausgeben*/
	/*echo "Bild zu gross"; anzeige .= "<p>Bild zu gross!</p>"*/
	$error2 = 1;
  }
  $uploadfile2 =  $target2.$filename2; 

  $out2 = "";
 
	  if ($error2 || !move_uploaded_file($_FILES['userfile2']['tmp_name'], $uploadfile2)) 
	  {
		  $out2 .= "";
	  }
	  else
	  {
		  $out2 .= $filename2; 
		  
	  }
	  
  return $out2;
}


/**
* Skaliert ein gegebenes Bild und speichert es. Berechnet
* den maximal moeglichen Skalierungsfaktor. Speichert das
* Bild entweder in optimaler Groesse oder zentriert auf der
* maximierten Bildflaeche
* @param string $filename
* @param string $destination
* @param int $width_max  die maximale Hoehe der Kopie
* @param int $height_max die maximale Breite der Kopie
* @param int $form entscheidet ob die Bildgroesse an das Bild angepasst wird(0)
*                  oder die Maximalwerte genutzt werden(1). Bild wird dann zentriert
* @param int $r der ROTwert des Hintergrunds
* @param int $g der GRUENwert des Hintergrunds
* @param int $b der BLAUwert des Hintergrunds
*/
function jpg_copy_resize2($filename2,$destination2,$width_max2,$height_max2,$form2,$r2,$g2,$b2)
{
  $offset_x2 = 0;
  $offset_y2 = 0;

  // neue Groesse berechnen
  list($width_orig2, $height_orig2, $type_orig2) = getimagesize($filename2);
  
  $ratio_orig2 = $width_orig2/$height_orig2; /*0,828*/

  if ($width_max2/$height_max2 > $ratio_orig2)
  {
     $width2 = $height_max2*$ratio_orig2;
     $height2= $height_max2;
     if($form2)
     {
        $offset_x2 = ($width_max2-$width2)/2;
     }
  }
  else
  {
     $height2 = $width_max2/$ratio_orig2;
     $width2 = $width_max2;
     if($form2)
     {
        $offset_y2 = ($height_max2-$height2)/2;
     }
  }
  // Bild erstellen und speichern
  if($form2)
  {
    $image_p2 = imagecreatetruecolor($width_max2, $height_max2);
  
  else
  {
    $image_p2 = imagecreatetruecolor($width2, $height2);
  }
  $color2 = imagecolorallocate($image_p2,$r2,$g2,$b2);
  imagefill($image_p2,0,0,$color2);
  $image2 = imagecreatefromjpeg($filename2);
  imagecopyresampled($image_p2, $image2, $offset_x2, $offset_y2, 0, 0, $width2, $height2, $width_orig2, $height_orig2);
  imagejpeg($image_p2, $destination2, 100);

  imagedestroy($image_p2);
}/*BILDUPLOAD/RESIZE ENDE*/
 
Zuletzt bearbeitet:
Ich versuche es mal. Aber vorher gleich was anderes:

PHP:
  // Bild erstellen und speichern
  if($form2)
  {
    $image_p2 = imagecreatetruecolor($width_max2, $height_max2);
// hier fehlt bei dir die geschweifte Klammer "}"
  else
  {
    $image_p2 = imagecreatetruecolor($width2, $height2);
  }

Habe den Code jetzt noch nicht getestet, mir wurde nur gleich nach dem Kopieren bzw. dem Einfügen der obige Fehler (in Zeile 184) angezeigt.
 
Vielen lieben Dank, tombe. Habe die Klammer wohl beim Kopieren in Word vergesen, gesetzt ist sie aber. Kann ich die meine ganze php-datei zukommen lassen, damit du dir das mal anschaust, was ich da für ein mist verzapft hab, die Codeschnipsel, hier sind vielleicht nicht so übersichtlich?
LG Kerstin
 
Wenn es dir möglich ist, dann stell mal alles als ZIP-Datei hier rein.

Ich bin noch im Geschäft und kann immer nur mal so nebenher einen Blick darauf werfen. Anschließend muss ich dann gleich noch zu einem Termin, wird also heute bei mir ein bisschen eng.

Gruß Thomas
 
Ok, tu ich sofort, vielen lieben Dank! Sagst du mir bitte bescheid, wenn du es runtergeladen hast?
LG
Kerstin

P.S. Wenn du die Datenbank eingespeist hast, dann user: administrator passwort: 4444, steht aber auch in der Datenbank. Vielleiecht ist es dir auch möglich, das Thumbnail auf die rechte Seite zu buxieren, hab es selbst auch schon versucht, aber irgendwie will das nicht funktionieren mit den normalen Bildern und das eine Thumbnail :(
 
Zuletzt bearbeitet:
Also ich Blicke noch nicht so ganz durch.

Aber du hast 2 Formen und 2 Submit Buttons in der Seite. Weder die Formen noch die Buttons haben das name-Tag.

Ich befürchte das beim Funktionsaufruf nicht korrekt unterschieden wird ob jetzt ein Bild oder ein Thumbnail hochgeladen wird. Komisch ist nämlich das die Fehlermeldung in der Funktion ausgegeben wird die für die "normalen" Bilder zuständig ist.

Oder täusche ich mich da?
 
Zurück