Bild aus der Datenbank holen?

Fruitgum

Erfahrenes Mitglied
Hallo Leutz...

... ich habe mir ein kleines Forum mit einer mySQL-Datenbank gebaut und alles funktioniert auch so wie ich es mir vorstelle. Jetzt möchte ich beim eintragen eines Thema ein Bild hinzufügen. Wenn der Eintrag erstellt wird, möchte ich gern von meinen Computer eine Bildatei anwählen und es wird beim eintragen des Eintrages in die Datenbank in ein Verzeichniss meiner wahl hochgeladen. Doch wie sieht sowas aus? Es muss ja in der Datenbank ein Verweis geben, welches Bild zu welchem Eintrag?

Wie kann sowas aussehen?

Viele Grüße...
 
Du könntest es mit folgendem probieren:
PHP:
Header("Content-Type: image/jpeg");
$result = mysql_query("SELECT `src` FROM `photos`;");

while ($photo_row = mysql_fetch_row($result))
{
    list($picture) = $photo_row;
    print($picture);
}
wobei es schwierig bzw. nicht möglich sein wird, mehrere Bilder auf die Art&Weise anzuzeigen.

EDIT: das setzt vorraus, dass du das Bild in der Datenbank speicherst.
Eine andere Möglichkeit wäre, eine Art Bild-Indextabelle in der DB anzulegen, mit ID und Dateipfad. In der Antworttabelle könntest du ein Feld einfügen, in dem die Bild-IDs Kommagetrennt reingeschrieben werden, diese dann beim auslesen mit der Funktion-explode() auslesen...
 
Zuletzt bearbeitet:
Also hier mein Formular:

PHP:
<?
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form id="form1" name="form1" method="post" action="add_eintrag_code.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3" bgcolor="#E6E6E6"><strong>Konzert erstellen</strong> </td>
</tr>
<tr>
<td width="14%"><strong>Titel:</strong></td>
<td width="2%">:</td>
<td width="84%"><input name="titel" type="text" id="titel" size="50" /></td>
</tr>
<tr>
<td valign="top"><strong>Text:</strong></td>
<td valign="top">:</td>
<td><textarea name="eintrag" cols="50" rows="3" id="eintrag" ></textarea></td>
</tr>
<tr>
<td><strong>Bild:</strong></td>
<td>:</td>
<td><input name="bild" type="text" id="bild" size="50"  /></td>
</tr>
<tr>
<td><strong>Wann:</strong></td>
<td>:</td>
<td><input name="email" type="text" id="email" size="50" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Submit2" value="Reset" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
?>



Und hier mein PHP zum eintragen:

PHP:
<?php
include 'config.php'; 
$tbl_name="konzerte";
mysql_connect("$host", "$username", "$password")or die("Keine Verbindung möglich!"); 
mysql_select_db("$db_name")or die("Kann Tabelle nicht finden!");
$titel=$_POST['titel'];
$eintrag=$_POST['eintrag'];
$name=$_POST['bild'];
$email=$_POST['email'];
$datetime=date("d.m.y h:i:s"); 
$sql="INSERT INTO $tbl_name(titel, eintrag, name, email, datetime)VALUES('$titel', '$eintrag', '$name', '$email', '$datetime')";
$result=mysql_query($sql);
if($result){
echo "Konzert hinzugefügt<BR>";
echo "<a href=konzerte_adminausgabe.php>Zum Eintrag gehen.</a>";
}
else {
echo "Ups, hier gibt es wohl einen Fehler beim eintragen?!";
}
mysql_close();
?>


es soll auch immer nur ein Bild angezeigt werden. Quasi zu jedem Eintrag ein Bild.


:)

Nachtrag: Das bild soll in einen Verzeichnis gespeichert werden und nur der verweis zum bild in die Datenbank.
 
Zuletzt bearbeitet:
Hi,

