WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 17.05.2002, 00:34   #1
MUCH
Elite
 
Registriert seit: 11.08.2000
Beiträge: 1.412


MUCH eine Nachricht über ICQ schicken
Standard PHP-Problem - Bildübermittlung

Liebe Gemeinde,


schön langsdam kommt meine Datenbank auf Touren (endlich harmonieren der Apache mit MySQL & PHP) - danke wegen des Links zu www.NuSphere.com


Die Voraussetzungen:
1. Datenbank unter mySQL erfolgreich angelegt
2. dazu eine Tabelle - dies beinhaltet die "VARCHAR"-Felder wie Name, Adresse, etc. UND ein Feld namens "Bild" vom Typ BLOB


Ich habe für PHP im Internet eine Eingabemaske gefunden - http://www.blindschleiche.de/Artikel...ysql-einf.php3 - und angepasst, wo eben Daten eingegeben werden können, die dann in meine Datenbank wandern.
NUR: Wie ermögliche ich die Übernahme eines Bildes?
(Es wird im Datensatz nicht das Bild als BLOB eingefügt, sondern nur die Ladeadresse - z.B.: C:\Bilder\Haus.jpg )



Hier ein Auszug aus dem PHP, wo die Dateneingabe passiert, das Problem mit dem BILD aber nicht klappt:

.
.
.


<form action= <? echo $PHP_SELF ?>>
<pre>
<input type=hidden name=funktion value= <? echo $funktion ?>>

Kontaktperson: <input type=text name=K_person value= <? echo $K_person ?>>
Strasse mit Hausnummer: <input type=text name=Str value= <? echo $Str ?>>
Ort: <input type=text name=Ort value= <? echo $Ort ?>>

Bild anfügen: <input type="hidden" name="MAX_FILE_SIZE" value="2097152">
<input type="file" class="bginput" name=Bild>


<input type=submit value= <? echo $funktion ?>> </pre>
</form>

.
.
.

Herzlichen Dank für Eure Mühe!!!
____________________________________
Liebe Grüsse

Michi
MUCH ist offline   Mit Zitat antworten
Alt 17.05.2002, 00:44   #2
allwissende Müllhalde
Inventar
 
Registriert seit: 28.12.2000
Beiträge: 1.693


Standard

Mir fällt nur auf daß das name=Bild in deinem Formular
nicht in Anführungszeichen steht
name="Bild"
____________________________________
Nordick-Wogging
Dumm-ness boomt
Ihr Fengshui Berater
Eurofighter abfangen !
allwissende Müllhalde ist offline   Mit Zitat antworten
Alt 17.05.2002, 02:54   #3
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

Das Bild musst Du extra behandeln, dass wird nicht in einer Variablen abgelegt, von wo Du es einfach in die DB spielen kannst.

http://at.php.net/manual/de/features.file-upload.php
Genau durchlesen!!!
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Alt 17.05.2002, 08:47   #4
MUCH
Elite
 
Registriert seit: 11.08.2000
Beiträge: 1.412


MUCH eine Nachricht über ICQ schicken
Standard Das Bild soll direkt in die Datenbank...

der zitierte Artikel http://at.php.net/manual/de/features.file-upload.php hilft mir nicht sehr -
ich möchte das Bild ja NICHT als Datei, sondern direkt in meine Datenbank bei der Tabelle "adressen" ins Feld "Bild" vom Typ "BLOB" schreiben.

Wer könnte mir dabei bitte helfen???

danke!
____________________________________
Liebe Grüsse

Michi
MUCH ist offline   Mit Zitat antworten
Alt 17.05.2002, 09:53   #5
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

Ich sagte ja - GENAU lesen!

Das Bild wird Dir von PHP nicht automatisch in eine Variable gestellt, die Du dann einfach in die DB schreiben kannst, sondern du musst das Kopieren der Datei in die DB selber ausprogrammieren!
D.h. Datei oeffnen, in eine Variable einlesen, und dann diese Variable in ein Feld der DB inserten.
Jetzt klarer?

