Bilder in MySQL speichern und wieder auslesen

cry_baby

Mitglied
Hallo,

ich weiss diese Frage wurde wohl schon sehr oft gestellt, da ich aber heute schon den ganzen Tag nur am Foren-durchlesen bin, um meinen Fehler in den Griff zu kriegen, dachte ich ich öffne nen neuen Post.

Ich habe das Problem, das ich mit meinem Script Fotos hochladen will. Allerdings wird immer nur der Pfad zu den Bildern gespeichert. Auch bei der Ausgabe wird mir dann logischerweise nur der Pfad angezeigt.

Wie muss ich mein Script nun umschreiben, damit nicht der Pfad sondern das Foto selbst gespeichert wird?

Was ich noch dazu sagen will, ich weiss, dass es nicht so gut ist, die Fotos in MySQL zu speichern, allerdings geht es für meine Zwecke nur schwer anders. Zumindest wüsste ich nicht wie ich es anders lösen könnte.

Wenn mir jemand dazu nen Tip geben kann, nehm ich den gerne an, allerdings würde ich gern erstmal wissen, wie ich es mit meinem Script auf die Reihe kriege.

Hier ist der Code für die Tabelle, mit der ich meine Daten in die Datenbank speise:
PHP:
<html>
<head>
<title>Feuerwehr Sonnefeld - Berichte und Bilder</title>
<style type="text/css">
<!--
.Stil1 {
	font-family: Tahoma;
	font-weight: bold;
}
-->
</style>
</head>

<body>
<form action="berichte_2007_speichern.php">
  <table border="0" align="left" cellpadding="5" cellspacing="0" bgcolor="#E5E5E5">

      <tr>
      <td align="right"></td>
	  <td style="font-family:HandelGothic BT; font-size:25px; color:#d33736"><b><i>
	  &nbsp;&nbsp;Berichte und Bilder 2007 <i><b></td>
    </tr>
    <tr>
      <td align="right" style="font-family:HandelGothic BT"; >Nummer</td>
      <td><input name="Array[Nummer]" type="text" size="5" maxlength="3"></td>
    </tr>
    <tr>
      <td align="right" style="font-family:HandelGothic BT"; >Datum</td>
      <td>
		<select name="Array[Tag]">
      		<option selected>01</option>
      		<option>02</option><option>03</option><option>04</option><option>05</option><option>06</option><option>07</option><option>08</option><option>09</option>
	  		<option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option>
	  		<option>18</option><option>19</option><option>20</option><option>21</option><option>22</option><option>23</option><option>24</option><option>25</option>
	  		<option>26</option><option>27</option><option>28</option><option>29</option><option>30</option><option>31</option>
    	</select>
    	<select name="Array[Monat]">
      		<option selected>01</option>
      		<option>02</option><option>03</option><option>04</option><option>05</option><option>06</option><option>07</option><option>08</option><option>09</option>
	  		<option>10</option><option>11</option><option>12</option>
    	</select>
    <span class="Stil1">2007</span>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Tag
    	<select name="Array[Wochentag]">
      		<option selected>Montag</option>
      		<option>Dienstag</option><option>Mittwoch</option><option>Donnerstag</option><option>Freitag</option><option>Samstag</option><option>Sonntag</option>
    </select>
</td>
    </tr>
	    <tr>
      <td align="right" style="font-family:HandelGothic BT"; >Überschrift</td>
      <td><input name="Array[Ueberschrift]" type="text" size="90" maxlength="500"></td>
    </tr>
		    <tr>
      <td> </td>
      <td align="left" style="font-family:HandelGothic BT"; >Details?&nbsp;&nbsp;
    <select name="Array[Details]">
      <option selected>Details</option>
      <option>keine Details</option>
    </select></td>
    </tr>
    <tr>
      <td align="right" style="font-family:HandelGothic BT"; valign="top">Bericht</td>
      <td><textarea name="Array[Bericht]" rows="15" cols="90"></textarea></td>
    </tr>
    <tr>
      <td align="right" style="font-family:HandelGothic BT"; >Bilder</td>
      <td>
	<input name="Array[Bild1]" type="file" size="50" maxlength="100000" accept="text/*"> <br>
	<input name="Array[Bild2]" type="file" size="50" maxlength="100000" accept="text/*"> <br>
	<input name="Array[Bild3]" type="file" size="50" maxlength="100000" accept="text/*"> <br>
	<input name="Array[Bild4]" type="file" size="50" maxlength="100000" accept="text/*"> <br>
      </td>
    </tr>
    <tr>
      <td align="right"></td>
      <td>
        <input type="submit" value=" Speichern ">
        <input type="reset" value=" Zurücksetzen ">
      </td>
    </tr>
	
</table>
</form>

</body>
</html>

Das Ganze wird dann mit diesem Code an die Datenbank geschickt:

PHP:
<html>
<head>
<title>Daten verarbeiten</title>
</head>
<body>

<?php

