-
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
KerstinGeändert von Kerstin_B (21.09.10 um 13:10 Uhr)
-
16.09.10 12:10 #2
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
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.Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Sorry, wollte niemanden verwirren! Wie würde so eine Prüfung denn in php/sql aussehen, kannst du mir da weiterhelfen?
LG
Kerstin
-
16.09.10 13:27 #4
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
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.
Die Abfrage selber kann ich dir nicht zeigen, da ich den Aufbau der Datenbank ja nicht kenne.PHP-Code:$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
}
}
Hoffe es hilft dir trotzdem.Geändert von tombe (16.09.10 um 13:31 Uhr)
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
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-Code:/*-----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*/
Geändert von Kerstin_B (21.09.10 um 13:10 Uhr)
-
16.09.10 14:31 #6
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Ich versuche es mal. Aber vorher gleich was anderes:
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.PHP-Code:// 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);
}
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
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
-
16.09.10 14:42 #8
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
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ß ThomasSollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
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
Geändert von Kerstin_B (16.09.10 um 16:59 Uhr)
-
16.09.10 15:54 #10
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
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?Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
16.09.10 16:14 #11
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Fehler in upload.php, Zeile 103...
Du hast da bei dir 2 x "==" bei der WHERE Bedingung!PHP-Code:$sql3 = "UPDATE picture SET id={$_SESSION["id"]}, thumbnail='$filename2' WHERE id = {$_SESSION["id"]}";
Es ist definitv so das die Funktion zu Übertragen der Thumbs nicht aufgerufen wird! Habe ihr einen anderen Namen gegeben und dann versucht ein Bild hochzuladen. Es wurde kein Fehler angezeigt.Geändert von tombe (16.09.10 um 16:24 Uhr)
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
-
Hallo tombe.
Was meinst du mit namen-tag? Die Formularfelder sind in der upload.php in der die funktion.php eingebunden wird. Bei den normalen Bildern funktioniert der upload ja, aber beim thumbnail nicht
Du täuschst dich übrigens nicht, ich kann mir auch nicht erklären, warum die Funktion für die normalen Bilder aufgerufen wird, obwohl ich eindeutug die 2. Funktion in der upload.php anspreche
-
Ja, lieben Dank, komm da immer durcheinander mit zuweisen und vergleichen (PHP/SQL) . Hab es abgeändert, aber tut sich noch immer nichts, noch kein Eintrag in der Datenbank, geschweige ein Upload oder eine Anzeige ... hmmm
Ich habe die Funktion auch nochmal umbenannt und dann versucht ein Thumbnail hochzuladen. Bei mir kam im Contentbereich nach wie vor die Fehlermeldung aus der ersten Funktion (Falsches Dateiformat!)
Geändert von Kerstin_B (16.09.10 um 17:25 Uhr)
-
Hallo "tombe",
habe es leider noch nicht geschafft, das Problem zu beheben. Falls du irgendwas erreicht hast, würde ich mich freuen wieder von dir zu lesen.
Gruß
Kerstin
-
20.09.10 13:15 #15
- Registriert seit
- Sep 2004
- Ort
- Möglingen (BaWü)
- Beiträge
- 3.109
Hi Kerstin,
ich hänge mal die Dateien "upload.php" und "funktionen.php" hier dran.
In der "upload.php" habe ich wie oben geschrieben den Button einen Namen gegeben: name="bild" und name="thumb".
Dann habe ich bei in Zeile 24 und in Zeile 85 die IF-Abfrage so erweitert das geprüft wird welcher Button gedrückt wurde. Dadurch wird jetzt auch die richtige Funktion ausgeführt und kein Fehler wegen falschem Dateiformat mehr angezeigt.
Wenn ich ein Thumbnail-Bild hochlade, wird das Bild im Verzeichnis "thumbnail/thumb" gespeichert jedoch in der Vorsch nicht angezeigt und auch nicht in der Datenbank eingetragen.
Diesen Fehler habe ich noc nicht gelöst. Denke mal das hier mit deinen Pfadangaben bzw. der SQL-Anweisung nicht stimmt.
Schau dir das bitte mal selber nochmal an und melde dich dann was du festgestellt hast.
Gruß Thomas
NACHTRAG ZUM SPEICHERN:
Wenn du die SQL-Answeisung ($sql3) wie folgt änderst, wird entweder ein neuer Eintrag gemacht oder der vorhandene Eintrag geändert:
PHP-Code:$sql3="INSERT INTO picture (id, thumbnail) VALUES ({$_SESSION["id"]}, '$filename2') ON DUPLICATE KEY UPDATE thumbnail = '$filename2'";
Geändert von tombe (20.09.10 um 14:35 Uhr)
Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.
Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.
Ähnliche Themen
-
Anzeigen einer Seite neben der Hauptseite
Von raccoon im Forum Javascript & AjaxAntworten: 5Letzter Beitrag: 02.04.07, 11:00 -
Bilder in einem datagrid anzeigen
Von rene2407 im Forum .NET DatenverwaltungAntworten: 3Letzter Beitrag: 10.08.06, 10:00 -
Bilder aus mysql-datenbank speichern+anzeigen
Von C-H im Forum .NET ArchivAntworten: 0Letzter Beitrag: 12.04.05, 13:13 -
bilder aus datenbank anzeigen lassen in html?
Von jeanlucpicard im Forum PHPAntworten: 2Letzter Beitrag: 07.08.03, 11:39 -
Bilder aus Datenbank anzeigen
Von Bitschupser im Forum PHPAntworten: 4Letzter Beitrag: 06.04.02, 16:58



28Danke

Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren