Hej! Som download.php är gjord så *kan* den bara visa bilden. Texten kommer med, men den blir till skräpdata i slutet av bildinformationen. Download.php skickar inte ut html-kod, p.g.a. din header som du säger. (Men utan headern så skulle inte surfprogrammet förstå att det är bilddata som kommer heller, utan bara visa skräptecken på skärmen. Pröva att kommentera bort headerrraden och surfa till download.php om du vill) Hej Torbjörn! Bildfilerna ligger väl i databasen i binär form. Glöm inte skicka med fid! Tack alla som har hjälpt mig...Problem att visa text efter bild
Jag sitter och kör ett exempel i boken PHP 5 programmering.
Det handlar om att ladda upp bilder till MySQL.
Jag har ändrat lite så att även text till bilden sparas i databasen.
Mitt problem är när jag ska visa både bilden och texten.
Endast bilden syns. Jag gissar att det har med headern i download.php att göra.
Hur ska jag göra så att båda syns. Jag har inte riktig kläm på det här med header().
upload.php
<html>
<head>
<title>Uppladdning av fil mot MySQL</title>
</head>
<body>
<?php
if (isset($_FILES['fildata'])) {
if (is_uploaded_file($_FILES['fildata']['tmp_name'])) {
if (empty($_POST['besk']))
$besk = "Ingen beskrivning";
else
$besk = $_POST['besk'];
$dbh = mysql_connect("localhost", "root", "")
or die("Kunde inte ansluta mot databasen!");
mysql_select_db("testdb");
$filnamn = $_FILES['fildata']['name'];
$filtyp = $_FILES['fildata']['type'];
$filstorlek = $_FILES['fildata']['size'];
$fildata = addslashes(fread(fopen($_FILES['fildata']['tmp_name'], "rb"), filesize($_FILES['fildata']['tmp_name'])));
$text = $_POST['text'];
$sql = "INSERT INTO upload (filnamn, filtyp, filstorlek, fildata, besk, text)";
$sql .= " VALUES ('$filnamn','$filtyp','$filstorlek','$fildata','$besk','$text')";
mysql_query($sql);
$fil_id = mysql_insert_id();
echo "<h3>Filen fick ID $fil_id</h3><br>";
mysql_close();
}
}
echo "<h2>Filer i databasen</h2>\n";
$dbh = @mysql_connect("localhost","root","")
or die("Kunde inte ansluta mot databasen!");
mysql_select_db("testdb");
$sql = "SELECT fid, filnamn, filtyp, filstorlek, besk FROM upload";
$result = mysql_query($sql);
echo "<table border=0>\n";
echo "<tr bgcolor=\"#AAAAAA\"><td>Filnamn</td><td>Filtyp</td><td>Filstorlek</td><td>Beskrivning</td></tr>\n";
while ($rad=mysql_fetch_array($result)) {
echo "<tr bgcolor=\"#EEEEEE\">\n";
echo "<td>$rad[1]</td>";
echo "<td>$rad[2]</td><td>$rad[3]</td><td>$rad[4]</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
mysql_close();
?>
<h2>Uppladdning av fil mot MySQL databas</h2>
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data">
Fil att ladda upp:<br>
<input type="file" name="fildata" size="40"><br>
Beskrivning av filen:<br>
<input type="text" name="besk" size="40"><br>
<textarea name="text" rows="20" cols="50"></textarea>
<input name="reset" type="reset" value="Återställ">
<input type="submit" value="Skicka fil">
</form>
</body>
</html>
download.php
<?php
if (isset($_GET['fid'])) {
$dbh=mysql_connect("localhost","root","")
or die("Kunde inte ansluta mot databasen");
mysql_select_db("testdb");
$fid=$_GET['fid'];
$result = mysql_query("SELECT fildata, filtyp, text FROM upload WHERE fid=$fid");
$fildata = mysql_result($result, 0, "fildata");
$filtyp = mysql_result($result, 0, "filtyp");
$text = mysql_result($result, 0, "text");
Header("Content-Type: $filtyp");
echo $fildata;
echo $text;
}
?>
Sv: Problem att visa text efter bild
Ett kodexempel på hur det skulle kunna vara:
<img src="download.php" alt="" />Bildtexten kan komma här
Sv:Problem att visa text efter bild
Jag är inte helt säker på vad du menar att jag ska göra.
Jag har gjort en ny sida med
<img src="download.php" alt="" />
men den visar ingen bild. Det är förmodligen jag som inte fattar.
/Lars
Sv:Problem att visa text efter bild
Det är kanske ett klumpigt och invecklat sätt att hantera bilder.
Man skulle kanske spara dem i mappar i stället och endast ha beskrivning osv. i databasen.Sv: Problem att visa text efter bild
<img src="download.php?fid=12" alt="" />
Sv:Problem att visa text efter bild
Så här gjorde jag:
upload.php
<html>
<head>
<title>Uppladdning av fil mot MySQL</title>
</head>
<body>
<?php
if (isset($_FILES['fildata'])) {
if (is_uploaded_file($_FILES['fildata']['tmp_name'])) {
if (empty($_POST['besk']))
$besk = "Ingen beskrivning";
else
$besk = $_POST['besk'];
$dbh = mysql_connect("localhost", "root", "")
or die("Kunde inte ansluta mot databasen!");
mysql_select_db("testdb");
$filnamn = $_FILES['fildata']['name'];
$filtyp = $_FILES['fildata']['type'];
$filstorlek = $_FILES['fildata']['size'];
$fildata = addslashes(fread(fopen($_FILES['fildata']['tmp_name'], "rb"), filesize($_FILES['fildata']['tmp_name'])));
$text = $_POST['text'];
$sql = "INSERT INTO upload (filnamn, filtyp, filstorlek, fildata, besk, text)";
$sql .= " VALUES ('$filnamn','$filtyp','$filstorlek','$fildata','$besk','$text')";
mysql_query($sql);
$fil_id = mysql_insert_id();
echo "<h3>Filen fick ID $fil_id</h3><br>";
mysql_close();
}
}
echo "<h2>Filer i databasen</h2>\n";
$dbh = @mysql_connect("localhost","root","")
or die("Kunde inte ansluta mot databasen!");
mysql_select_db("testdb");
$sql = "SELECT fid, filnamn, filtyp, filstorlek, besk FROM upload";
$result = mysql_query($sql);
echo "<table border=0>\n";
echo "<tr bgcolor=\"#AAAAAA\"><td>Filnamn</td><td>Filtyp</td><td>Filstorlek</td><td>Beskrivning</td></tr>\n";
while ($rad=mysql_fetch_array($result)) {
echo "<tr bgcolor=\"#EEEEEE\">\n";
echo "<td>$rad[1]</td>";
echo "<td>$rad[2]</td><td>$rad[3]</td><td>$rad[4]</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
mysql_close();
?>
<h2>Uppladdning av fil mot MySQL databas</h2>
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data">
Fil att ladda upp:<br>
<input type="file" name="fildata" size="40"><br>
Beskrivning av filen:<br>
<input type="text" name="besk" size="40"><br>
<textarea name="text" rows="20" cols="50"></textarea>
<input name="reset" type="reset" value="Återställ">
<input type="submit" value="Skicka fil">
</form>
</body>
</html>
download.php
<?php
if (isset($_GET['fid'])) {
$dbh=mysql_connect("localhost","root","")
or die("Kunde inte ansluta mot databasen");
mysql_select_db("testdb");
$fid=$_GET['fid'];
$result = mysql_query("SELECT fildata, filtyp FROM upload WHERE fid=$fid");
$fildata = mysql_result($result, 0, "fildata");
$filtyp = mysql_result($result, 0, "filtyp");
Header("Content-Type: $filtyp");
echo $fildata;
}
?>
test.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
$dbh=mysql_connect("localhost","root","")
or die("Kunde inte ansluta mot databasen");
mysql_select_db("testdb");
$fid=$_GET['fid'];
$result = mysql_query("SELECT text FROM upload WHERE fid=$fid");
$text = mysql_result($result, 0, "text");
echo "<img src=\"download.php?fid=$fid\" alt=\"\" />";
echo "<br />$text";
?>
</body>
</html>