Code:
$filecontent = fread(fopen("/usr/local/myfile.jpg", "r"),
filesize("usr/local/myfile.jpg"));
 $filecontent = addslashes($filecontent);
 $res = mysql_db_query("testdb", "
          INSERT
            INTO testtable
          VALUES
            (
             '$filecontent'
             )") or die("Konnte Datei nicht in Datenbank speichern!");
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Alt 17.05.2002, 10:17   #6
MUCH
Elite
 
Registriert seit: 11.08.2000
Beiträge: 1.412


MUCH eine Nachricht über ICQ schicken
Standard

danke!!!

Ein Problem besteht noch wenn ich Dein beschriebenes fopen("/usr/local/myfile.jpg", "r"), mache:

WO in meiner Umgebung liegt dieses Bild, nachdem ich es in der FORM eingegeben habe?

Muss ich da im INI des Apache bzw. PHP oder MySQL was verändern, bzw. überhaupt erst was definieren, um das von Dir zitierte "/usr/local/myfile.jpg" irgendwo zu sehen?

wenn ich mir meine Daten aus der Bank aufliste, hatte ich nämlich schon einmal beim Herumprobieren mit meiner Eingabemaske einen Text-Eintrag ins Feld "Bild" hineinbekommen.

einmal "H:WINDOWSphp1A.tmp" (ohne "\" )

und ein weiteres Mal:
"G:\Bilder\Julia.jpg" (weiss aber nicht mehr, wie ich zu diesem eher aussagekräftigem Dateinamen kam???)


momentan sehe ich den Wald vor lauter Bäumen nicht mehr
____________________________________
Liebe Grüsse

Michi
MUCH ist offline   Mit Zitat antworten
Alt 17.05.2002, 10:22   #7
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

Oida voda!

Meinen Link hast Du nicht gelesen, oder?
Der Dateiname im Script war ja nur fuer Demo-Zwecke, den richtigen "temporaeren Namen bekommst Du ueber
Zitat:
$HTTP_POST_FILES['userfile']['tmp_name']
Der temporäre Dateiname, unter dem die hochgeladene Datei auf dem Server gespeichert wurde.

Wenn register_globals in der php.ini aktiviert ist, stehen unter der Annahme, dass der Name des Dateiuploads wie in dem obigen Beispielskript 'userfile' ist, zur Verfügung:
$userfile - Der temporäre Name, unter dem die hochgeladene Datei auf dem Server gespeichert wurde.
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Alt 18.05.2002, 15:30   #8
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Felder mit dem Datentyp BLOB können mit LOAD_FILE(filename) gefüllt werden (der Datentyp BLOB erlaubt maximal 64 KB Dateninhalt)
kikakater ist offline   Mit Zitat antworten
Alt 19.05.2002, 14:27   #9
_m3
Inventar
 
Registriert seit: 24.09.2001
Beiträge: 7.335


Standard

TINYBLOB, TINYTEXT L+1 bytes, where L < 2^8
BLOB, TEXT L+2 bytes, where L < 2^16
MEDIUMBLOB, MEDIUMTEXT L+3 bytes, where L < 2^24
LONGBLOB, LONGTEXT L+4 bytes, where L < 2^32

Ein Beispiel zu load_file gibts hier: http://gd.tuwien.ac.at/db/mysql/doc/...functions.html
____________________________________
Weiterhin zu finden auf http://martin.leyrer.priv.at , http://twitter.com/leyrer , http://www.debattierclub.net/ , http://www.tratschen.at/ und via Instant Messaging auf Jabber: m3 <ät> cargal.org .
_m3 ist offline   Mit Zitat antworten
Alt 19.05.2002, 14:55   #10
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Ein Verweis auf die Bilddatei mittels VARCHAR Textfeld 'Dateiname' - z.B. - funzt wesentlich besser. Weniger Segmentierung, weniger Daten in der Datenbank bla bla bla ...

Ein einfaches echo "<img src=\"$Dateiname\">"; im php Teil eines *.php / *.phtml Skripts sollte die Datei vom Dateisystem aus laden. Sollte der 'Pfad zur Datei' ein absoluter sein, muß man den HTML Code um "file:" erweitern.

echo "<img src=\"file:$Dateiname\">";
kikakater ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:01 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag