Fahrtenbuch genial!
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 09.06.2002, 21:04   #1
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt

[php/mysql] Wie bild speichern


nabend!

hab ein kleines Problem, Kunde will seine Referenzen mit Bild + Titel + Text eingeben können (in Formular)
soweit sogut, nur mit dem Bild hab ich keinen Tau wie das denn bitteschön gehen soll. (so mit durchsuchen button) ihr wisst ja eh

danke im voraus
PS: Kann durchaus sein dass hier schon mal ein Thread über das Thema war hab'n aber nicht gefunden.
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten


Alt 09.06.2002, 22:44   #2
TP-Veteran
 
Benutzerbild von Guitar
 
Registriert seit: Nov 2001
Ort: Friedrichshafen am Bodensee
Guitar ist auf einem guten Weg
Vielleicht hilft dir das hier weiter.
__________________
Gruß, Wolfgang

Webdesign Friedrichshafen
Guitar ist offline   Mit Zitat antworten
Alt 10.06.2002, 01:37   #3
TP-Specialist
 
Benutzerbild von Jürgen
 
Registriert seit: Feb 2002
Ort: Wien
Jürgen bringt sich richtig einJürgen bringt sich richtig ein
Hi Holunda,

Hier gibts ein gut erklärtes Tutorial darüber, wie ein Fileupload funktioniert und wie die Binärdaten direkt in die mySQL-DB gespeichert werden.

Ich denke, damit solltest du es ruck zuck auf die Reihe kriegen.

Wenn du die Bilder nicht in die DB speichern willst, ist der Uploadprozess der selbe, nur werden dann die hochgeladenen Dateien mit den Filecopy-Funktionen von PHP in eine bestimmtes Verzeichnis kopiert.

Gruß, Jürgen
Jürgen ist offline   Mit Zitat antworten
Alt 10.06.2002, 17:07   #4
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
Ich möchte noch anmerken, dass es ein weit verbreiteter Irrglaube ist, Binärdaten seien in MySQL-Datenbanken gut aufgehoben. Da die LONGBLOB-Felder (BLOB = Binary Large Object) in MySQL tatsächlich nur reine ASSCII-Werte aufnehmen, müssen die Daten vorher escaped werden, wodurch sie immens an Grösse zunehmen. Viel besser ist es daher eigentlich, solche Daten im Dateisystem zu speichern und in der DB eine reine Referenz auf selbige anzugeben.
__________________
Give up yourself into the moment — The time is now.
Lars ist offline   Mit Zitat antworten
Alt 10.06.2002, 17:18   #5
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
Zitat:
Original geschrieben von schmobi
Ich möchte noch anmerken, dass es ein weit verbreiteter Irrglaube ist, Binärdaten seien in MySQL-Datenbanken gut aufgehoben. Da die LONGBLOB-Felder (BLOB = Binary Large Object) in MySQL tatsächlich nur reine ASSCII-Werte aufnehmen, müssen die Daten vorher escaped werden, wodurch sie immens an Grösse zunehmen. Viel besser ist es daher eigentlich, solche Daten im Dateisystem zu speichern und in der DB eine reine Referenz auf selbige anzugeben.
ja gut, aber wie setze ich das als php newb in die Tat um? Also eine Verknüpfung/Referenz in die DB speichern?
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 10.06.2002, 17:32   #6
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
Theoretisch ganz einfach:

Bild per Formular hochladen (look@Link) -> einen Dateinamen für selbiges vergeben -> diesen in der DB speichern -> bei der Ausgabe wieder einsetzen
__________________
Give up yourself into the moment — The time is now.
Lars ist offline   Mit Zitat antworten
Alt 10.06.2002, 17:46   #7
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
Zitat:
Theoretisch ganz einfach:
hast recht - nur in der Praxis - NEIN, ich werds mal probieren, wenns nicht klappt meld' ich mich nochmal

lg holunda
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 10.06.2002, 17:53   #8
TP-Specialist
 
Benutzerbild von Jürgen
 
Registriert seit: Feb 2002
Ort: Wien
Jürgen bringt sich richtig einJürgen bringt sich richtig ein
Wieder mal doppelt - gelöscht

Geändert von Jürgen (10.06.2002 um 18:03 Uhr).
Jürgen ist offline   Mit Zitat antworten
Alt 10.06.2002, 18:01   #9
TP-Specialist
 
Benutzerbild von Jürgen
 
Registriert seit: Feb 2002
Ort: Wien
Jürgen bringt sich richtig einJürgen bringt sich richtig ein
Also, die immense Größenzunahme, die Schmobi anspricht, kann ich nicht ganz nachvollziehen, ich hab das bei mir grad bei einem Skript ausprobiert, das ich kürzlich programmiert habe, und bin auf folgende Differenzen bei den Dateigrößen gekommen:

aus einer gif-Datei mit 33.028 byte werden 33.112 -> 0,25 %
aus einem jpg-File mit 12.120 byte werden 12.208 -> 0,72 %

@Schmobie: wie kommst du denn auf so große Unterschiede?

Beim Speichern in die DB hat man zumindest den Vorteil, dass man sich um z. B. gleiche Filenamen keine Gedanken machen muss. Außerdem ist finde ich ein Backup leichter machbar, da alle Daten in einer DB beisammen sind.

Bleibt für mich eigentlich nur der angeblich geringe Geschwindigkeitsvorteil, den man hat, wenn die Dateien über das Filesystem geladen werden. Aber bei ein paar kleinen jpg-Files gibt es da denke ich keinen erkennbaren Unterschied.

Ich hatte auch schon mit einem Projekt zu tun, bei dem wir 20 GB in Form von Word-Files in BLOB-Felder gespeichert hatten, auch das ging - allerdings mit einem MS-SQL Server.

Gruß, Jürgen
Jürgen ist offline   Mit Zitat antworten
Alt 10.06.2002, 18:15   #10
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
Bei kleinen GIF- oder JPG-Bildchen geht's sicherlich ohne weitere Probleme, aber wenn es sich um von Natur aus wirklich grosse Dateien handelt, macht sicher der zuwachs stark bemerkbar und die Performance leidet stark darunter.
Der MS SQL-Server behandelt BLOBs übrigens auch anders als MySQL.
__________________
Give up yourself into the moment — The time is now.
Lars ist offline   Mit Zitat antworten
Alt 10.06.2002, 18:24   #11
TP-Specialist
 
Benutzerbild von Jürgen
 
Registriert seit: Feb 2002
Ort: Wien
Jürgen bringt sich richtig einJürgen bringt sich richtig ein
Zitat:
Original geschrieben von schmobi
Bei kleinen GIF- oder JPG-Bildchen geht's sicherlich ohne weitere Probleme, aber wenn es sich um von Natur aus wirklich grosse Dateien handelt, macht sicher der zuwachs stark bemerkbar und die Performance leidet stark darunter.
Der MS SQL-Server behandelt BLOBs übrigens auch anders als MySQL.
Die kleinen Bilder fürs Web bieten sich finde ich schon an, ins BLOB-Feld zu speichern. Große sollte man eh keine auf der Website haben

Ich hatte das mit dem Performance-Verlust auch befürchtet, bin aber draufgekommen, dass mySQL da pfeilschnell ist, man merkt - zumindest bei den kleinen Fotos fürs Web bis 50 kb - absolut nichts, dass die aus der DB kommen.

Außerdem hab ich gern alles in Tabellen

Gruß, Jürgen
Jürgen ist offline   Mit Zitat antworten
Alt 10.06.2002, 18:26   #12
TP-Member
 
Registriert seit: Jan 2002
Ort: Schweiz
iworker macht alles soweit korrekt
ich habs auch jeweils so gelöst, dass ich die variable $userfile_name in der datenbank und die bilder in einem ordner (uploads) abgelegt habe. hat den nachteil, dass man die bilder weniger leicht wieder löschen kann nach einer gewissen zeit.

gruess saimn
iworker ist offline   Mit Zitat antworten
Alt 10.06.2002, 22:15   #13
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
sodale: habs mal versucht:
hier mein mehr oder weniger gutes ergebnis
PHP-Code:
<html>
<head>
<title>Untitled</title>
</head>
<body bgcolor="#CCCCCC">

<form enctype="multipart/form-data" name="Upload" action="<? $php_self ?>" method="post">
<table border="0" cellpadding="0" cellspacing="0" bordercolor="#111111" width="500"> 
<tr> 
 <td bgcolor="#FF9900" colspan="2"><b><font face="Verdana" size="2" color="#FFFFFF">&nbsp;Lange Referenzen eingeben</font></b></td>
