Just nu i M3-nätverket
Jump to content

Hjälp med bilddatabas


gerry

Recommended Posts

Jag hade en gång en bilddatabas i PHP med bilder som binärkod i MySQL. Den fungerade ypperligt tills, förmodligen, providern bytte version på PHP. Bilderna är viktgiga för en förening så jag undrar om någon vill hjälpa till att ändra på scripten så att dom kan hämta binärkoden ur databawsen igen och visa bilderna. Här är koden:

 

Först scriptet med ett formulär som fylls i med ett bildnummer:

 

<html>

<head>

<title>Bild-databasen</title>

</head>

 

<body>

 

<body bgcolor="beige"><h1>Bilder i vår databas</h1><b>

<font size="+2">Visa en bild,</font> <font size="2"></a>(ange bildens id-nummer):</font>

 

<FORM enctype="multipart/form-data"

method="get" action="show_images3.php">

<INPUT type="text" name="img_id" size="6">

<INPUT type="submit" name="submit"

value="Visa bilden!">

 

</FORM><p>

<a href='bild.html'>Tillbaka</a>

<p><?

 

mysql_connect(localhost, username, password);

$query = "SELECT img_id, filename FROM images2 order by img_id";

$result = mysql_db_query("databas", $query); if ($result) {

echo "Dessa bilder finns just nu i databasen, här sorterade efter id-nummer:<p>";

while ($r = mysql_fetch_array($result)) { $img_id = $r["img_id"];

$filename = $r["filename"];

 

echo "<table width=400 border=0><tr><td width=30 align=right>$img_id</td><td width=1></td>";

 

 

echo "<td width=370><font color=red size=3><b>$filename</b></font></td></tr></table>";

 

}

} else { echo "No data."; }

mysql_free_result($result);?> <p>

 

<p>

</body>

</html>

 

 

Sedan actionscriptet:

 

 

<?

$db = @mysql_connect(localhost, username, lösenord) or die("Can't connect to server.");

@mysql_select_db("databas", $db) or die("Can't select database.");

 

$get_image = "select binary_junk from images2 where img_id = $img_id";

$get_image_result = @mysql_query($get_image) or die("Couldn't get image.");

 

$binary_junk = @mysql_result($get_image_result,0,"binary_junk");

$filetype = @mysql_result($get_image_result,0,"filetype");

 

header("Content-type: $filetype");

echo "$binary_junk";

?>

 

 

[inlägget ändrat 2006-11-24 17:02:09 av gerry]

Link to comment
Share on other sites

Är rätt ny på php och mysql så ja kan inte säga nu direkt vart felet med din kod är men jag har en sida som har samma funktion förutom att man kan ladda upp allt.

Här är koden för att visa bilderna/filerna som finns i databasen i en tabell.

 

//Show files in database

echo "Files in database";

db_connect("testdb");

$sql = "SELECT fid, filnamn, filstorlek, besk FROM upload WHERE owner='$loggedon'";

$result = mysql_query($sql);

echo "<table border=0>\n";

echo "<tr bgcolor=\"#B4B4B4\"><td>Mark</td><td>Filename</td><td>Size</td><td>Description</td></tr>\n";

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

echo "<tr bgcolor=\"#EEEEEE\">\n";

echo '<td><input name="fileid[]" type="checkbox" value="';

echo "$rad[0]";

echo '"</td>';

echo "<td><a href=\"download.php?fid=$rad[0]\" target=\"_blank\">$rad[1]</a></td>";

echo "<td>";

echo kilobyte($rad[2]);

echo "</td><td>$rad[3]</td><td>$rad[4]</td>\n";

echo "</tr>\n";

}

echo "</table>\n";

//Diskusage

db_connect("testdb");

$sql="SELECT filstorlek FROM upload WHERE owner='$loggedon'";

$result=mysql_query($sql);

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

$totalsize = $totalsize + $size[0];

}

$totalsize = round($totalsize/1024,2);

echo "<br>";

if($totalsize>"1024"){

$totalsize = round($totalsize/1024,2);

echo "Using $totalsize MB";

}else{

echo "Using $totalsize kB";

}

echo "<br>";

echo '<input name="delete" type="submit" class="addr" value="Delete">';

mysql_close();

 

Och här är koden för att ladda hem bilden/filen.

 

//Download

function download($fid){

db_connect("testdb");

$owner='"'.$_SESSION['user'].'"';

$result = mysql_query("SELECT fildata, filtyp FROM upload WHERE fid=$fid AND owner=$owner");

$fildata = mysql_result($result, 0, "fildata");

$filtyp = mysql_result($result, 0, "filtyp");

Header("Content-Type: $filtyp");

echo $fildata;

mysql_close($sqlconnect);

 

Har gjort som så att en användare kan ladda upp bilder/filer som sedan blir hans egna som bara han kan komma åt, sedan ett admin-konto som kommer åt allas bilder/filer osv.

 

function download($fid)

anropas efter att ett script kollar om man är inloggad och vilken typ av användare man är.

 

[inlägget ändrat 2006-11-24 17:30:35 av nire]

Link to comment
Share on other sites

Det är nästan aldrig en bra idé att lagra binär data i en relationsdatabas. Det är bättre att spara filerna som just filer i filsystemet och bara lagra filnamnen i databasen.

 

Link to comment
Share on other sites

Men om du gör ett phpscript med den här koden?

 

$result = mysql_query("SELECT fildata, filtyp FROM databas WHERE filnamn="[namn]");

$fildata = mysql_result($result, 0, "fildata");

$filtyp = mysql_result($result, 0, "filtyp");

Header("Content-Type: $filtyp");

echo $fildata;

 

Då borde du väl få ut bilderna?

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...