php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.01.2005, 16:13  
Gast
 
Beiträge: n/a
Standard WAMP - Bilder bestimmten Datensätzen nachträglich hinzufügen

Hallo.

Bestimmt kann mir hier jemand einen Tipp/Hinweis geben.

Ich habe eine MySQL Datenbank, welche mit PHP abgefragt wird. Es existieren innerhalb dieser DB zwei Tabellen mit jeweils ca. 10 Spalten, das aber nur nebenbei. Auf einer meiner Websites werden Datensätze per Formular hinzugefügt, oder geändert (bei Änderung wird der betroffene Datensatz mit einem Dropdownmenu vorher ausgewählt und bei Bestätigung aus der DB „gezogen“). Die Daten können dann im Formular geändert und wieder gespeichert werden.

Zusätzlich möchte ich nun dem jeweiligen Benutzer dieser Formulare die Möglichkeit geben, ein oder mehrere Bilder einem bestimmten Datensatz hinzuzufügen, denn das ist in der jetzigen Lösung noch nicht berücksichtigt.

Ich habe nun das Web schon sehr lange nach einer „Standardlösung“ für die Bildpflege innerhalb dieser Datensätze durchwühlt und habe leider nie das gefunden, was ich suche, eventuell bin ich aber auch nur zu dämlich, das kann natürlich auch sein.

Alles was ich brauche wäre ein kleiner Denkansatz, wie man das am günstigsten bewerkstelligen könnte.

Ein Uploadformular bekomme ich hin, sodass die Bilder in einem best. Ordner auf dem Server gespeichert werden, aber wie sieht das bspw. mit...
  • - der Bildnummer aus, sprich Bildname?
    - der automatischen Größenanpassung des Bildes?
    - der automatischen Zuordnung zu dem gewählten Datensatz?
    - der automatischen Speicherung des Links in den betr. Ordner aus der DB heraus?
    - der Anzeige des/der Bildes(r) nur beim zugehörigen Datensatz?
    - usw.

In dieser Richtung habe ich noch Fragen über Fragen, ist alles gar nicht so einfach und ich denke, die Pflege von Bildern zu bestimmten Datensätzen ist zwar kein Buch mit sieben Siegeln und auch keine Hexerei, aber dennoch nicht ganz einfach...oder irre ich da?

Ich danke auf jeden Fall für möglichst viele Denkansätze von Euch, hoffe, hier hilft mir jemand auf die Sprünge.

Zuwenig Info? Sagt mir, was Ihr noch wissen müsst, ich sag es Euch dann

(Nur, weil ich hier schon vielerlei Sachen wie: „...ein bischen Code wäre toll...“, oder „...stell vernünftige Fragen, dann bekommst Du auch vernünftige Antworten...“, oder „...wie soll Dir denn da jemand helfen...bei DER Beschreibung!...“ gehört habe.)

Viele Grüße
Christian
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 26.01.2005, 21:52  
Gast
 
Beiträge: n/a
Standard Ich versuchs mal

gehen wir zunächst mal von einem Bild je Datensatz aus, weils einfacher ist.
Ein Uploadformular bekomme ich hin, sodass die Bilder in einem best. Ordner auf dem Server gespeichert werden, aber wie sieht das bspw. mit...
gut, dann kennst Du ja auch move_uploaded_files() und kannst den Namen der Zieldatei und den Ordner festlegen.

- der Bildnummer aus, sprich Bildname?
Nimm einfach einen Buchstaben+ID des Datensatzes
$bildname="b".$id; oder so

- der automatischen Größenanpassung des Bildes?
Dazu gibt es anpassungsfähige Scripte, das hat jetzt noch Zeit

- der automatischen Zuordnung zu dem gewählten Datensatz?
Eigentlich ist die Zuordnung durch die id im Bildnamen bereits erledigt.
Hast Du einen Datensatz, bildest du den Bildnamen wie oben, prüfst, ob Datei existiert, wenn ja - anzeigen oder what ever!

- der automatischen Speicherung des Links in den betr. Ordner aus der DB heraus?
Der Ordner ist immer derselbe, der Dateiname ergibt sich wie bereits geschildert, es wird also immer, wenn es benötigt wird zusammengesetzt.

- der Anzeige des/der Bildes(r) nur beim zugehörigen Datensatz?
Sollte jetzt auch klar sein...

- usw.
???

Wenn du jetzt das Original und das in der Größe angepasste Bild behalten möchtest, bildest Du eben noch eine Namen mit der Datensatz-ID.
Z.B.
$bildname_kleiner="b_kl".$id; oder so
Wichtig ist nur, die Kürzel immer so beizubehalten, während die id des Datensatzes dann für eindeutige Namen sorgt.

Denk mal selbst weiter, und komm dann vielleicht mit weiteren Fragen.