$host = "localhost";
$user = "xxx";
$password = "xxx";
$dbname = "xxx";
$tabelle ="xxx";

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "INSERT into $tabelle values ('0', '$Array[Nummer]', '$Array[Tag]', '$Array[Monat]', '$Array[Wochentag]', '$Array[Ueberschrift]', '$Array[Details]', '$Array[Bericht]', '$Array[Bild1]', '$Array[Bild2]', '$Array[Bild3]', '$Array[Bild4]')";

if (mysql_db_query ($dbname, $dbanfrage, $dbverbindung)) {
print ("Datenbankeintrag erfolgreich.");
} else {
print ("Es traten Probleme auf.");
}
mysql_close ($dbverbindung);

?>

</body>
</html>

Ausgelesen wird es dann mit diesem Code:

PHP:
<html>
<head>
<title>Inhalte ausgeben</title>
</head>
<body>

<?php

$host = "localhost";
$user = "xxx";
$password = "xxx";
$dbname = "xxx";
$tabelle ="xxx";

$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "SELECT * from $tabelle";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);

 while ($ausgabe = mysql_fetch_array ($result))
 {

 print ("<strong>Nummer:</strong> $ausgabe[Nummer]<br><strong>Datum:</strong>&nbsp;&nbsp;$ausgabe[Wochentag], $ausgabe[Tag].$ausgabe[Monat].2007<br> <strong>Überschrift:</strong>$ausgabe[Ueberschrift]<br> <strong>Details:</strong> $ausgabe[Details] <br><strong>Bericht:</strong><br>$ausgabe[Bericht]<br><strong>Bilder:</strong><br>$ausgabe[Bild1] $ausgabe[Bild2] $ausgabe[Bild3] $ausgabe[Bild4]<br><hr><br>");
 }

mysql_close ($dbverbindung)
 
Zuletzt bearbeitet:
So blöd es jetzt vielleicht klingt, aber die Seiten hatte ich heut auch schon durch.. Per Google gefunden, bzw. durch dieses Forum hier.

Aber ich krieg es nicht in meinem eigenen Script hin.
 
Naja es ist auch nicht ganz so leicht, dass man es in ein bestehendes Skript einfach integriert. Aber um es mal schrittweise zu erläutern:
  1. Das Bild wird in ein temporäres Verzeichnis hochgeladen
  2. Dann wird der Binärcode des Bildes ausgelesen (z. B. mit file_get_contents() )
  3. Dieser Binärcode wird in die Datenbank geschrieben
  4. Ein Skript (z.B. bild.php) liest diesen Binärcode wieder aus und gibt ihn aus
  5. eine andere Datei bindet dieses Bild dann ganz normla mit <img src="bild.php" ..> wieder ein

Viele Grüße
 
  1. Das Bild wird in ein temporäres Verzeichnis hochgeladen
  2. Dann wird der Binärcode des Bildes ausgelesen (z. B. mit file_get_contents() )
  3. Dieser Binärcode wird in die Datenbank geschrieben
  4. Ein Skript (z.B. bild.php) liest diesen Binärcode wieder aus und gibt ihn aus
  5. eine andere Datei bindet dieses Bild dann ganz normla mit <img src="bild.php" ..> wieder ein

Dh. bei mir ist das Script richtig, ich muss nur punkt nummer 2 irgendwie realisieren, dass nicht der Pfad sondern der Binärcode des Bildes gespeichert wird. Wo und wie füge ich das in mein Script ein?

Und dann muss ich Punkt Nummer 5 noch hinkriegen. Aber ich glaub das hab ich verstanden.
 
Hallo,

ich habe im Prinzip das gleiche Problem.
Ich habe mir den Artikel http://www.phpbuilder.com/columns/florian19991014.php3 durchgelesen und danach selber ausprobiert.

Natürlich habe ich die Daten meiner lokalen Datenbank eingegeben kriege aber eine leere Seite wenn ich das Bild anzeigen lassen will.

Code:
<?php

// getdata.php3 - by Florian Dittmer <dittmer@gmx.net>
// Example php script to demonstrate the direct passing of binary data
// to the user. More infos at http://www.phpbuilder.com
// Syntax: getdata.php3?id=<id>

if($id) {

    // Daten wurden für die lokale Datenbank angepasst
    $con = mysql_connect("localhost","root","password");

    mysql_select_db("binary_data");

    //Hier wurde der Tabellenname angepasst
    $query = "select bin_data,filetype from binary_data where id=$id";
    $result = mysql_query($query);

    $data = mysql_result($result,0,"bin_data");
    $type = mysql_result($result,0,"filetype");

    Header( "Content-type: $type");
    echo $data;

};
?>

Dann habe ich das Bild in einer anderen html Datei mit <img src="datei.php3?id=1"> eingebaut.

Leider ist das Bild dann aber nicht sichtbar.

gruß soulerino
 
oh ja natürlich ... och man, so eine Kleinigkeit hat mich jetzt einiges an Zeit gekostet.

Danke für die rasche Hilfe!

Gruß soulerino
 
Zurück