Bilder mit mysql und PHP

crashx

Erfahrenes Mitglied
da ich mich langsam in das thema php und mysql einarbeite und noch sehr unerfahren bin brauche ich eure hilfe.
es geht um folgendes:
mit einem formular erfasse ich alle notwendigen daten die ich für meine occasions fahrzeuge brauche,
über action=upload.php trage ich diese daten in meine datenbank in die entsprechende tabelle ein.
über echo <?PHP echo $row->marke; ?> gebe ich die gewünschten zelle meiner tabelle aus,
bis dahin ging alles gut und einige testprojekte verliefen sehr erfolgreich.
nun aber möchte ich zu den daten auch bilder meiner fahrzeuege erfassen und sie auch ausgeben.
aber für mein momentanes wissen stehe ich da an einem punkt an an dem ich nicht weiter komme.


für eure hilfe bin ich schon jetzt dankbar.
 
Wenn Du die Bilder direkt ausgeben willst musst Du mittels header() den richtigen Content-Type uebergeben.
Weiterhin darf ausser den Bilddaten nichts ausgegeben werden.
Ansonsten kannst Du natuerlich auch die <img>-Tags nutzen.
Ungefaehr so:
PHP:
echo '<img src="'.$dateiname.'>';

Und halte Dich bitte an Gross- und Kleinschreibung.
 
du brauchst als erstes ein formular mit type="file"

dann kannst du über dieverse Funktionen deine datei prüfen.

Code:
 $tempname = $_FILES[$index][tmp_name]; // kryptischer Zwischenspeichername
 		 $name = $_FILES[$index][name]; // name der datei auf dem clientrechner
 		 $typ = $_FILES[$index][type]; // typ der Datei
 		 $groesse = $_FILES[$index][size];  // Groesse der Datei

und zum schluss mit der funktion move_uploaded_file()
das pic an die gewünschte stelle kopieren.
 
also mal ganz konkret, wie ich das bräuchte:

die eingabe maske:

user_interface.html

HTML:
<html>
<head>
<title>user_interface</title>
</head>
<body>

<form method="POST" enctype="multipart/form-data" action="upload.php">
<table border="0" width="45%" id="table1" cellspacing="0" cellpadding="2">
<tr>
<td colspan="2"><input type="file" name="pic1" size="20"></td>
</tr>
<tr>
<td width="40%"><input type="text" name="marke" size="20"></td>
<td width="60%">marke</td>
</tr>
<tr>
<td width="40%"><input type="text" name="preis" size="20"></td>
<td width="60%">preis</td>
</tr>
<tr>
<td width="40%"><input type="text" name="beso" size="20"></td>
<td width="60%">besonderes</td>
</tr>
<tr>
<td width="40%"><textarea rows="5" name="weiteres" cols="16"></textarea></td>
<td width="60%">weiteres</td>
</tr>
</table>
<p><input type="submit" value="Absenden" name="B1"><input type="reset" value="Zurücksetzen" name="B2"></p>
</form>

</body>
</html>

nun für den eintrag in die datenbank:

upload.php

PHP:
<?PHP
include("dbconnect.php");

$eintrag = "INSERT INTO auto (pic1, marke, preis, beso, weiteres) VALUES ('$pic1', '$marke',
'$preis', '$beso', '$weiteres')";

$eintragen = mysql_query($eintrag);
 
$sql = 'OPTIMIZE TABLE `auto`';
echo mysql_error();
?>

danach die anzeige.

show.php

HTML:
<?PHP
include("dbconnect.php");
?>

<html>
<head>
<title>show</title>
</head>

<body>

<table border="1" width="100%" id="table1">
<?PHP $abfrage = "SELECT pic1, marke, preis, beso, weiteres FROM auto";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
    {
?>
<tr>
<td><b>Hier sollte das bild rein:</b><?PHP echo $row->pic1; ?></td>
<td><b>Marke - Typ:</b> <?PHP echo $row->marke; ?></td>
<td><b>Preis:</b> <?PHP echo $row->preis; ?></td>
<td><b>besonderheiten:</b> <?PHP echo $row->beso; ?></td>
<td><b>diveres angaben:</b> <?PHP echo $row->weiteres; ?></td>
<?PHP
}
?>
</tr>
</table>

</body>
</html>

aber meine ausgabe sieht dan so aus das mir alles korekt ausgegeben wird bis auf das bild.
wo das bild sein sollte erscheint: /srv/www/htdocs/web36/phptmp/phpGLZxWT
was ist da falsch? wäre sehr froh wen mir jemand helfen könnte
 
Zuletzt bearbeitet:
Dass das Bild nicht angezeigt wird liegt daran, dass Du nur den Dateinamen, zudem noch nur den TempNamen, ausgibst.
Der TempName ist der Dateiname unter dem das Bild beim Upload erstmal abgelegt wird. Es muss dann, wie macropode schon erwaehnte, mittels move_uploaded_file() an die richtige Stelle verschoben werden.
Ich empfehle Dir einen Blick in dieses Tutorial, da kannst Du lernen wie das mit den Uploads richtig ablaeuft.
 
wie reptiler schon sagt:
/srv/www/htdocs/web36/phptmp/phpGLZxWT ist das temp verzeichnis indem das pic beim senden zwischengespeichert wird.

du solltest mit move_uploaded_file() das bild in ein verzeichnis images oder so verschieben. dannach kannst du den namen des pics in der db speicher und von daher wieder aufrufen.

Das ist meiner meinung nach die beste lösung.

Um zu verhindern das bilder mit dem gleichen namen geladen werden solltest du vieleicht die db_id zum namen hinzufügen.
 
crashx hat gesagt.:
Vielen Dank für eure schnelle Hilfe.
Hallo zusammen. wie kann ich ein ole objekt aus einer access DB über php script ausgeben lassen? Ist das überhaupt möglich?
Wenn nicht gibts ne möglichkeit bilddateien von der Festplatte mit einer ID aus einer Access tabelle zu verknüpfen bzw. zu referenzieren?
 
Zurück