Gruß
Fred
PS: Bei mehr als einem Bild je Datensatz, würde ich eine weitere table anlegen. In der steht in einer Spalte die id des betroffenen Datensatzes und in einer anderen Spalte steht der Name des Bildes.
Per Select mit der id findest Du dann 0 oder 1 oder viele Einträge mit Bildnamen, die zu dem Datensatz gehören. Du Speicherst diese Verknüpfung nachdem der Bildname gebildet und die Datei im Ordner abgelegt ist.
 
Alt 27.01.2005, 11:29  
Gast
 
Beiträge: n/a
Standard

Hallo Fred.

Vielen Dank erstmal für Deine Mühe, mir zu helfen.

Deine Ansätze haben mir schon wirklich geholfen und ich werde bei Zeiten erstmal damit etwas experimentieren, wie Du es ja auch schon vorschlägst und mich dann wieder hier melden, sollten noch Fragen offen bleiben, wovon ich aber ausgehe .

Danke erstmal.

Viele Grüße
Christian
 
Alt 28.01.2005, 15:25  
Gast
 
Beiträge: n/a
Standard

Hallo Fred.

Ich bin es nochmal.

Ich bin nun schon ein ganzes Stück weitergekommen, Deine Tipps waren sehr hilfreich. Danke an dieser Stelle nochmal.

Ich bin jetzt soweit, daß der User über mein vorher schon vorhandenes Eingabeformular zusätzlich ein Bild uploaden kann, welches nun auch korrekt auf dem Server im richtigen Ordner gespeichert wird, eine eindeutige Nummer trägt (wird auch über selbes Formular übertragen) und die richtige Dateiendung hat (die der Ursprungsdatei).

Ich mußte allerdings einen anderen Wert als die unique id nehmen, da diese ja beim abschicken des Formulars noch nicht vorhanden ist (der Datensatz wird gerade neu angelegt), oder geht das doch irgendwie? Ich habe es nicht hinbekommen, sodaß ich jetzt eine andere Nummer genommen habe, welche eigentlich auch nur ein einziges Mal vergeben werden sollte...hoffentlich Nachteil ist, diese Nummer wird per Hand eingetragen und das ist immer gefährlich, außerdem könnten damit evtl. andere Bilder überschrieben werden, wenn ich nicht vorher eine Sicherheitsabfrage davor stelle und das ist irgendwie zu aufwändig.

Meine Frage ist nun folgende, was meinst Du, ist es besser, den URL in der DB zu speichern und von dort aus abzufragen (es sollen mehrere Datensätze aut. gelesen werden), oder ist es ausreichend, wenn ich das Bild in einen Ordner auf dem Server speichere und dann im Code die Bildquelle einfach aus dem Ordner lese? Da steige ich i.M. noch nicht so ganz durch.

Ok, es ist sinnvoll, wie Du schon sagtest, wenn ich mehrere Bilder habe eine zweite Tabelle anzulegen, soviel ist sicher, aber brauche ich überhaupt eine zus. Zelle, wenn ich doch nur ein einziges Bild nehme und anzeigen lassen will?

Zweite Frage: Ich habe über den Code im Bildupload die Dateiendung ausgelesen und die Datei mit dieser Endung auf dem Server gespeichert. Vorher hat sie natürlich noch einen eindeutigen Namen bekommen. Wie sage ich dem Code in der Ausgabe denn nun, daß er sich die Dateiendung von der auf dem Server liegenden Datei „holen“ soll? Mensch, mensch, also vielleicht doch komplette URL samt Ordner und Dateiendung in der DB speichern und dann einfach von dort abfragen?

Ok, wenn ich das habe, dann kommt die Bildgröße in der Vorschau

Soweit erstmal.

Danke für Antworten.

Beste Grüße
Christian
 
Alt 28.01.2005, 21:39  
Gast
 
Beiträge: n/a
Standard

Hallo Christian,

ich will mal versuchen, ein paar Antowrten zu geben.
Letztendlich kannst Du es natürlich so realisieren, wie es Dir gefällt;o)

1.
Ich mußte allerdings einen anderen Wert als die unique id nehmen, da diese ja beim abschicken des Formulars noch nicht vorhanden ist (der Datensatz wird gerade neu angelegt), oder geht das doch irgendwie?