Du brauchst dafür in Deinem Formular ein input-Feld vom Typ "file". Dein Formular braucht zusätzlich das Attribut enctype="multipart/form-data".
Wie Du den Upload PHP-seitig behandeln kannst, findest Du hier.

LG
 
Datenbankeintrag, aber wie?

Hallo,

PHP:
<?php
include 'config.php'; 
$tbl_name="konzerte";
mysql_connect("$host", "$username", "$password")or die("Keine Verbindung möglich!"); 
mysql_select_db("$db_name")or die("Kann Tabelle nicht finden!");
$titel=$_POST['titel'];
$eintrag=$_POST['eintrag'];
$name=$_POST['name'];
$email=$_POST['email'];
$datetime=date("d.m.y h:i:s"); 
$sql="INSERT INTO $tbl_name(titel, eintrag, name, email, datetime)VALUES('$titel', '$eintrag', '$name', '$email', '$datetime')";
$result=mysql_query($sql);
if($result){
echo "Konzert hinzugefügt<BR>";
echo "<a href=konzerte_adminausgabe.php>Zum Eintrag gehen.</a>";
}
else {
echo "Ups, hier gibt es wohl einen Fehler beim eintragen?!";
}
mysql_close();
$dir = '../image'; 
if (isset($_FILES['datei']) and ! $_FILES['datei']['error'])
{
 
    $filename = $_FILES['datei']['name'];
    move_uploaded_file($_FILES['datei']['tmp_name'], $dir."/".$filename);
 
    echo "<BR><b>Status:</b> Upload komplett";
 
} else {
 
    echo "<BR><b>Status:</b> Fehler beim Upload";
 
}
?>

Das script funktioniert und die Bild-Datei wird im Verzeichnis angelegt. Wie wir sehen werden noch andere Informationen mitgegeben.

Formular:

PHP:
<?
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form id="form1" name="form1" method="post" action="add_eintrag_code.php" enctype="multipart/form-data">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3" bgcolor="#E6E6E6"><strong>Konzert erstellen</strong> </td>
</tr>
<tr>
<td width="14%"><strong>Titel:</strong></td>
<td width="2%">:</td>
<td width="84%"><input name="titel" type="text" id="titel" size="50" /></td>
</tr>
<tr>
<td valign="top"><strong>Text:</strong></td>
<td valign="top">:</td>
<td><textarea name="eintrag" cols="50" rows="3" id="eintrag" ></textarea></td>
</tr>
<tr>
<td><strong>Bild:</strong></td>
<td>:</td>
<td><input type="file" name="datei" />
</td>
</tr>
<tr>
<td><strong>Wann:</strong></td>
<td>:</td>
<td><input name="email" type="text" id="email" size="50" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Submit" /> <input type="reset" name="Submit2" value="Reset" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
?>

Gut, die Datenbank hat jetzt die Informationen von allen Texteingaben bekommen und gespeichert. Das Bild wurde nur in das Bildverzeichnis gespeichert. Ich möchte nun das so haben, das zu der Texteingabe auch das Bild was hochgeladen wurde mit aufgerufen wird.

Grüße
 
Hi,

gerne, wenn ich Dein Problem dabei verstehen würde...
Das Feld legst Du genauso an, wie Du die anderen auch angelegt hast.
Den Pfad trägst Du genauso ein, wie Du auch die anderen Werte einträgst.

Wo hakts denn?

LG
 
da ich in PHP eher eine Null bin werde ich dir das mal versuchen zu erklären :)

also die Daten der Datei werden ja durch $_FILES mit gegeben, trozdem weiß ich nicht wie ich das verarbeiten soll.

und was für Werte muss die Spalte der Daenbank haben? Text?
z.B.:
`bild` int(4) NOT NULL default '0',
`bild` CHAR(50),
`bild` LONGBLOB,

und wie rage ich das dann ein?
$bild = $_files
$bild=$_POST['bild'];

fragen über fragen...
 
Zurück