</tr> 
<tr>
 <td bgcolor="#FFE3BB" colspan="2"><br></td> 
</tr>
<tr> 
 <td width="150" bgcolor="#FFE3BB"><font face="Verdana" size="2">&nbsp;Titel:</font></td> 
 <td width="100%" bgcolor="#FFE3BB"><input type="text" name="titel" size="20"></td> 
</tr>
<tr>
 <td width="150" bgcolor="#FFE3BB"><font face="Verdana" size="2">&nbsp;Text:</font></td> 
 <td width="100%" bgcolor="#FFE3BB"><textarea cols="25" rows="3" name="text"></textarea></td> 
</tr>
<tr> 
 <td width="150" bgcolor="#FFE3BB"><font face="Verdana" size="2">&nbsp;Dateipfad:</font></td> 
<td width="100%" bgcolor="#FFE3BB"><input type="file" name="file" size="20"></td> 
</tr> 
<tr> 
 <td width="33%" bgcolor="#FFE3BB"><font face="Verdana" size="2"><br><br>&nbsp;</font></td> 
 <td width="67%" bgcolor="#FFE3BB"><font face="Verdana" size="2"><input type="submit" value="Upload file" name="cmdSubmit"></font></td>
<input type="hidden" name="action" value="upload">
</tr> 
</table> 
</form>


<?

include ("../connect.php"); // Verbindung läuft bereits

if ($action == "upload"){
$anfrage "INSERT INTO referenzen2 (titel,text,bild) VALUES ('$titel','$text','$file')";
mysql_query ($anfrage) or die ("Referenzen konnten nicht gespeichert werden");
echo 
"Referenzen wurden gespeichert<br><br>";
//Ende if "upload" #######


$anzeigen "SELECT * FROM referenzen2 ORDER BY timestamp DESC";
$auswerten mysql_query ($anzeigen,$verbindung);

echo 
"<table border=\"1\">";
while (
$daten mysql_fetch_array ($auswerten)){
$daten['titel'] = $titel;
$daten['text'] = $text;
$daten['bild'] = $bild;

echo 
"<tr>
       <td>$bild</td>
       <td>$titel</td>
       <td>$text</td>
      </tr>"
;
// Ende Datenausgabe
echo "</table";

mysql_close ($verbindung);

?>


</body>
</html>
er zeigt mir aber nichts an. Woran liegt das?
mfg holunda
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 10.06.2002, 22:23   #14
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
So wie Du es vorhast, wird das mit den Bildern nicht klappen. Du musst - wie bereits oben erwähnt - erst das Bild einlesen und escapen:

PHP-Code:
$file addslashes(fread(fopen($file,"r"), filesize($file))); 
Schau Dir mal das hier an.
__________________
Give up yourself into the moment — The time is now.
Lars ist offline   Mit Zitat antworten
Alt 10.06.2002, 22:40   #15
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
Unhappy

bin ratlos


habs probiert: erst das bild einlesen und escapen aber es funzt immer noch nicht. Bin ratlos

Nochmal der Vollständigkeit halber:

PHP-Code:
<?

include ("../connect.php"); // Verbindung läuft bereits

if ($action == "upload"){
$file addslashes(fread(fopen($file,"r"), filesize($file)));
$anfrage "INSERT INTO referenzen2 (titel,text,bild) VALUES ('$titel','$text','$file')";
mysql_query ($anfrage) or die ("Referenzen konnten nicht gespeichert werden");
echo 
"Referenzen wurden gespeichert<br><br>";
//Ende if "upload" #######


$anzeigen "SELECT * FROM referenzen2 ORDER BY timestamp DESC";
$auswerten mysql_query ($anzeigen,$verbindung);

echo 
"<table border=\"1\">";
while (
$daten mysql_fetch_array ($auswerten)){
$daten['titel'] = $titel;
$daten['text'] = $text;
$daten['bild'] = $bild;

echo 
"<tr>
       <td>$bild</td>
       <td>$titel</td>
       <td>$text</td>
      </tr>"
;
// Ende Datenausgabe
echo "</table";

mysql_close ($verbindung);

?>


php ist und bleibt für mich ein mysterium
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
[php/mysql] Wie bild speichern [php/mysql] Wie bild speichern
« Disku: Wie schleift Ihr Formwerte weiter... | Online Umfragen Script ? »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:44 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15