Die id muss beim Abschicken des Formulars auch noch nicht bekannt sein.
Das Script, welches die gesendeten Formulardaten abarbeitet, muss nur zuerst den Datensatz anlegen und z.B. per (mysql_insert_id -- Liefert die ID einer vorherigen INSERT-Operation) die id ermitteln und dann für das Bild verwenden. Eine manuelle Eingabe im Formular ist einfach zu unsicher.
(siehe: http://de.php.net/manual/de/function...-insert-id.php)

2.
Meine Frage ist nun folgende, was meinst Du, ist es besser, den URL in der DB zu speichern und von dort aus abzufragen (es sollen mehrere Datensätze aut. gelesen werden), oder ist es ausreichend, wenn ich das Bild in einen Ordner auf dem Server speichere und dann im Code die Bildquelle einfach aus dem Ordner lese? Da steige ich i.M. noch nicht so ganz durch.

Ich bin in meinem Vorschlag unbewußt davon ausgegangen, dass z.B. nur Dateien mit der Endung jpg zugelassen sind. Dann wäre auch das Bilden des Dateinamens unkompliziert.
Es spricht aber gar nichts dagegen, den Namen (evtl. auch mit Pfad) in der Tabelle in einem eigenen Feld (Tabellenspalte) abzulegen.
Wenn Dir das sympathischer ist - nur zu.

3.
Ok, es ist sinnvoll, wie Du schon sagtest, wenn ich mehrere Bilder habe eine zweite Tabelle anzulegen, soviel ist sicher, aber brauche ich überhaupt eine zus. Zelle, wenn ich doch nur ein einziges Bild nehme und anzeigen lassen will?

In Deinem Augangsposting glaubte ich gelesen zu haben, dass Du eigentlich für jeden Datensatz mehrere Bilder speichern möchtest.
Wenn dem nicht so ist, dann benötigst Du keine weitere Tabelle, da es eine 1:1-Beziehung wäre.
Nur bei mehreren Bildern je Datensatz, wäre eine zweite Tabelle zur Abbildung der 1:n-Beziehung sehr hilfreich.

4.
Zweite Frage: Ich habe über den Code im Bildupload die Dateiendung ausgelesen und die Datei mit dieser Endung auf dem Server gespeichert. Vorher hat sie natürlich noch einen eindeutigen Namen bekommen. Wie sage ich dem Code in der Ausgabe denn nun, daß er sich die Dateiendung von der auf dem Server liegenden Datei „holen“ soll? Mensch, mensch, also vielleicht doch komplette URL samt Ordner und Dateiendung in der DB speichern und dann einfach von dort abfragen?

Ja!

Gruß
Fred
 
Alt 29.01.2005, 18:36  
Gast
 
Beiträge: n/a
Standard

Hallo Fred!

Nochmal vielen Dank für Deine Hilfe im Voraus

zu1:
Also der Tipp mit
PHP-Code:
<? 
mysql_insert_id
();
?>
war echt gold wert, es funktioniert damit... Juhuu!

Ich habe dann einfach für den Bildupload Teil ein SQL UPDATE Query geschrieben, bei dem nach dem INSERT Teil des Formulars eben noch der URL für das zugehörige Bild ( welches ja jetzt einen unique-Namen hat ) nachträglich in die zugehörige Zelle geschrieben wird, das ist aber auch ok, denke ich.

zu2:
wie oben schon geschrieben, habe ich mich nun entschieden, den kompletten URL in die Zelle der DB zu schreiben, die Dateiendung wird schon beim Upload ausgelesen und richtig formatiert (kleingeschrieben). Bei dem oben beschriebenen UPDATE Query wird der ganze Pfad zu dem Bild inkl. richtiger Bezeichnung und Endung in die Zelle eingetragen. Das funktioniert sehr gut. Ich werde aber, wie Du auch schon geschrieben hast, noch eine Abfrage einbauen und nur .jpg und .gif Dateien zulassen...ist sicherer, denke ich.

Bei Gelegenheit werde ich mich dann auch daran setzen, den Code zu optimieren, ich denke, er ist noch nicht so ganz optimal gestaltet....aber: „form follows function“ ist zuersteinmal das Motto

zu3:
Ich arbeite erstmal weiterhin mit nur einem Bild pro Datensatz. Ich kann ja später immer noch eine neue Tabelle für mehrere Bilder anlegen, denn ich denke auch, wenn es mehr werden sollten ist eine zusätzliche Tabelle hilfreich.

zu4:
Hast recht, ich habe nun den kompletten Pfad in der DB und es ist natürlich damit ein leichtes, diesen auszulesen und auch ausgeben zu lassen.

Soweit erstmal, ich wünsche Dir noch ein schönes Wochenende, ich melde mich dann wieder, wenn ich noch Fragen haben sollte, ich denke, da werden noch einige auftauchen bezüglich Größenanpassung der Thumbnails bspw.. Ich habe zwar schon mal nach einer passenden Class gesucht, aber mich noch nicht richtig damit beschäftigt...kommt später

Gruß
Christian
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Bilder in Tabellen nixdorf HTML, Usability und Barrierefreiheit 36 09.05.2005 21:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bild zu datensatz hinzufügen, php bilder zu einem datensatz speichern, wamp upload, mysql datenbank in wamp einfügen, html bild nachträglich in tabellenzelle, wamp profilbilder, wamp bild, sql upload zu einem bestimmten datensatz

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:18 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.