Just nu i M3-nätverket
Gå till innehåll

Hjälp med bilddatabas


gerry

Rekommendera Poster

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]

Länk till kommentar
Dela på andra webbplatser

Ä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]

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

Yes, så är det. Men nu finns bilderna där och är förlorade i original. Alltså, vet någon hur jag får ut dom igen??

 

Länk till kommentar
Dela på andra webbplatser

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?

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...